변경 사항을 적용 할 때 .emacs 파일을 다시로드하는 가장 빠른 방법은 무엇입니까? 영향을받는 모든 버퍼가 해당 변경 사항을 적용합니까?


27

C-x C-e어느 것이 eval-last-sexp및 인지 알고 M-x eval-buffer있지만 모든 변경 사항을 적용하기에 항상 충분하지는 않습니다. 때로는 구성이 변경된 모드에있는 버퍼를 실제로 닫아야하고 다른 경우에는 emacs를 완전히 다시 시작해야합니다. 이 문제를 처리하는 더 일반적인 방법이 있습니까? 또는 기존의 열린 버퍼와 대화식 기록을 잃지 않고 emacs를 다시 시작하는 방법이 있습니까?


@ b4hand이 원래 언급했듯이 이것은 본질적으로 제안 질문 중 하나를 기반으로 한 질문입니다. area51.stackexchange.com/proposals/76571/emacs/76588#76588
tarsius

답변:


16

아니요, 수정 된 구성을 다시로드 할 수 없으며 Emacs가로드 될 때 해당 수정이 이미 적용된 것처럼 Emacs가 작동하도록 할 수 있습니다. 요컨대, Emacs 패키지는 이것이 실현 되기에는 너무 많은 자유를 가지고 있습니다.

일부 주요 모드는 구성 변경을 선택하지 않습니다. 그 이유는 모드를 활성화하면 특정 옵션의 현재 값을 기반으로 일부 버퍼 로컬 변수를 설정하기 때문입니다. 사용하는 모든 버퍼에서 이러한 모드를 다시 활성화하지 않으면 모든 변경 사항이 적용되지 않습니다. 그럼에도 불구하고 어떤 것들은 변하지 않는 것이 가능합니다. 옵션을 custom-set-variables양식을 사용하여 사용자 정의하면이 작업의 가능성이 높아지 지만 각 옵션마다 명시 적으로 구현해야합니다. 그리고 지금까지 우리는 주요 모드와 옵션에 대해서만 이야기했습니다 ...

각 버퍼의 주 모드를 다시 활성화하는 명령을 구현할 수 있습니다. 그러나 모든 변경 사항을 완전히 활성화 할 가능성은 거의 없으며 수동으로 활성화 한 모든 부 모드를 비활성화하고 다른 모든 종류의 상태를 잃을 수도 있습니다.

eval-buffer따라서 가능한 많은 변경 사항을 적용하기 위해 init 파일을 전혀 사용 하지 않는 것이 좋습니다 . 를 사용하여 변경된 설정을 개별적으로 평가하십시오. eval-last-sexp그래도 작동하지 않으면 Emacs를 다시 시작해야합니다.

Emacs를 닫을 때 상태를 유지하는 방법은 다른 질문이며 별도로 질문해야합니다.


여기에 다시 시작 질문을했습니다 : emacs.stackexchange.com/questions/639/…
b4hand 0시 26 분

3

때로는 구성이 변경된 모드에있는 버퍼를 실제로 닫아야합니다.

호출 normal-mode은 해당 버퍼 또는 관련 후크를 변경 한 경우 지정된 버퍼에 대한 모든 모드를 다시 트리거하는 유용한 방법입니다.

실행 취소 기록을 삭제하지 않고 파일을 다시로드하는 것과 같은 revert-buffer(을 호출하는 normal-mode)을 사용할 수도 있습니다 .

(을 사용하여 파일을 다시로드 할 수도 C-xC-v있지만 실행 취소 기록 삭제 됩니다 .)

에서 M-x ibuffer대문자 입력하는 V모든 버퍼를 표시 되돌립니다 반면, 대문자 EW모든 표시 버퍼에 대한 임의의 elisp을 평가하는 데 사용할 수 있습니다.

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