Kontekst
Gdy emacs wykryje, że plik został zmieniony poza buforem edycji.
Zauważony
emacs zapyta:
nazwa pliku zmieniona na dysku; naprawdę edytować bufor? (y, n, r lub Ch)
(Nawiasem mówiąc, czasami zdarza się to nawet wtedy, gdy nie ma rzeczywistej zmiany, np. Plik zdalny na serwerze z dryfowanym zegarem, ale pytanie jest interesujące we wszystkich przypadkach.)
Chciałem
emacs zapyta:
nazwa pliku zmieniona na dysku; naprawdę edytować bufor? (y, n, r, d lub Ch)
Naciśnięcie d
pokazałoby różnicę między wersjami, np. ediff-current-file
Co pozwala na interaktywne przejście różnic.
Dodatkowe informacje
Byłoby to podobne do tego, co robi zarządzanie pakietami Debiana, gdy wykryje, że lokalnie dostosowany plik konfiguracyjny jest aktualizowany przez nowszą wersję własnego pakietu. Na przykład patrz Nowa wersja pliku konfiguracyjnego / etc / default / grub jest dostępna, ale obecnie zainstalowana wersja została zmodyfikowana lokalnie - Unix i Linux Stack Exchange
Wyszukaj zanim zapytasz
Zwykle znajduję drogę do rozwiązań (np. Emacsclient - z zewnętrznego skryptu otwórz plik i uruchom proste wyrażenie, niezależnie od tego, czy emacs już działa, czy nie - Emacs Stack Exchange ), ale po wyszukaniu tego nie mogłem znaleźć żadnego wcześniej istniejącego rozwiązania.
Zastanowiłbym się nad tym, ale nie jestem wystarczająco biegły w emacs-lisp i emacs internals.
Szkic rozwiązania
- Naciśnięcie
C-g
następnie „Mx ediff-current-file” wykonuje zadanie, kosztem niektórych naciśnięć klawiszy. - Celem byłoby tutaj
ediff-current-file
naciśnięcie jednego klawisza w powyższym monicie.
źródło
Odpowiedzi:
grepping dla „naprawdę edytuj bufor” w źródle emacsa Znalazłem funkcję
ask-user-about-supersession-threat
w plikuuserlock.el
.Wydaje się proste, aby dodać
d
opcję dzwonieniaediff-current-file
. Jednak nie testowałem tego szeroko (zmiany oznaczone;;-
komentarzami).źródło