emacs asociaciones de teclas personalizadas específicas del modo: local-set-key vs define-key

Después de unos años personalizando mi.emacs file, creo que utilicé dos tipos diferentes de construcciones para configurar enlaces de teclas específicos del modo principal:

1. usando un gancho ylocal-set-key. Por ejemplo

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

Diría que esta construcción facilita el uso de las mismas combinaciones de teclas para diferentes modos principales al agregar la misma función a todos los ganchos relevantes del modo principal (en otras palabras, el "que combinaciones de teclas quiero "está claramente separado del" para qué modos los quiero "). Sin embargo, no me siento cómodo con el hecho de que tales personalizaciones se realizan a nivel de búfer, mientras que creo que pertenecen al modo principal.

2. utilizandodefine-key (a menudo combinado coneval-after-load para retrasar la evaluación hasta que se cargue el mapa de teclas correspondiente). Por ejemplo

(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 el contrario, esta construcción personaliza el modo mayor en sí mismo, pero es menos flexible: si quiero usar las mismas combinaciones de teclas para otro modo, tendré que encontrar el archivo correcto y los nombres de mapas de teclas para este modo, y casi duplicar el @eval-after-load expresión (aunque esto probablemente podría automatizarse con una función / macro).

Pregunta aunque ambos tipos de construcción funcionan bien y producen el resultado que quiero, son técnicamente muy diferentes, configurando las asociaciones de teclas en diferentes mapas de teclas en diferentes momentos. Entonces mi pregunta es: entre estas dos construcciones, ¿hay una forma "preferida / mejor" de hacer las cosas? (¿O tal vez la "mejor" construcción es una tercera que no conozco?)

Por "preferido / mejor", quiero decir cosas como:

less propenso a romperse con las nuevas versiones de emacsless propenso a molestar / ser molestado por modos menores activosmás idiomático / legible / compartible con otros

Respuestas a la pregunta(4)

Su respuesta a la pregunta