로컬 변수 및 함수 인수의 이름을 바꿀 수있는 elisp 리팩토링 도구가 있습니까? 나는 돌릴 수 있기를 원합니다.
(defun my-func (s r)
...
(use s .. r))
으로:
(defun my-func (string replacement)
...
(use string .. replacement))
변수 참조를 찾는 방법을 알고있는 방법을 사용합니다. 그것이 초소형이 아니라면 괜찮습니다.
로컬 변수 및 함수 인수의 이름을 바꿀 수있는 elisp 리팩토링 도구가 있습니까? 나는 돌릴 수 있기를 원합니다.
(defun my-func (s r)
...
(use s .. r))
으로:
(defun my-func (string replacement)
...
(use string .. replacement))
변수 참조를 찾는 방법을 알고있는 방법을 사용합니다. 그것이 초소형이 아니라면 괜찮습니다.
답변:
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 페이지에는 설명되어 있지 않지만 erefactor
MELPA ( M-x package-install RET erefactor
) 에서 사용할 수 있습니다 . MELPA 페이지는 여기 에서 찾을 수 있습니다 .