Impostazione delle combinazioni di tasti specifiche della modalità principale in emacs


9

Nel mio .emacsfile, voglio aggiungere un'associazione chiave per una modalità principale specifica (impostazione coffee-compile-filesu C-c C-cin modalità caffè).

Ho trovato molte istruzioni sull'utilizzo local-set-keye global-set-key, quindi posso facilmente aggiungere questa associazione dopo aver aperto un file in modalità caffè, ma sarebbe bello che questo venisse gestito .emacs.

Risposte:


8

Utilizzare l'hook mode. C-h mmostra le informazioni sulla modalità principale, di solito includendo quali hook supportano; allora fai qualcosa del genere

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

6

Puoi definire la chiave nella mappa specifica della modalità, qualcosa del tipo:

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

O, più chiaramente:

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

La seconda istruzione fa sì che la definizione della chiave avvenga una sola volta, mentre la prima fa sì che la definizione accada ogni volta che coffee-modeè abilitata (il che è eccessivo).


2
Cordiali saluti: queste parentesi sono nel posto sbagliato. Questo hook aggiuntivo dovrebbe (add-hook 'coffee-mode-hook (lambda () (define-key coffee-mode-map (kbd "C-c c") 'coffee-compile-file)))
contenere

Inoltre, perché definirlo in un gancio?
Nikana Reklawyks,

@NikanaReklawyks Hai ragione, definirlo in un hook non è così pulito come usare eval-after-loadun'istruzione in questo caso. Aggiornerò la risposta in modo appropriato.
Trey Jackson,

3

Emacs 24.4 ha sostituito eval-after-loadcon with-eval-after-load:

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

Quindi la risposta dovrebbe essere

(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
)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.