1

これらを .emacs に追加しようとしましたが、効果がないようです

(local-set-key (kbd "C-x C-e") 'scheme-send-last-sexp )
(local-set-key (kbd "C-M-x") 'scheme-send-definition )

私は quack を使用しており、.scm バッファーで Cx Ce を試すと、MIT-Scheme が 1 つのバッファーで実行されます。最後の s 式を評価する代わりに、「run-ilisp を使用して下位の LISP を開始する必要があります」というメッセージが表示されます。しかし、手動でショートカットを追加すると:

M-x local-set-key RET C-x C-e scheme-send-last-sexp RET
M-x local-set-key RET C-M-x scheme-send-definition RET

できます。手動で入力せずに Emacs (23.3.1) でこの機能を取得するにはどうすればよいですか?

4

2 に答える 2

5

C-h f local-set-key

local-set-key は、 のインタラクティブにコンパイルされた Lisp 関数ですsubr.el

(ローカル セット キー キー コマンド)

...をちょきちょきと切る...

バインドは、現在のバッファーのローカル マップで行われます。ほとんどの場合、これは同じメジャー モードの他のすべてのバッファーと共有されます。

そのため、init ファイルに追加local-set-keyすると、そのファイルのロード中に使用されるメジャー モードでバインドが行われます。

1 つの特定のメジャー モードに追加する必要があります。これを行うには、次の 2 つの情報が必要です。

  1. メジャーモードの名前。
    • C-h vmajor-modeメジャー モードが既に読み込まれているバッファから使用します。
    • 仮定しましょうmit-scm-mode
    • これに追加-mapしてキーマップを取得します。
  2. メジャー モードを定義するファイルの名前。
    • を使用しC-h fmit-scm-modeます。
    • と仮定しましょうmit-scm-mode.el
    • 拡張子のないファイル名を使用してください。

これらを使用して、次を追加します。

(eval-after-load "mit-scm-mode"
  '(progn
     (define-key mit-scm-mode-map (kbd "C-x C-e") 'scheme-send-last-sexp )
     (define-key mit-scm-mode-map (kbd "C-M-x") 'scheme-send-definition )))

あなたのinitファイルに。

于 2012-05-05T23:47:01.933 に答える