From: Johannes Sixt Date: Sat, 24 Nov 2018 22:07:26 GMT Subject: Re: BUG: CR marker ^M doesn't show up in '-' lines of diffs when the ending of the removed line is CR+LF Message-ID: <80ffe850-b966-a37b-09bd-44e04d769944@kdbg.org> In-Reply-To: Am 24.11.18 um 15:51 schrieb Frank Schäfer: > 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