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-mode
o text-mode
, agregar la función en cuestión a ambos prog-mode-hook
y text-mode-hook
funciona, sin embargo, hay suficientes modos que no siguen esta especificación, como css-mode
o 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.APPEND
argumento no nuloadd-hook
aquí, 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.el
favor 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-name
para obtener el nombre de la variable de enlace de un modo, evitando así elintern
truco.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