なぜlisp-interaction-modeが存在し、それが必要なのでしょうか?


20

Q:なぜlisp-interaction-mode存在するのemacs-lisp-modeですか?代わりに使用する理由はありますか?

マニュアル状態emacs-lisp-modelisp-interaction-mode後者に結合することを除いて同一であるC-jeval-print-last-sexp。それを超えて、「Lisp Interactionモードの他のすべてのコマンドは、Emacs Lispモードと同じです。」 私の知る限り、*scratch*バッファのみが後者のモードを使用します。

単一のキーバインドだけが他のモードと異なるモード全体があるのは奇妙に思えるので、いくつかの履歴またはコンテキストが欠落していると思います。

そう:

この質問の動機は、現在、キーを2回(2つのモードで)バインドしているため、*scratch*バッファーが*.elファイルを訪問するバッファーのように動作することです。維持する実用的な理由がない場合lisp-interaction-mode、私はただ(setq initial-major-mode 'emacs-lisp-mode)それで終わります。


1
たぶん、あなたの質問の前に「Q:」を付けるのをやめるでしょう:)
nicael 14年

好きなメジャーモードを使用できます*scratch*
ステファン14年

3
@nicael:Q:程度のように何ではありませんQ?あなたは私を傷つけました、先生!;)
ダン

回答:


13

あなたがそのC-j振る舞いを嫌わない限り(そして、私はほとんどのelisp作成者がそれを便利だと確信していると思います)、物事をそのままにしてください。

lisp-mode-shared-mapモード固有のキーマップ用にキーを複製する代わりに、キーを定義します。

すべてのlisp-mode-mapemacs-lisp-mode-mapそして、lisp-interaction-mode-map持っているlisp-mode-shared-map彼らの親キーマップとして。


15

新しい派生モードは安価です:lisp-interaction-modeから継承しemacs-lisp-mode、その実装はわずか数行のコードです。emacs-lisp-mode次の点でのみ異なります。

  • 別の名前があります。
  • 異なるキーマップがあります。
  • 構文テーブルが異なります。
  • 追加のフックがあります。

一方、略語表はと共有しますemacs-lisp-mode

編集: @philsの回答(これを参照)で指摘されているように、共通の親のキーマップemacs-lisp-modelisp-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それが派生モードの動作方法lisp-interaction-modeだからです。それはない別のキーマップを持っていますが、両方のelispのモードが(同じ親キーマップを共有しますlisp-mode-shared-map)。個別の構文テーブルがありますが、親モードの構文テーブルと同じです(設定するために親に委ねるため)。
フィル14年

くそー、あなたは正しい。うまくいけば今すぐ。
JCH

4

FWIW、私は自分でバッファに使用emacs-lisp-mode*scratch*ます。何かを評価したい場合はC-x C-eC-u必要なときに接頭辞を付けてを行います。私はこのプラクティスにマイナス面はないと思います。

モードが存在する理由については、のほんの数行のLispコードでelisp-mode.elあり、foreverのように存在しているので、それを削除しても意味がありません。


C-jバインドしたかったので、私はずっと前に自分でこれを始めましたnewline-and-indentが、最近では、インデントがより自動的に行われるようになったため、これはもはや深刻な問題ではありません。ですから、もし私がずっと前にこの変更を行っていなかったなら、私は今それを気にしません。
ハラルドハンチェオルセン14年

私も、それが価値があるもののために-長い間そうしてきました。または、使い捨て*.elファイルバッファーを使用します。
ドリュー14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.