Come fare in modo che Emacs aggiorni automaticamente tutti i buffer quando i file sono cambiati sul disco?


176

Ho una funzione di ricerca e sostituzione globale non emacs che fa sì che i miei file su disco diventino più aggiornati rispetto ai miei buffer emacs (in massa). Esiste un modo per dire a emacs di aggiornare tutti i buffer dal disco in un colpo solo, invece di doverli fare singolarmente ricaricando il file?

Grazie! D


la modalità di ripristino automatico globale ha fatto la magia ...
Jorge Aguilar,

Risposte:


229

(global-auto-revert-mode t)nel tuo .emacs .


Questo sembra buono nei casi in cui voglio sempre rimanere sincronizzato, grazie! Penso che finirò per usare i revbuff in modo da poter gestire i conflitti da solo (altrimenti a volte potrei perdere le modifiche non salvate, nel modo in cui il mio flusso di lavoro attualmente funziona.)
Dave,

2
Grazie! Sto usando una combinazione di revbuff e modalità di ripristino automatico. la modalità di ripristino automatico funziona perfettamente quando voglio sovrascrivere le modifiche.
Natan Yellin,

12
@Dave: la modalità di inversione automatica (globale) non ripristinerà un file se il buffer corrispondente viene modificato, quindi non ci dovrebbero essere rischi di perdere le modifiche non salvate.
Lindydancer

Ho impostato la variabile in .emacs, ma quando modifico un po 'di codice xcode, quindi leggo il file (già aperto) su quella riga, modifica in xcode non lì, ho bisogno di Mx revert-buffer a mano. (Mac + emacs 24.3.1)
Ericfang,

6
Funziona bene quando si cambia ramo con git. Grazie!
Justin Leitgeb,

10

Ecco un'alternativa se stai usando la GUI di Emacs (il mio è GNU Emacs 25.1.1 su Windows 7):

  1. Fai clic su "Opzioni" nella barra dei menu
  2. Seleziona "Personalizza Emacs"
  3. Seleziona "Opzioni salvate"
  4. Poi si dovrebbe vedere un campo di ricerca in cui si entra in "global-auto-revert-mode" e premere il tasto "Cerca" pulsante
  5. Fai clic sul pulsante "Attiva" e assicurati che sia "acceso" a destra del pulsante
  6. Premi il pulsante "Applica e salva" proprio sotto il campo di ricerca

Se hai già aperto alcuni file, dovresti vederlo immediatamente attivo. In bocca al lupo!


3

Grazie a @Ashwin per la segnalazione (global-auto-revert-mode t). Ho scoperto che Emacs non aggiorna automaticamente i buffer i cui file sono cambiati sul disco con questa sola modifica. Da https://www.gnu.org/software/emacs/manual/html_node/emacs/Reverting.html :

Per impostazione predefinita, la modalità di ripristino automatico funziona utilizzando le notifiche dei file, per cui le modifiche nel file system vengono segnalate a Emacs dal sistema operativo. Puoi disabilitare l'uso delle notifiche dei file personalizzando la variabile auto-ripristina-usa-notifica a un valore nullo, quindi Emacs controllerà le modifiche ai file eseguendo il polling ogni cinque secondi. È possibile modificare l'intervallo di polling tramite l'intervallo di ripristino automatico variabile.

Dopo aver impostato (auto-revert-use-notify nil), Emacs ha effettivamente aggiornato tutti i buffer ogni 5 secondi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.