2010-12-05 5 views
16

일부 메이저 모드에서는 버퍼가 있고 다른 버퍼에서는 모드 파일 자체 (* .el)가 있습니다. * .el 파일을 편집 한 후 이맥스를 다시 시작하지 않고 첫 번째 버퍼에 반영된 변경 사항을보고 싶습니다. -mode 함수를 실행하려고했지만 버퍼를 변경하지 않았습니다. 감사합니다emacs 메이저 모드를 다시로드하는 방법은 무엇입니까?

답변

0

모드의 소스를 편집 할 때, 내부적으로 Emacs가 이전 코드를 계속 사용하므로 파일 만 저장하면 충분하지 않습니다.

예를 들어, M-C-e로 작업하는 함수 정의의 끝으로 건너 뛰고 C-x C-e로 함수를 평가할 수 있습니다. 그 시점부터 Emacs는 현재의 정의를 사용할 것입니다.

이것은 모드 정의에도 적용되지만 Mx 모드 이름이있는 모드를 호출하는 경우 토글로 구현됩니다. 한 번 호출하면 모드가 활성화되고 다시 호출하면 모드가 비활성화됩니다 . 따라서 M-x 모드 이름을 두 번해야 할 수도 있습니다.

+0

elisp를 (재) 평가하는 모든 다른 방법에 대해서는 http://www.masteringemacs.org/articles/2010/11/29/evaluating-elisp-emacs/ – phils

14
M-x load-file your-mode.el 

또는

M-x eval-buffer 

그때 아마

M-x your-mode 
M-x your-mode 

을 수행하여, 버퍼 및 해제 동작을 전환 또는 사용자 모드는 접두사 인수를 인식하는지

C-u 1 M-x your-mode 

참고 : 파일을 작성하는 경우 defvar은 기존 값보다 우선하지 않으므로 defvar이라는 값을 변경하면 커서가 devfar 표현식에있는 경우 CMx 중 하나를 수행하거나 Mx : 및 표현식을 입력하십시오. Emacs에서 lisp를 평가하는 것에 대한 문서는 this page을 참조하십시오. 당신 모드 기능을 제공하는 경우

+1

을 참조하십시오. 모드를 전환하는 대신 'Mx normal-mode'를 실행하십시오. – scottfrazer

26

(예상대로!) 다음

M-x unload-feature RET foo-mode RET

다음은 당신이 적절한 자동로드가있는 경우 foo-mode를 사용하거나 load-library를 사용하여 (정상으로 다시 모드를로드 할 수 있습니다 (provide 'foo-mode)를 사용하거나 그렇지 않으면 load-file).

+3

나는 이것을 보지 못했습니다. 문서에서는이 기능이 필요한 다른로드 된 코드가 있으면 오류가 발생하지만 접두사 arg를 사용하여 강제로 언로드 할 수 있다고 설명합니다. – phils

+0

다른로드 된 코드가 모듈을 사용하는 경우를 인식하는 것이 유용합니다. 모듈을 다시로드하더라도 다른 모듈이 이전 함수 정의를 계속 참조 할 수 있기 때문입니다. 이 경우 새로운 정의를 참조하도록 다른 모듈도 다시로드해야합니다. –

+0

+1, Trey Jackson의 답변과 함께이 작업이 저에게 도움이되었습니다. –