Subject: Re: bug#1183: 23.0.60; ediff-buffers is broken

From: Eli Zaretskii <[email-masked]>
Date: Thu, 16 Oct 2008 22:25:25 +0200

> From: "Drew Adams" <[email-masked]>
> Date: Thu, 16 Oct 2008 11:47:11 -0700
> Cc: 
> 
> emacs -Q
>  
> Visit both the bookmark.el file from this installation (see below) and
> a copy of bookmark.el from CVS for today, 2008-10-16.
>  
> The only difference between the two files is in fact this text which
> was added to the CVS version near the end of the file, just before
> run-hooks:
>  
> (defun bookmark-unload-function ()
>   "Unload the Bookmark library."
>   (when bookmark-save-flag (bookmark-save))
>   ;; continue standard unloading
>   nil)
>  
> You can see this by using ediff in Emacs 22, 21, or 20 - or by using
> diff.
>  
> However, ediff-buffers shows the entire buffers as a single diff, and
> hitting `*' to refine that diff has no effect at all. IOW,
> ediff-buffers is now useless for seeing the differences between these
> two files.

I don't have the ``bookmark.el file from this installation'' (you
didn't attach it), so I produced it manually by copying today's
bookmark.el and then removing the function bookmark-unload-function.

With these two files, I can only reproduce this with Emacs built on
Windows from today's CVS if one of the files has Unix end-of-line
format, while the other has DOS/Windows EOL format.  Is that your
case?

If so, this is expected: Ediff on Windows invokes the `diff' program
with the --binary option (see ediff-diff-options), which makes all
lines compare not equal due to the different line endings.  You can
see this by using `diff' directly from the shell's prompt, if you pass
it the --binary option.

If both files have identical EOL format, Ediff produces the output
you'd expect.

(The reason for the --binary option is to allow comparison of buffers
and files with non-ASCII text, which IMO is a much more important
use-case than two almost identical files with different line endings.)