Wie kann Emacs alle Puffer automatisch aktualisieren, wenn sich Dateien auf der Festplatte geändert haben?

176

Ich habe eine globale Such- und Ersetzungsfunktion für Nicht-Emacs, die dazu führt, dass meine Festplattendateien aktueller werden als meine Emacs-Puffer (en masse). Gibt es eine Möglichkeit, Emacs anzuweisen, alle Puffer von der Festplatte auf einen Schlag zu aktualisieren, anstatt jeden einzeln durch erneutes Laden der Datei ausführen zu müssen?

Vielen Dank! D.

Dave
quelle
Global-Auto-Revert-Modus hat die Magie getan ...
Jorge Aguilar

Antworten:

229

(global-auto-revert-mode t)in Ihren .emacs .

Ashwin
quelle
Das sieht gut aus in Fällen, in denen ich immer synchron bleiben möchte, danke! Ich denke, ich werde am Ende Revbuffs verwenden, damit ich Konflikte selbst verwalten kann (andernfalls verliere ich manchmal nicht gespeicherte Änderungen, so wie mein Workflow derzeit funktioniert.)
Dave
2
Danke dir! Ich verwende eine Kombination aus Revbuffs und Auto-Revert-Modus. Der Auto-Revert-Modus funktioniert hervorragend, wenn ich Änderungen überschreiben möchte.
Natan Yellin
12
@ Dave: Der (globale) Auto-Reverse-Modus setzt eine Datei nicht zurück, wenn der entsprechende Puffer geändert wird. Daher sollte kein Risiko bestehen, dass Sie nicht gespeicherte Änderungen verlieren.
Lindydancer
Ich habe die Variable in .emacs gesetzt, aber wenn ich einen Code xcode bearbeite, dann lese ich die Datei (bereits geöffnet) in dieser Zeile, bearbeite in xcode nicht dort, brauche Mx Revert-Buffer handlich. (Mac + emacs 24.3.1)
Ericfang
6
Funktioniert gut beim Wechseln von Zweigen mit Git. Vielen Dank!
Justin Leitgeb
10

Hier ist eine Alternative, wenn Sie die Emacs-Benutzeroberfläche verwenden (meine ist GNU Emacs 25.1.1 unter Windows 7):

  1. Klicken Sie in der Menüleiste auf "Optionen"
  2. Wählen Sie "Emacs anpassen"
  3. Wählen Sie "Gespeicherte Optionen"
  4. Dann sollte ein Suchfeld angezeigt werden, in dem Sie den "Global-Auto-Revert-Modus" aufrufen und auf die Schaltfläche "Suchen" klicken
  5. Klicken Sie auf die Schaltfläche "Umschalten" und stellen Sie sicher, dass rechts neben der Schaltfläche "Ein" angezeigt wird
  6. Drücken Sie auf „ Übernehmen und Speichern“ Taste direkt unter dem Suchfeld

Wenn Sie bereits einige Dateien geöffnet haben, sollte dies sofort wirksam werden. Viel Glück!

benjaminz
quelle
3

Vielen Dank an @Ashwin für den Hinweis (global-auto-revert-mode t). Ich habe festgestellt, dass Emacs Puffer nicht automatisch aktualisiert, deren Dateien sich allein mit dieser Änderung auf der Festplatte geändert haben. Von https://www.gnu.org/software/emacs/manual/html_node/emacs/Reverting.html :

Standardmäßig funktioniert der Auto-Revert-Modus mithilfe von Datebenachrichtigungen, wobei Änderungen im Dateisystem vom Betriebssystem an Emacs gemeldet werden. Sie können die Verwendung von Dateibenachrichtigungen deaktivieren, indem Sie die Variable auto-revert-use-notify auf einen Nullwert anpassen. Emacs prüft dann alle fünf Sekunden, ob eine Datei geändert wurde. Sie können das Abfrageintervall über die Variable Auto-Revert-Intervall ändern.

Nachdem ich eingestellt hatte (auto-revert-use-notify nil), aktualisierte Emacs tatsächlich alle 5 Sekunden alle Puffer.

jdc
quelle