GNU bug report logs -
#12831
24.2.50; diff-remove-trailing-whitespace is broken
Previous Next
Reported by: Chong Yidong <cyd <at> gnu.org>
Date: Thu, 8 Nov 2012 10:34:01 UTC
Severity: normal
Found in version 24.2.50
Done: Chong Yidong <cyd <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Your message dated Fri, 09 Nov 2012 01:33:30 +0800
with message-id <87k3tw0zkl.fsf <at> gnu.org>
and subject line Re: bug#12831: 24.2.50; diff-remove-trailing-whitespace is broken
has caused the debbugs.gnu.org bug report #12831,
regarding 24.2.50; diff-remove-trailing-whitespace is broken
to be marked as done.
(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)
--
12831: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=12831
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
The command diff-remove-trailing-whitespace, newly introduced for Emacs
24.3, is broken. AFAICT, it can't easily be made to work right.
1) diff-remove-trailing-whitespace is confused about the order of files
in the diff:
echo "a" > oldfile
echo "b " > newfile
emacs -Q
M-x diff RET newfile RET oldfile RET
C-x o
M-x diff-remove-trailing-whitespace RET
=> no trailing whitespace fixes needed
(Note that the new file is by convention the FIRST argument to M-x
diff and the SECOND argument to the `diff' command.) This can be
fixed by replacing (diff-find-source-location t t) in the definition
of diff-remove-trailing-whitespace. But we hit the second problem:
2) After the trailing whitespaces are fixed in the underlying files, the
trailing whitespace still remains in the *Diff* buffer. The basic
problem is that the algorithm of this command is too simplistic: it
looks for trailing whitespace in the Diff buffer, jumps to the
corresponding location given by diff-find-source-location, looks for
trailing whitespace on that line, and deletes it.
This simple algorithm can lead to serious mistakes. There's no
attempt to check if the point in the Diff buffer corresponds to a
"before" or "after" line (nothing ought to be done for the former,
but the existing command is happy to use it), or whether the
"trailing whitespace" that it found is merely the space which is
customarily inserted after "!" in context diffs.
Unless someone comes up with a version of this command that works right,
I think we should go back to the drawing board on this, and remove it
from Emacs 24.3.
[Message part 3 (message/rfc822, inline)]
> The command diff-remove-trailing-whitespace, newly introduced for Emacs
> 24.3, is broken.
I have rewritten the command to make it work properly, and renamed it to
diff-delete-trailing-whitespace (for consistency with the existing
delete-trailing-whitespace command).
This bug report was last modified 12 years and 282 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.