Tal como en la variable incorporada mode-line-modified
que muestra un asterisco en la línea de modo si se modifica el búfer.
Específicamente, quiero hl-line-mode
apagar cuando el búfer se modifica y encender cuando no lo está.
He leído la documentación sobre "Cambiar ganchos", pero quiero hl-line-mode
alternar cuando deshago un cambio como el asterisco de línea de modo.
hooks
buffer-modified
niñera
fuente
fuente
after-change-functions
yfirst-change-hook
. Si, por alguna razón, deshacer de un búfer modificado a uno no modificado no cuenta como un "cambio" para estos ganchos, puede aconsejarundo
que realice el cambio.buffer-modified-p
para comprobar si se ha producido una modificación. Estoy usandoafter-save-hook
yfirst-change-hook
para alternar un indicador modificado en mi barra de pestañas.post-command-hook
que se compruebebuffer-modified-p
.Respuestas:
A partir de los comentarios, aquí hay dos formas de lograr lo que está tratando de hacer. (No ampliamente probado, por lo que YMMV).
Opción 1:
post-command-hook
Cree una función que pruebe si se modifica o no el búfer y luego conéctelo a
post-command-hook
:La ventaja es que es bastante simple. La desventaja es que Emacs ejecutará esta prueba después de cada comando , lo que parece excesivo.
Opción 2:
first-change-hook
,after-save-hook
yundo
Cree una función para
hl-line-mode
apagar y conectarlafirst-change-hook
. Cree una función para encenderhl-line-mode
y engancharlaafter-save-hook
. Proporcioneafter
consejos paraundo
que se activehl-line-mode
cuando un deshacer haya devuelto el búfer a un estado no modificado:La ventaja es que llama a estas funciones con poca frecuencia en lugar de después de cada comando. La desventaja es que ha tenido que profundizar en los consejos, y puede haber otras formas imprevistas de llevar un búfer a un estado no modificado que no active el paso "
hl-line-mode
volver a encender ".fuente
post-command-hook
.revert-buffer
Parece otro caso común que pondría el búfer en un estado no modificado. Podrías usar elafter-revert-hook
para manejar este.after-change-major-mode-hook
?add-hook
tiene unlocal
parámetro, por lo que si solo desea anular el comportamiento en ciertos modos principales o búferes, puede hacerlo.