Definição de atalhos específicos de modo principal no emacs

9

No meu arquivo .emacs , quero adicionar uma ligação de chave para um modo principal específico (definindo coffee-compile-file a C-c C-c no modo de café).

Encontrei muitas instruções sobre como usar local-set-key e global-set-key , para que eu possa adicionar essa ligação facilmente depois de abrir um arquivo no modo de café, mas seria bom que isso fosse resolvido por .emacs .

    
por Jeff 27.03.2011 / 05:35

3 respostas

8

Use o gancho de modo. C-h m mostra informações sobre o modo principal, geralmente incluindo o (s) gancho (s) que ele suporta; então você faz algo como

(add-hook 'coffee-mode-hook ;; guessing
    '(lambda ()
       (local-set-key "\C-cc" 'coffee-compile-file)))
    
por 27.03.2011 / 05:40
6

Você pode definir a chave no mapa específico do modo, algo como:

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

Ou, mais claramente:

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

A segunda instrução faz com que a definição de chave ocorra somente uma vez, enquanto a primeira faz com que a definição aconteça sempre que coffee-mode estiver habilitado (o que é um exagero).

    
por 27.03.2011 / 19:30
3

O Emacs 24.4 substituiu eval-after-load por with-eval-after-load :

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

Então a resposta deve ser

(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
)
    
por 27.09.2015 / 20:17