Subject: Bug in ediff's treatment of whitespace (this time with ALL the attachments)

From: "Tom Breton (Tehom)" <[email-masked]>
Date: Wed, 17 Nov 2010 15:40:23 -0500

**** Explanation of the bug:

Wordwise merging in ediff doesn't handle whitespace reasonably when
merging to a blank element.  It just plops the non-blank element at the
end of whatever whitespace it ends up with, even across line breaks.

**** How it should work (IMO)

IMO it would be more correct to infer the division of whitespace from the
whitespace around the non-blank element.

**** Instructions for reproducing it

***** General orientation
Use the attached files:

    * odd-whitespace-2-file1.{abc}.txt

    * odd-whitespace-file1.{abc}.txt

I found it useful to give each set of {a,b,c} its own directory and keep
the filenames the same across directories.  I can't attach them to this
email with directory names, though.

I found this code useful in seeing this bug, so I'm including it here.  It
just starts an merge-with-ancestor with the respective files - saves time.
 It expects filenames of the form file1.{a,b,c}.txt in different
directories.

  (defun bug-ediff-merge-files-with-ancestor (dir)
     ""

     (interactive "DDirectory: ")
     (ediff-merge-files-with-ancestor
        (expand-file-name "file1.a.txt" dir)
        (expand-file-name "file1.b.txt" dir)
        (expand-file-name "file1.c.txt" dir)))

***** Explicit instructions

 * Merge file1.a.txt with file1.b.txt using ancestor file1.c.txt

 * "n" to go to first clash
 * "b" to partly merge - just so it's merging nicely and not seeing
   "<<<<<<" ">>>>>>" "#####Ancestor" etc
 * "=" to start an inferior merge
 * "a" to compare to buffer A
 * (Now in the inferior ediff)
 * "n" to go to a line that still needs to be merged to the ancestor.
   In the demo they're all of the form "Line N A".
 * "a" to try to use the version from A.
 * It doesn't merge right.  It moves "A" to another place.

Both odd-whitespace-* and odd-whitespace-2-* exhibit similar unexpected
behavior.

	Tom Breton (Tehom)