Re: BUG: CR marker ^M doesn't show up in '-' lines of diffs when the ending of the removed line is CR+LF
- From
Johannes Sixt <j6t@kdbg.org>
- Date
- Nov 24, 2018, 22:07 UTC
- Message-ID
- <80ffe850-b966-a37b-09bd-44e04d769944@kdbg.org>
- In-Reply-To
- <edadf857-2d4b-f058-5e07-286afb312901@googlemail.com>
Am 24.11.18 um 15:51 schrieb Frank Schäfer:
Show 22 quoted lines
> Am 23.11.18 um 22:47 schrieb Johannes Sixt: >> Am 23.11.18 um 19:19 schrieb Frank Schäfer: >>> The CR marker ^M doesn't show up in '-' lines of diffs when the ending >>> of the removed line is CR+LF. >>> It shows up as expected in '-' lines when the ending of the removed line >>> is CR only. >>> It also always shows up as expected in '+' lines. >> >> Is your repository configured to (1) highlight whitespace errors in >> diff output and (2) to leave CRLF alone in text files? > I'm using the default configuration, so whitespace is set to > trailing-space, but cr-at-eol is not set. > >> >> If so, then it is just a side-effect of this combination, an illusion, >> so to say: The CR in the CRLF combo is trailing whitespace. The 'git >> diff' marks it by inserting an escape sequence to switch the color >> before ^M and another escape sequence to reset to color after ^M. This >> breaks the CRLF combination apart, so that the pager does not process >> it as a combined CRLF sequence; it displays the lone CR as ^M. > Urghh... so that needs to be fixed. > Why does it work correctly with '+' lines ?
I don't think that there is anything to fix. If you have a file with CRLF in it, but you did not declare to Git that CRLF is the expected end-of-line indicator, then the CR *is* trailing whitespace (because the line ends at LF), and 'git diff' highlights it.
-- Hannes