Wie zu deaktivieren Emacs von der Überprüfung der Pufferdatei wurde außerhalb des Editors geändert?Emacs: Wie kann man 'Datei geändert auf Platte' deaktivieren?
Antwort
Emacs versucht wirklich, Ihnen hier zu helfen. Lesen Sie die Infoseite unter Protection against Simultaneous Editing.
Aber, wenn Sie wollen immer noch, dass Nachricht/prompt zu vermeiden, können Sie die Funktion neu zu definieren, die die Aufforderung tut:
(defun ask-user-about-supersession-threat (fn)
"blatantly ignore files that changed on disk"
)
(defun ask-user-about-lock (file opponent)
"always grab lock"
t)
Die zweite Funktion dort ist, wenn zwei Menschen Emacs verwenden die bearbeiten gleiche Datei und würde eine ähnliche Eingabeaufforderung bereitstellen (aber nicht die, auf die Sie in der Frage verwiesen zu haben scheinen).
Ich rate davon ab, die beiden Routinen zu überschreiben, aber es ist da, wenn Sie wollen.
Auf die aussichtslose
global-auto-revert-mode
ist, können Sie das deaktivieren. Fügen Sie diese auf Ihre .emacs:
(global-auto-revert-mode -1)
Sie sagen kann, ob der Modus, indem man die Variable mit dem gleichen Namen auf ist:
C-h v global-auto-revert-mode RET
Wenn der Wert t
ist, dann ist der Modus auf sonst ist es aus.
Ich hatte Ärger damit, weil jedes Mal, wenn ich Filialen in Git wechselte, dachte Emacs, dass alle meine Dateien geändert hatten.
Revbuffs hilft Ihnen, mit den Symptomen davon fertig zu werden. Es ermöglicht Ihnen, dass alle Ihre Puffer neu geladen werden.
Sie können auch versuchen, (global-auto-revert-mode)
, die automatisch Ihre Dateien zurücksetzt, was auf der Festplatte ist.
Ich habe folgendes in meinem .emacs
. Es lässt Emacs nur nach wirklich geänderten Dateien fragen. Wenn eine Datei byteweise gleich bleibt und nur ihr Zeitstempel aktualisiert wird, wie es beim Wechseln von Zweigen in VCS häufig der Fall ist, wird diese "Änderung" von Emacs ignoriert.
;; Ignore modification-time-only changes in files, i.e. ones that
;; don't really change the contents. This happens often with
;; switching between different VC buffers.
(defun update-buffer-modtime-if-byte-identical()
(let* ((size (buffer-size))
(byte-size (position-bytes size))
(filename buffer-file-name))
(when (and byte-size (<= size 1000000))
(let* ((attributes (file-attributes filename))
(file-size (nth 7 attributes)))
(when (and file-size
(= file-size byte-size)
(string= (buffer-substring-no-properties 1 (1+ size))
(with-temp-buffer
(insert-file-contents filename)
(buffer-string))))
(set-visited-file-modtime (nth 5 attributes))
t)))))
(defun verify-visited-file-modtime--ignore-byte-identical (original &optional buffer)
(or (funcall original buffer)
(with-current-buffer buffer
(update-buffer-modtime-if-byte-identical))))
(advice-add 'verify-visited-file-modtime :around #'verify-visited-file-modtime--ignore-byte-identical)
(defun ask-user-about-supersession-threat--ignore-byte-identical (original &rest arguments)
(unless (update-buffer-modtime-if-byte-identical)
(apply original arguments)))
(advice-add 'ask-user-about-supersession-threat :around #'ask-user-about-supersession-threat--ignore-byte-identical)
+1 Das ist sehr ähnlich zu dem, was ich dachte, aber es wird nur richtig funktionieren, wenn der Puffer nicht ungespeicherte Änderungen hat. Ich dachte, ich würde ein assoziiertes Array von Puffer SHA1s (oder MD5 oder was auch immer billig genug ist, um im laufenden Betrieb zu berechnen und robust genug gegen Kollisionen) und aktualisieren, wenn eine neue Datei besucht wird oder wenn ich eine Datei speichern. Wenn die Datei mit dem aktualisierten Zeitstempel denselben Hashwert hat, ist die Warnung nicht erforderlich. – tripleee
Ja, es ist genau so, wie Sie es beschrieben haben und hat diesen unbehandelten Fall. Aber es ist genug für mich, weil ich die Gewohnheit habe, oft Puffer zu sparen. – doublep
@doublep du bist mein Held! – EoghanM
In meinem Fall wollte ich:
(setq revert-without-query '(".*"))
Dokumentation für revert-without-query
:
Specify which files should be reverted without query.
The value is a list of regular expressions.
If the file name matches one of these regular expressions,
then ‘revert-buffer’ reverts the file without querying
if the file has changed on disk and you have not edited the buffer.
- 1. Wie Fransen in Emacs deaktivieren?
- 2. Wie kann ich die Dateigröße "Größe auf Platte" abfragen?
- 3. Wie kann ich den automatischen Füllmodus in Emacs deaktivieren?
- 4. Speichern NSMutableArray auf Platte
- 5. wie vc-git in GNU Emacs deaktivieren?
- 6. Emacs deaktivieren * Nachrichten * Puffer
- 7. MJPEG-Stream auf Platte schreiben
- 8. Wie Emacs Schlechte Auswahl Auto-Kopien deaktivieren
- 9. Wie kann man UITextViews Scroll vollständig deaktivieren?
- 10. Wie zu deaktivieren X einfügen in Emacs
- 11. Array welche Seiten auf Platte
- 12. Wie man Popup auf Emacs zeigt?
- 13. Wie kann Emacs die TAGS-Datei automatisch neu laden?
- 14. Speicherfehler beim Beizen eines Datenrahmens auf Platte
- 15. Wie kann man jackson SerializationFeature.WRAP_ROOT_VALUE deaktivieren/aktivieren?
- 16. Wie kann man automatische Guard-Tests deaktivieren?
- 17. Wie kann man die "runde Klammer" deaktivieren?
- 18. Speichern einer In-Memory-Datenbank auf Platte
- 19. Wie sieht man die Kodierung der Datei in Emacs?
- 20. Wie deaktiviert man fett (Schriftgewicht) global in Emacs?
- 21. Wie zeichnet man einen RTSP-Stream mit net7mma auf Platte auf?
- 22. MVC-Muster und Dateien auf Platte schreiben
- 23. Derby/JavaDB Zeichencodierung - Größe auf Platte
- 24. Emacs: Thema Hintergrundfarbe im Terminal deaktivieren
- 25. Emacs deaktivieren Maus-1 in dired
- 26. was ist gut setAudioEncodingBitRate auf Platte Stimme
- 27. ActiveMQ persistieren nur bei Bedarf auf Platte
- 28. Wie läuft man Schläger in Emacs?
- 29. Wie ändert man das Puffercodierungssystem in Emacs?
- 30. htaccess-Datei selbst geändert
Das kommt eine Menge, wenn Emacs in VMWare und editting Dateien in/mnt/hgfs (links laufen Maschinenordner zu hosten). Die Uhr von VMWare ist nicht mehr mit dem Host synchronisiert - gelegentlich können Sie sogar das Ergebnis der Zeit sehen, die Systemaufrufe zeitlich rückwärts springen. Also, ... ist es möglich, die Prüfung nur zu deaktivieren, wenn Dateien in einem bestimmten Verzeichnis bearbeitet werden? (z. B./mnt/hgfs?) – user48956
Diese Problemumgehung wird auch benötigt, wenn Emacs unter Windows über Parallels unter OSX verwendet wird, um Dateien auf dem nativen/Host-OSX zu ändern. Zusätzlich zum Ändern von 'ask-user-about-suppression-threat' habe ich auch' basic-save-buffer' mit 'defalias' und einer neuen Funktion modifiziert, die folgendes weglässt/entfernt:' (oder (verify-visited-file- modtime (current-buffer)) (nicht (file-exists-p buffer-file-name)) (ja-oder-nein-p (Format "% s hat sich seit dem Besuch geändert oder gespeichert. Trotzdem speichern?" (Dateiname -nondirectory buffer-file-name))) (user-error "Speichern nicht bestätigt")) '. – lawlist
Emacs sollte wirklich überprüfen, dass sich der Inhalt der Datei geändert hat und nicht nur die Zeitstempel. Dies passiert jedes Mal, wenn ich vorübergehend die git branches umschalte und zurück wechsle (oder git stash save/pop). * Edit * habe gerade @doubleps Antwort entdeckt – EoghanM