Hay ciertas cosas como la visualización del espacio en blanco al final, la visualización de los límites del búfer, los delimitadores de colores del arco iris y muchos más que me gustaría habilitar en la mayoría de los modos o más bien, todos los relacionados con la programación y el texto (porque mostrar espacios al final, digamos ediff-mode, entraría en conflicto 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 cualquiera prog-modeo text-mode, agregar la función en cuestión a ambos prog-mode-hooky text-mode-hookfunciona, sin embargo, hay suficientes modos que no siguen esta especificación, como css-modeo LaTeX-mode.
Me gustaría definir un gancho que abarque todos estos modos por el momento para agregar solo funciones a un gancho. Llamémoslo non-special-mode-hook(para distinguirlo de special-mode-hook). ¿Cómo podría crear un gancho que se ejecute para todos los modos principales para los que está hecho?

Respuestas:
Solo agrupe esas configuraciones en una función y agregue esa función a todas las funciones de enlace relevantes:
Ninguna otra forma de hacerlo sería más conciso: 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 que las cosas sean simples.
En mi propia configuración, uso exactamente este truco para unificar la configuración de varios modos orientados a lisp.
fuente
derived-mode-hook-name.(dolist ...)vs(add-hook ...)<repeat>. Sólo había quedo con la mía cuando se mantiene el modo específico cambia independiente (archivo-por-modo,use-package,el-get). Ambas son soluciones integrales, pero desde diferentes puntos de vista.APPENDargumento no nuloadd-hookaquí, los ganchos se invocarán en el orden inverso al orden de la lista que proporcione. Nada de malo con eso; solo tenlo en cuenta, en caso de que el orden sea importante.Podría agregar una función a
after-change-major-mode-hook, que verifique si el nuevo modo es interesante (posiblemente a través de(not (derived-mode-p 'special-mode))), y si es así, se ejecutanon-special-mode-hook.fuente
fundamental-mode, pero hacen más que solo mostrar texto), pero un poco demasiado mágico para mi gusto. De ahí el voto a favor.Me encontré a menudo haciendo el patrón de @ sanityinc de envolver mis configuraciones y activaciones de modo menores en un defun y recorrer los ganchos para llamarlo, pero quería un enfoque más limpio, así que escribí esta macro:
Nota: Estoy a
dash.elfavor de la limpieza, pero podría adaptarse fácilmente para usar(dolist).Luego puede definir modos agrupados como variables de lista y usarlo así:
fuente
derived-mode-hook-namepara obtener el nombre de la variable de enlace de un modo, evitando así elinterntruco.derived-mode-hook-name. buen consejo!En lugar de definir un nuevo enlace que funcione para todos estos modos no derivados , puede hacer lo siguiente.
Aún necesitará agregarlo a todos los modos, pero al definir su función para incluir todos los modos, solo tendrá que cambiar una definición al agregar / eliminar funciones adicionales.
fuente
Quizás puedas probar esto:
fuente