19

Given a modified buffer, how can I diff it with the file backing it on disk to see what I've changed?

27

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 your exec-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 the diff-hl package in GNU ELPA. – Stefan Jan 17 '15 at 4:00
  • Yes, 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. – PythonNut Jan 17 '15 at 5:27
  • Do you have a bug-report number for that? – Stefan Jan 17 '15 at 14:01
  • @Stefan, I haven't gotten around to it yet. – PythonNut Jan 18 '15 at 5:23
  • Got fixed a (probably) long time ago: works in 2019! :) – mistige Jul 27 at 10:26
13

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.
  • 1
    ediff-current-file has some benefits over diff-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. – Stéphane Gourichon Dec 29 '15 at 11:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.