Tal como en la variable incorporada mode-line-modifiedque muestra un asterisco en la línea de modo si se modifica el búfer.
Específicamente, quiero hl-line-modeapagar 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-modealternar cuando deshago un cambio como el asterisco de línea de modo.
hooks
buffer-modified
niñera
fuente
fuente

after-change-functionsyfirst-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 aconsejarundoque realice el cambio.buffer-modified-ppara comprobar si se ha producido una modificación. Estoy usandoafter-save-hookyfirst-change-hookpara alternar un indicador modificado en mi barra de pestañas.post-command-hookque 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-hookCree 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-hookyundoCree una función para
hl-line-modeapagar y conectarlafirst-change-hook. Cree una función para encenderhl-line-modey engancharlaafter-save-hook. Proporcioneafterconsejos paraundoque se activehl-line-modecuando 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-modevolver a encender ".fuente
post-command-hook.revert-bufferParece otro caso común que pondría el búfer en un estado no modificado. Podrías usar elafter-revert-hookpara manejar este.after-change-major-mode-hook?add-hooktiene unlocalparámetro, por lo que si solo desea anular el comportamiento en ciertos modos principales o búferes, puede hacerlo.