Setting major-mode specific keybindings in emacs
Solution 1:
Use the mode hook. C-h m
shows information about the major mode, usually including what hook(s) it supports; then you do something like
(add-hook 'coffee-mode-hook ;; guessing
'(lambda ()
(local-set-key "\C-cc" 'coffee-compile-file)))
Solution 2:
You can define the key in the mode specific map, something like:
(add-hook 'coffee-mode-hook
(lambda ()
(define-key coffee-mode-map (kbd "C-c c") 'coffee-compile-file)))
Or, more cleanly:
(eval-after-load "coffee-mode"
'(define-key coffee-mode-map (kbd "C-c c") 'coffee-compile-file))
The second statement causes the key definition to only happen once, whereas the first causes the definition to happen every time coffee-mode
is enabled (which is overkill).
Solution 3:
Emacs 24.4 superseded 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.
So the answer should be
(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
)