Pregunta:
Hay ciertas cosas como la visualización de espacios en blanco finales, visualización de límites de búfer, delimitadores de colores del arco iris y muchas más que me gustaría habilitar en la mayoría de los modos o, mejor dicho, todos los relacionados con la programación y el texto (porque mostrar espacios finales en, digamos ediff-mode
, chocaría con el modo mayor) en lugar de usar un modo menor globalizado con reglas de excepción. Dado que la mayoría de los modos se derivan de prog-mode
o text-mode
, agregar la función en cuestión tanto a prog-mode-hook
como a text-mode-hook
funciona, sin embargo, hay suficientes modos que no siguen esta especificación, como css-mode
o css-mode
LaTeX-mode
.
Me gustaría definir un gancho que abarque todos estos modos por el momento para solo agregar funciones a un gancho. Llamémoslo non-special-mode-hook
(para distinguirlo del special-mode-hook
). ¿Cómo podría crear un gancho que se ejecute para todos los modos principales para los que está hecho?
Respuesta:
Simplemente agrupe esas configuraciones en una función y agregue esa función a todas las funciones de enlace relevantes:
(defun my-non-special-mode-setup ()
(setq show-trailing-whitespace t)
...)
(dolist (hook '(prog-mode-hook text-mode-hook css-mode-hook ...))
(add-hook hook 'my-non-special-mode-setup))
Ninguna otra forma de hacer esto sería más concisa: pase lo que pase, en algún lugar tendrá una lista blanca o una lista negra de modos. En la práctica, solo encontrará algunos modos que deben agregarse a la lista, por lo que sugeriría mantener las cosas simples.
En mi propia configuración, utilizo exactamente este truco para unificar la configuración de varios modos orientados a lisp.