Como na variável mode-line-modified
interna que exibe um asterisco na linha de modo, se o buffer for modificado.
Especificamente, quero hl-line-mode
desligar quando o buffer é modificado e ativado quando não está.
Eu li a documentação sobre "Alterar ganchos", mas quero hl-line-mode
alternar quando desfazer uma alteração como o asterisco da linha de modo.
hooks
buffer-modified
babá
fonte
fonte
after-change-functions
efirst-change-hook
. Se, por algum motivo, desfazer de um buffer modificado para um não modificado não conta como uma "alteração" para esses ganchos, você pode aconselharundo
executar a alternância.buffer-modified-p
para testar se uma modificação ocorreu. Estou usando oafter-save-hook
efirst-change-hook
para alternar um indicador modificado na minha barra de tabulação.post-command-hook
verificar issobuffer-modified-p
.Respostas:
Com base nos comentários, aqui estão duas maneiras de conseguir o que você está tentando fazer. (Não testado extensivamente, portanto YMMV.)
Opção 1:
post-command-hook
Crie uma função que testa se o buffer está ou não modificado e conecte-o a
post-command-hook
:A vantagem é que é bem simples. A desvantagem é que o Emacs executará esse teste após cada comando , o que parece ser um exagero.
Opção 2:
first-change-hook
,after-save-hook
eundo
Crie uma função para
hl-line-mode
desligar e conectá-lafirst-change-hook
. Crie uma função para ativarhl-line-mode
e conectá-laafter-save-hook
. Forneçaafter
conselhos sobreundo
como ativarhl-line-mode
quando um desfazer retornou o buffer para um estado não modificado:A vantagem é que ele chama essas funções com pouca frequência e não após cada comando. A desvantagem é que você teve que se aprofundar em conselhos, e pode haver outras maneiras imprevistas de obter um buffer para um estado não modificado que não desencadeie a etapa "ativar
hl-line-mode
novamente".fonte
post-command-hook
.revert-buffer
parece outro caso comum que colocaria o buffer em um estado não modificado. Você pode usar oafter-revert-hook
para lidar com este.after-change-major-mode-hook
?add-hook
possui umlocal
parâmetro; portanto, se você deseja apenas substituir o comportamento em determinados modos ou buffers principais, é possível.