Contexto
Quando o emacs detecta que um arquivo foi alterado fora de um buffer de edição.
Observado
O emacs perguntará:
nome do arquivo alterado no disco; realmente editar o buffer? (y, n, r ou Ch)
(Aliás, às vezes acontece mesmo quando não há alteração real, por exemplo, arquivo remoto em um servidor com relógio desviado, mas a pergunta é interessante em todos os casos.)
Desejado
o emacs perguntaria:
nome do arquivo alterado no disco; realmente editar o buffer? (y, n, r, d ou Ch)
Pressionar d
mostraria a diferença entre as versões, por exemplo, o ediff-current-file
que permite percorrer as diferenças interativamente.
Informação adicional
Isso seria semelhante ao que o gerenciamento de pacotes Debian faz quando detecta que um arquivo de configuração personalizado localmente é atualizado por uma versão mais recente de seu próprio pacote. Para um exemplo, consulte Uma nova versão do arquivo de configuração / etc / default / grub está disponível, mas a versão instalada atualmente foi modificada localmente - Unix e Linux Stack Exchange
Pesquise antes de perguntar
Normalmente encontro o meu caminho para soluções (por exemplo, emacsclient - a partir de um script externo, abra um arquivo e execute uma expressão simples, independentemente de o emacs já estar em execução ou não - Emacs Stack Exchange ), mas depois de pesquisar sobre isso, não consegui encontrar nenhuma solução pré-existente.
Eu consideraria ajustar isso sozinho, mas não sou proficiente o suficiente no emacs-lisp e no emacs internals.
Esboço da solução
- Pressionar
C-g
então 'Mx ediff-current-file' faz o trabalho, ao custo de algumas teclas. - O objetivo aqui seria executar
ediff-current-file
um pressionamento de tecla no prompt acima.
fonte
Respostas:
grepping para "realmente edite o buffer" no emacs source, encontrei a função
ask-user-about-supersession-threat
no arquivouserlock.el
.Parece simples adicionar uma
d
opção para ligarediff-current-file
. Eu não testei isso extensivamente, no entanto (edições marcadas com;;-
comentários).fonte