로컬 변수 리팩토링 이름 바꾸기


10

로컬 변수 및 함수 인수의 이름을 바꿀 수있는 elisp 리팩토링 도구가 있습니까? 나는 돌릴 수 있기를 원합니다.

(defun my-func (s r)
  ...
  (use s .. r))

으로:

(defun my-func (string replacement)
  ...
  (use string .. replacement))

변수 참조를 찾는 방법을 알고있는 방법을 사용합니다. 그것이 초소형이 아니라면 괜찮습니다.


4
여러 커서가 현재 디펀에서 심볼의 모든 인스턴스를 편집 할 수 있습니다.
Malabarba

iedit도 참조하십시오.
InHarmsWay


4
모든 코드가 우리 코드는 아닙니다. 일부 코드는 오래되었습니다.
Gracjan Polak

2
나는 보통 \ bSYM \ b 지역에서 정규 표현식을 교체한다.
BRPocock

답변:


2

TL; DR : erefactor-rename-symbol-in-buffer

어휘 지능적인 이름 바꾸기 기능을 찾고 있습니다. 단순한 찾기 및 바꾸기가 아니라 범위에 따라 변수의 이름을 바꿉니다. 이와 같은 패키지는 많은 언어에 존재하지만 작성 시점 (2019 년 4 월)에는 실제로 Emacs Lisp에 대한 옵션이 많지 않습니다. erefactor패키지는 내가 알고있는 유일한 사람입니다.

erefactor-rename-symbol-in-buffer원하는 기능입니다. 현재 범위의 기호 (docstring 포함)를 대체하는 지능적인 찾기 및 바꾸기 명령입니다. 이 명령의 한계는 현재 버퍼 외부에서 검색하지 않는다는 것입니다. 똑똑하지만 완벽하지는 않습니다. 최종 결과가 위생적인지 확인하기 위해 각 발생을 확인하도록 요청합니다.

다른 이름 바꾸기 기능은 erefactor-rename-symbol-in-package입니다. 이것은 같은 방식으로 작동하지 않으며 전역 기호에서만 작동합니다. 그룹화 시스템 및 접두사를 사용하여 패키지가 올바르게 설정되어 있으며 패키지 접두사와 일치하는 변수가 필요합니다. 매우 강력하지는 않습니다.이 함수가 기대하는 방식으로 설정하지 않으면 실패합니다. 전역 기호의 이름을 바꾸는 경우 Elisp의 전역 기호에는 네임 스페이스가 없으므로 순진한 찾기 및 바꾸기를 사용할 수도 있습니다. 어휘 이해의 이점은 최소입니다. 이 명령은 트레이드 오프에 너무 취약합니다. 그냥 사용하는 것이 좋습니다 projectile-replace.

Erefactor에는 유용한 다른 Elisp 명령이 많이 있습니다. readme 에서 (불완전한) 목록을 사용할 수 있습니다 .

GitHub 페이지에는 설명되어 있지 않지만 erefactorMELPA ( M-x package-install RET erefactor) 에서 사용할 수 있습니다 . MELPA 페이지는 여기 에서 찾을 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.