lisp-interaction-mode가 존재하는 이유는 무엇입니까?


20

Q :lisp-interaction-mode존재하며 대신 사용해야하는 이유가 emacs-lisp-mode있습니까?

수동 상태는 것을 emacs-lisp-mode그리고 lisp-interaction-mode후자의 바인딩 것을 제외하고 동일 C-jeval-print-last-sexp. 그 외에도 "Lisp 상호 작용 모드의 다른 모든 명령은 Emacs Lisp 모드와 동일합니다." 내가 알 수있는 한, *scratch*버퍼 만 후자 모드를 사용합니다.

하나의 키 바인딩만으로 다른 모드와 다른 전체 모드가 있다는 것이 이상합니다. 따라서 일부 기록이나 컨텍스트가 누락 된 것으로 가정합니다.

그래서:

이 질문의 동기는 지금 당장 키를 두 번 (두 모드에서) 바인딩 *scratch*하여 버퍼가 *.el파일을 방문하는 버퍼처럼 행동 한다는 것 입니다. 유지할 실질적인 이유가 없다면 lisp-interaction-mode, 그냥 (setq initial-major-mode 'emacs-lisp-mode)끝내 겠습니다 .


1
어쩌면 당신은 귀하의 질문의 모든 붙이는 중단됩니다 " Q를 : ":
nicael

원하는 모든 주요 모드를 사용할 수 있습니다 *scratch*.
Stefan

3
@nicael : Q : [정보 등에 게 아니에요 Q ? 넌 날 상처 입었 어 ! ;)
Dan

답변:


13

당신이 C-j행동 을 미워하지 않는 한 (그리고 대부분의 엘리스 작성자가 편리하다고 생각합니다), 상황을 그대로 유지하십시오.

lisp-mode-shared-map모드 별 키맵에 대해 키를 복제하는 대신 키를 정의하십시오 .

모두 lisp-mode-map, emacs-lisp-mode-map그리고 lisp-interaction-mode-maplisp-mode-shared-map부모 키맵한다.


15

새로운 파생 모드는 저렴합니다.에서 lisp-interaction-mode상속 emacs-lisp-mode하고 구현은 수십 줄 정도의 코드입니다. emacs-lisp-mode다음과 같은 점에서 다릅니다 .

  • 이름이 다릅니다.
  • 키맵이 다릅니다.
  • 다른 구문 테이블이 있습니다.
  • 추가 후크가 있습니다.

반면, abbrev 테이블을와 공유합니다 emacs-lisp-mode.

편집 : @phils가 그의 답변 (참조)에서 공통 부모 의 키 맵을 공유 emacs-lisp-mode하고 lisp-interaction-mode공유합니다 lisp-mode-shared-map. 따라서 키 바인딩을 복제 할 이유가 없습니다.에 키 바인딩을 정의하면 lisp-mode-shared-map두 모드 모두에 적용됩니다 ( lisp-mode그러나 아마도 괜찮을 것입니다).

*scratch*버퍼 모드를 emacs-lisp-mode? 로 변경하면 예기치 않은 결과가 발생 합니까?

가장 확실한 결과는 lisp-interaction-mode-hook더 이상 *scratch*버퍼 에서 실행되지 않는 것 입니다.


3
그것은이 추가 후크를. 파생 모드가 작동하는 방식 이기 때문에 emacs-lisp-mode-hook실행됩니다 . 그것은 않는 다른 키맵을 가지고 있지만 모두 elisp 모드가 동일한 상위 키 맵을 공유 ( ). 별도의 구문 테이블이 있지만 상위 모드와 동일합니다 (상위 설정을 위해 상위를 연기하기 때문). lisp-interaction-modelisp-mode-shared-map
phils

젠장, 네 말이 맞아 희망적으로 지금 수정하십시오.
jch

4

FWIW, 내가 사용 emacs-lisp-mode*scratch*버퍼 나 자신. 내가 뭔가를 평가하려면, 난 그냥 할 C-x C-e로, C-u필요할 때 접두사. 이 관행에 단점이 없습니다.

왜 모드가 있는지에 관해서는 몇 줄의 lisp 코드 elisp-mode.el가 있으며 영원히 계속 존재 하므로 제거하는 것이 의미가없는 것 같습니다.


나는 C-j바운드하기를 원했기 때문에 나이가 들기 전에이 작업을 시작 newline-and-indent했지만 요즘 들여 쓰기가 더 자동으로 수행되므로 더 이상 심각한 문제는 아닙니다. 오래 전에이 변경을하지 않았다면 지금은 귀찮게하지 않을 것입니다.
Harald Hanche-Olsen

나도 그만한 가치가 있기 때문에 오랫동안 그렇게했습니다. 또는 버림받은 *.el파일 버퍼를 사용합니다 .
Drew
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.