web-dev-qa-db-ja.com

emacsでメジャーモード固有のキーバインディングを設定する

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

local-set-keyglobal-set-keyの使用方法について多くの説明を見つけたので、コーヒーモードでファイルを開いたら、このバインディングを簡単に追加できますが、これがあればいいのですが。 .emacsによって処理されます。

9
Jeff

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

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

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

(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が有効になるたびに定義が発生します(これはやり過ぎです)。

6
Trey Jackson

Emacs24.4に取って代わったeval-after-load with 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
)
3
Blaz