Kontext
Wenn emacs erkennt, dass eine Datei außerhalb eines Bearbeitungspuffers geändert wurde.
Beobachteten
Emacs werden fragen:
Ein Dateiname wurde auf der Festplatte geändert. Puffer wirklich bearbeiten? (y, n, r oder Ch)
(Übrigens passiert es manchmal sogar, wenn es keine tatsächliche Änderung gibt, z. B. eine entfernte Datei auf einem Server mit verschobener Uhr, aber die Frage ist in allen Fällen interessant.)
Gewünscht
Emacs würde fragen:
Ein Dateiname wurde auf der Festplatte geändert. Puffer wirklich bearbeiten? (y, n, r, d oder Ch)
Durch Drücken von wird d
der Unterschied zwischen den Versionen angezeigt, z. B. ediff-current-file
wodurch die Unterschiede interaktiv ausgeführt werden können.
Zusätzliche Information
Dies ähnelt der Verwaltung von Debian-Paketen, wenn festgestellt wird, dass eine lokal angepasste Konfigurationsdatei von einer neueren Version ihres eigenen Pakets aktualisiert wird. Ein Beispiel finden Sie unter Eine neue Version der Konfigurationsdatei / etc / default / grub ist verfügbar, die derzeit installierte Version wurde jedoch lokal geändert - Unix & Linux Stack Exchange
Suchen Sie, bevor Sie fragen
Normalerweise finde ich den Weg zu Lösungen (z. B. emacsclient - Öffnen Sie in einem externen Skript eine Datei und führen Sie einen einfachen Ausdruck aus, unabhängig davon, ob Emacs bereits ausgeführt werden oder nicht - Emacs Stack Exchange ), aber nachdem ich danach gesucht habe, konnte ich keine bereits vorhandene Lösung finden.
Ich würde in Betracht ziehen, dies selbst anzupassen, bin aber nicht in der Lage, Emacs-Lisp- und Emacs-Interna zu beherrschen.
Lösungsskizze
- Durch Drücken von
C-g
'Mx ediff-current-file' wird die Aufgabe auf Kosten einiger Tastenanschläge erledigt. - Das Ziel hier wäre, mit
ediff-current-file
einem Tastendruck an der obigen Eingabeaufforderung zu laufen .
quelle
Antworten:
grepping für "wirklich den Puffer bearbeiten" in der Emacs-Quelle fand ich Funktion
ask-user-about-supersession-threat
in der Dateiuserlock.el
.Es scheint unkompliziert, eine
d
Auswahl für den Anruf hinzuzufügenediff-current-file
. Ich habe dies jedoch nicht ausführlich getestet (Änderungen mit;;-
Kommentaren markiert ).quelle