Como o Emacs atualiza automaticamente todos os buffers quando os arquivos foram alterados no disco?

176

Tenho uma função de pesquisa e substituição global que não é do emacs que faz com que meus arquivos de disco se tornem mais atualizados do que meus buffers do emacs (em massa). Existe alguma maneira de dizer ao emacs para atualizar todos os buffers do disco de uma só vez, em vez de precisar fazer cada um individualmente recarregando o arquivo?

Obrigado! D

Dave
fonte
-auto-revert-mode mundial fez a magia ...
Jorge Aguilar

Respostas:

229

(global-auto-revert-mode t)no seu .emacs .

Ashwin
fonte
Isso parece bom nos casos em que eu sempre quero ficar sincronizado, obrigado! Acho que vou acabar usando revbuffs para que eu possa gerenciar conflitos mim mesmo (caso contrário, às vezes eu poderia perder alterações não salvas, a forma como o meu fluxo de trabalho funciona atualmente.)
Dave
2
Obrigado! Estou usando uma combinação de revbuffs e modo de reversão automática. O modo de reversão automática funciona muito bem quando quero substituir as alterações.
Natan Yellin
12
@Dave: o modo de reversão automática (global) não reverterá um arquivo se o buffer correspondente for modificado; portanto, não haverá risco de você perder alterações não salvas.
precisa saber é o seguinte
Eu configurei a variável em .emacs, mas quando edito algum código xcode, em seguida, leio o arquivo (já aberto) nessa linha, edite no xcode que não existe, precisa do Mx reverter-buffer manualmente. (Mac + emacs 24.3.1)
Ericfang
6
Funciona bem ao alternar ramificações com o git. Obrigado!
Justin Leitgeb
10

Aqui está uma alternativa se você estiver usando a interface gráfica do usuário do Emacs (a minha é o GNU Emacs 25.1.1 no Windows 7):

  1. Clique em "Opções" na barra de menus
  2. Selecione "Personalizar Emacs"
  3. Selecione "Opções salvas"
  4. Então você deve ver um campo de pesquisa onde você digita "global-auto-revert-mode" e pressione "Pesquisar" botão
  5. Clique no botão "Alternar" e verifique se está "ligado" à direita do botão
  6. Pressione o botão "Aplicar e salvar" logo abaixo do campo de pesquisa

Se você já possui alguns arquivos abertos, verá esse efeito instantaneamente. Boa sorte!

benjaminz
fonte
3

Obrigado a @ Ashshwin por apontar (global-auto-revert-mode t). Descobri que o Emacs não atualiza automaticamente os buffers cujos arquivos foram alterados no disco somente com essa alteração. De https://www.gnu.org/software/emacs/manual/html_node/emacs/Reverting.html :

Por padrão, o modo de reversão automática funciona usando notificações de arquivo, nas quais as alterações no sistema de arquivos são relatadas ao Emacs pelo sistema operacional. Você pode desativar o uso de notificações de arquivo personalizando a variável auto-revert-use-notification para um valor nulo, e o Emacs verificará as alterações no arquivo pesquisando a cada cinco segundos. Você pode alterar o intervalo de pesquisa por meio da variável intervalo de reversão automática.

Depois de definir (auto-revert-use-notify nil), o Emacs atualizou todos os buffers a cada 5 segundos.

jdc
fonte