Как я могу увидеть изменения, внесенные в измененный буфер с момента последнего сохранения?

19

С учетом измененного буфера, как я могу сравнить его с файлом, сохраняющим его на диске, чтобы увидеть, что я изменил?

nosefrog
источник
На unix.stackexchange.com был такой же вопрос , но с меньшим количеством ответов.
imz - Иван Захарящев

Ответы:

27

Вы хотите команду M-x diff-buffer-with-file. Смотрите руководство:

diff-buffer-with-file - это интерактивная скомпилированная функция Lisp с автозагрузкой в ​​diff.el.

(diff-buffer-with-file &optional BUFFER)

Просмотрите различия между BUFFER и связанным с ним файлом. Это требует, чтобы внешняя программа diffбыла в вашей exec-path.


Вас также может заинтересовать, чтобы highlight-changes-modeавтоматически и в интерактивном режиме выделялись изменения, сделанные в буфере после его включения.

PythonNut
источник
Кроме того, highlight-changes-modeесть diff-hlпакет в GNU ELPA.
Стефан
Да, но сейчас он работает только для отображения различий между (сохраненным) буфером и vcревизией. Я работал над диффузией буфера (в отличие от его файла резервной копии) в diff-hl # 33 , но он заблокирован из-за ошибки в ядре Emacs.
PythonNut
У вас есть номер сообщения об ошибке для этого?
Стефан
@ Стефан, я еще не дошел до этого.
PythonNut
Исправили (наверное) давным-давно: работает в 2019 году! :)
Мисти
13

Команда ediff-current-file:

ediff-current-file is an interactive autoloaded Lisp function in
`ediff.el'.

(ediff-current-file)

Start ediff between current buffer and its file on disk.
This command can be used instead of `revert-buffer'.  If there is
nothing to revert then this command fails.
Нарисовалась
источник
1
ediff-current-fileимеет некоторые преимущества, diff-buffer-with-fileесли вы хотите интерактивный обзор изменений, а не простой дифференциал. Интерактивный обзор даже позволяет выборочно вернуть некоторые детали, если вы, наконец, не хотите их сохранять. См. Также emacs.stackexchange.com/a/3778/10614 для более полного ответа.
Стефан Гурихон