19

いくつかのメジャー モードにバッファーがあり、別のバッファーにはモード ファイル自体 (*.el) があります。*.el ファイルを編集した後、emacs を再起動せずに、最初のバッファーに反映された変更を確認したいと考えています。-mode 関数を実行しようとしましたが、バッファーは変更されませんでした。ありがとう

4

3 に答える 3

32

あなたのモードが機能を提供する場合(そうあるべきです!)、(provide 'foo-mode)それを使用することができます

M-x unload-feature RET foo-mode RET

次に、通常どおりモードを再度ロードします(foo-mode適切なオートロードがある場合は使用するか、使用するload-libraryか、load-fileそうでない場合)。

于 2010-12-05T21:22:40.970 に答える
16
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に行うか、を使用して、それらを具体的に評価する必要があります。式を入力します。Emacsでのlispの評価に関するドキュメントについては、このページを参照してください。C-M-xdevfarM-x :

于 2010-12-05T21:13:37.813 に答える
1

モードのソースを編集するときは、変更した関数を評価する必要があります。内部的にEmacsは古いコードを使用するため、ファイルに保存するだけでは不十分です。

たとえば、MCeで作業している関数定義の最後にジャンプして、CxCeで関数を評価できます。その時点から、Emacsは現在の定義を使用します。

これはモード定義でも機能しますが、多くの場合、Mx mode-nameを使用してモードを呼び出すことは、トグルとして実装されます。一度呼び出すと、モードがアクティブになり、もう一度呼び出すと、モードが非アクティブになります。したがって、Mxmode-nameを2回実行する必要がある場合があります。

于 2010-12-05T17:15:53.440 に答える