it-swarm.com.de

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

Ich habe eine globale Nicht-Emacs-Funktion zum Suchen und Ersetzen, die dazu führt, dass meine Festplattendateien aktueller sind als meine Emacs-Puffer (en masse). Gibt es eine Möglichkeit, Emacs anzuweisen, alle Puffer von der Festplatte auf einen Schlag zu aktualisieren, anstatt sie einzeln durch Neuladen der Datei durchführen zu müssen?

Danke: D

169
Dave

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

215
Ashwin

Hier ist eine Alternative, wenn Sie Emacs GUI verwenden (Mein ist GNU Emacs 25.1.1 unter Windows 7): 

  1. Klicken Sie auf "Optionen" in der Menüleiste
  2. Wählen Sie "Emacs anpassen"
  3. Wählen Sie "Gespeicherte Optionen"
  4. Dann sollten Sie ein Suchfeld sehen, in dem Sie den "global-auto-revert-mode" eingeben und "Search" drücken
  5. Klicken Sie auf die "Toggle" Taste und vergewissern Sie sich, dass rechts von der Taste "on" steht
  6. Drücken Sie "Übernehmen und Speichern" direkt unter dem Suchfeld

Wenn Sie bereits einige Dateien geöffnet haben, sollten Sie diesen Effekt sofort sehen. Viel Glück!

10
benjaminz

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

Der Auto-Revert-Modus arbeitet standardmäßig mit Dateiankündigungen, 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 überprüft dann alle fünf Sekunden, ob Änderungen an der Datei vorgenommen werden. Sie können das Abfrageintervall über das variable Intervall für die automatische Rücksetzung ändern.

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

0
jdc