igações de teclas personalizadas específicas do modo @emacs: local-set-key vs define-key

Depois de alguns anos personalizando meu.emacs, acho que usei dois tipos diferentes de construções para configurar as combinações de teclas específicas do modo principal:

1. usando um gancho elocal-set-key. Por exemplo

(defun my/bindkey-recompile ()
  "Bind <F5> to `recompile'."
  (local-set-key (kbd "<f5>") 'recompile))
(add-hook 'c-mode-common-hook 'my/bindkey-recompile)

Eu diria que essa construção facilita o uso das mesmas combinações de teclas para diferentes modos principais, adicionando a mesma função a todos os ganchos relevantes do modo principal (em outras palavras, o "que teclas de atalho eu quero "está claramente separado do"para quais modos os quero "). No entanto, não me sinto confortável com o fato de que essas personalizações são feitas no nível do buffer, enquanto eu acho que elas pertencem ao modo principal.

2. usandodefine-key (geralmente combinado comeval-after-load para atrasar a avaliação até o mapa de teclas relevante ser carregado). Por exemplo

(eval-after-load "cc-mode"
  '(progn
     (define-key c-mode-map   (kbd "C-c o") 'ff-find-other-file)
     (define-key c++-mode-map (kbd "C-c o") 'ff-find-other-file)))

Por contraste, essa construção personaliza o próprio modo principal, mas é menos flexível: se eu quiser usar as mesmas combinações de teclas para outro modo, terei que encontrar os nomes corretos de arquivo e mapa de teclas para esse modo e quase duplicar oeval-after-loadxpressão (embora isso provavelmente possa ser automatizado com uma função / macro

Questão, embora ambos os tipos de construção funcionem bem e produzam o resultado que eu quero, eles são tecnicamente muito diferentes, configurando as combinações de teclas em diferentes mapas de teclas em momentos diferentes. Portanto, minha pergunta é: entre essas duas construções, existe uma maneira "preferida / melhor" de fazer as coisas? (Ou talvez a melhor "construção" seja uma terceira que eu não conheço?)

Por "preferido / melhor", quero dizer coisas como:

menos propenso a romper com as novas versões do emacs menos propenso a perturbar / ser perturbado por modos menores ativosmais idiomático / legível / compartilhável com os outros

questionAnswers(4)

yourAnswerToTheQuestion