Given a modified buffer, how can I diff it with the file backing it on disk to see what I've changed?
3 Answers
You want the command M-x diff-buffer-with-file. See the manual:
diff-buffer-with-file is an interactive autoloaded compiled Lisp function in `diff.el'.
(diff-buffer-with-file &optional BUFFER)
View the differences between BUFFER and its associated file. This requires the external program
diff
to be in yourexec-path
.
You may also be interested in highlight-changes-mode
which automatically and interactively highlights changes made to the buffer after it was enabled.
-
Along the lines of
highlight-changes-mode
there's also thediff-hl
package in GNU ELPA.– StefanCommented Jan 17, 2015 at 4:00 -
1Yes, but right now it only works to show diffs between the (saved) buffer and a
vc
revision. I worked on diffing the buffer (as opposed to its backing file) in diff-hl #33, but it's blocked on a bug in the Emacs core. Commented Jan 17, 2015 at 5:27 -
-
-
1
Command 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.
-
5
ediff-current-file
has some benefits overdiff-buffer-with-file
if you want interactive review of changes rather than a plain diff. The interactive review even allows to selectively revert some parts, in case you finally don't want to save them. See also emacs.stackexchange.com/a/3778/10614 for a more complete answer. Commented Dec 29, 2015 at 11:20
A simple way to achieve this is with the package line-reminder
, which shows unsaved and saved changes in current session. You can enable it globally with
(global-line-reminder-mode t)
or on a per-buffer basis with
(line-reminder-mode t)