контекст
Когда emacs обнаруживает, что файл был изменен вне буфера редактирования.
Наблюдаемый
Emacs спросит:
изменено некоторое имя файла на диске; действительно редактировать буфер? (y, n, r или Ch)
(Между прочим, иногда это происходит, даже когда нет реальных изменений, например, удаленного файла на сервере с измененными часами, но вопрос интересен во всех случаях.)
Хотела
Emacs спросит:
изменено некоторое имя файла на диске; действительно редактировать буфер? (y, n, r, d или Ch)
Нажатие d
покажет разницу между версиями, например, ediff-current-file
которая позволяет интерактивно просматривать различия.
Дополнительная информация
Это было бы аналогично тому, что делает управление пакетами Debian, когда обнаруживает, что локально настроенный файл конфигурации обновляется более новой версией его собственного пакета. Пример см. В разделе Доступна новая версия файла конфигурации / etc / default / grub, но установленная в настоящее время версия была изменена локально - Unix & Linux Stack Exchange
Поиск, прежде чем спросить
Я обычно нахожу свой путь к решениям (например, emacsclient - из внешнего скрипта откройте файл и запустите какое-нибудь простое выражение, независимо от того, запущен emacs или нет - Emacs Stack Exchange ), но после поиска по этому вопросу я не смог найти какое-либо ранее существующее решение.
Я бы подумал о том, чтобы настроить это сам, но я не достаточно опытен во внутренностях emacs-lisp и emacs.
Эскиз решения
- Нажатие
C-g
затем «Mx ediff-current-file» делает работу за счет нескольких нажатий клавиш. - Целью здесь будет запускать
ediff-current-file
нажатие одной клавиши в приведенной выше подсказке.
источник
Ответы:
grepping для "действительно редактировать буфер" в источнике emacs Я нашел функцию
ask-user-about-supersession-threat
в файлеuserlock.el
.Кажется простым добавить
d
выбор для звонкаediff-current-file
. Я не проверял это, хотя (правки, отмеченные;;-
комментариями).источник