emacsでのメジャーモード固有のキー割り当ての設定


9

私には.emacs、ファイル、私は特定のメジャーモード(設定のためのキーバインディング追加するcoffee-compile-fileC-c C-cコーヒー・モードでは)。

私が使用して上の指示の多くを見つけたlocal-set-keyglobal-set-key私はコーヒー・モードでファイルを開いた後、私は簡単にこのバインディングを追加することができますので、しかし、これはによって処理されることがいいだろう.emacs

回答:


8

モードフックを使用します。 C-h m通常サポートするフックを含む、メジャーモードに関する情報を表示します。それからあなたは次のようなことをします

(add-hook 'coffee-mode-hook ;; guessing
    '(lambda ()
       (local-set-key "\C-cc" 'coffee-compile-file)))

6

次のように、モード固有のマップでキーを定義できます。

(add-hook 'coffee-mode-hook
    (lambda ()
        (define-key coffee-mode-map (kbd "C-c c") 'coffee-compile-file)))

または、よりきれいに:

(eval-after-load "coffee-mode"
    '(define-key coffee-mode-map (kbd "C-c c") 'coffee-compile-file))

2番目のステートメントでは、キーの定義が1回だけ行われますが、最初のステートメントでは、coffee-mode有効になるたびに定義が行われます(過剰です)。


2
参考までに:これらの括弧は間違った場所にあります。このアドインフックを読んでください (add-hook 'coffee-mode-hook (lambda () (define-key coffee-mode-map (kbd "C-c c") 'coffee-compile-file)))
owenmarshall

また、なぜそれをフックで定義するのですか?
Nikana Reklawyks 2012年

@NikanaReklawyksそうです、フックで定義することは、eval-after-loadこの場合ステートメントを使用するよりもクリーンではありません。回答を適宜更新します。
Trey Jackson、

3

Emacs 24.4で置き換えeval-after-loadられましたwith-eval-after-load

** New macro `with-eval-after-load'.
This is like the old `eval-after-load', but better behaved.

だから答えは

(with-eval-after-load 'coffee-mode
  (define-key coffee-mode-map (kbd "C-c C-c") 'coffee-compile-file)
  (define-key erlang-mode-map (kbd "C-c C-m") 'coffee-make-coffee)
  ;; Add other coffee commands
)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.