Définition de raccourcis clavier spécifiques au mode principal dans emacs


9

Dans mon .emacsfichier, je veux ajouter une liaison de touches pour un mode majeur spécifique (réglage coffee-compile-filesur C-c C-cen mode café).

J'ai trouvé beaucoup d'instructions sur l'utilisation de local-set-keyet global-set-key, donc je peux facilement ajouter cette liaison une fois que j'ai ouvert un fichier en mode café, mais ce serait bien que cela soit géré par .emacs.

Réponses:


8

Utilisez le crochet de mode. C-h maffiche des informations sur le mode principal, y compris généralement les crochets qu'il prend en charge; alors vous faites quelque chose comme

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

6

Vous pouvez définir la clé dans la carte spécifique au mode, quelque chose comme:

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

Ou, plus proprement:

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

La deuxième instruction fait que la définition de clé ne se produit qu'une seule fois, tandis que la première fait que la définition se produit chaque fois qu'elle coffee-modeest activée (ce qui est excessif).


2
FYI: ces parens sont au mauvais endroit. Ce crochet supplémentaire devrait se lire: (add-hook 'coffee-mode-hook (lambda () (define-key coffee-mode-map (kbd "C-c c") 'coffee-compile-file)))
owenmarshall

Aussi, pourquoi le définir dans un crochet?
Nikana Reklawyks

@NikanaReklawyks Vous avez raison, le définir dans un crochet n'est pas aussi propre que d'utiliser une eval-after-loaddéclaration dans ce cas. Je mettrai à jour la réponse de manière appropriée.
Trey Jackson

3

Emacs 24.4 remplacé eval-after-loadpar with-eval-after-load:

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

La réponse devrait donc être

(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
)
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.