Subject: bug#17388: 24.4.50; REGRESSION: Ediff - 1) wrong face, 2) incorrect diffing

From: Drew Adams <[email-masked]>
Date: Fri, 2 May 2014 20:11:54 -0700 (PDT)

> >> See the attached screenshot.  The first diff shown, with the gray
> >> highlighting, shows the regression.
> 
> I installed the patch below which should fix those problems, thanks.
> 
> >> 2. The fine diffs are also not correct.  See the same screenshot.  For
> >> the first diff, "advertise" and "d-signature-table" should be
> >> highlighted the same as "(defvar " and ")", and for the second diff,
> >> "fil" and "s-alist" should be highlighted the same as "(defvar " and
> >> ")".  These are not differences.
> 
> You mean you want finer granularity of fine diffs.

Not at all.  How do you get that from what I said?

There should be EITHER, (a) as previously, NO fine diffs shown for
other than the current diff OR (b) CORRECT (helpful) fine diffs
shown for the non-current diffs.

In the text you quoted I spoke only of (a): return to the previous
behavior of NOT showing fine diffs except for the current diff.

> >> still a regression wrt prior Emacs versions.  With Emacs 24.3, for
> >> instance (using the same Cygwin `diff'), there is no fine diff shown
> >> here.  Instead, the diff, which is shown only as a main diff, is between
> >> "file-local-variables-alist" and "filxxxxxxxxxxxxxxxxxxxxxs-alist".
> >> Which is correct.
> 
> I don't see that here with Debian's Emacs-24.3, and neither with 23.4.

It's not very clear from the above what you see and do not see,
especially since you apparently did not understand the description.

Do you see a bug for Emacs 24.3 or 23.4?  There is none that I see -
the behavior is as I described it.  No fine diffs are shown for the
non-current diff highlighting with Emacs 24.3 or 23.4.

Are you sure you are looking at the non-current diffs (the gray ones)?
That's where both bugs are: (1) wrong face (`default'), (2) incorrect
fine diffing.

I just repeated everything, again starting from emacs -Q with the
above recipe, using 24.3.  That's 5 times now I've done it (2x for
24.4, 24.3, 1x for 23.4).  Same thing - just what I described originally.

> The behavior you describe seems to correspond to ediff-word-mode, IIRC,
> so I assume this is not really a bug/regression but just a pilot error
> on your part.  If not, feel free to re-open this bug report, providing
> more details about the problem.

I can no longer reopen bugs - Glenn apparently banned me some time ago.

This has nothing to do with `ediff-word-mode' or pilot error.
What I showed and described was already from emacs -Q.  And S. Berman
had no trouble following the recipe and confirming the behavior.
But let me try again.

emacs -Q

Load file `cygwin-mount.el', then `setup-cygwin.el' (from Emacs Wiki).
Cygwin `diff' is apparently irrelevant, but that's what I used anyway.

In foo.el type some text. E.g.:

(defvar advertised-signature-table)
(defvar dir-local-variables-alist)
(defvar dir-locals-file)
(defvar file-local-variables-alist)
(defvar Info-indexed-nodes)

Put the same text in bar.el.  Then modify it a bit in bar.el:

(defvar advertiseyyyyyyyyyyyd-signature-table)
(defvar dir-local-variables-alist)
(defvar dir-locals-file)
(defvar filxxxxxxxxxxxxxxs-alist)
(defvar Info-indexed-nodes)

M-x ediff-buffers ; for foo.el and bar.el

Cycle among the two diffs.  You will see the screenshot I sent.
Now read the bug report as to what is wrong with what you see,
if it is still not clear why it is a bug (2 bugs).

Stephen Berman's confirmation indicates that Cygwin `diff' is
irrelevant:

> I see both of these problematic highlightings on GNU/Linux builds from
> both the trunk (bzr 117042) and the emacs-24 branch (bzr 117049).