Re: BUG: CR marker ^M doesn't show up in '-' lines of diffs when the ending of the removed line is CR+LF
- From
- Frank Schäfer <fschaefer.oss@googlemail.com>
- Date
- Nov 24, 2018, 14:51 UTC
- Message-ID
- <edadf857-2d4b-f058-5e07-286afb312901@googlemail.com>
- In-Reply-To
- <4dca3f64-4851-6d48-8266-dfe55f597739@kdbg.org>
Am 23.11.18 um 22:47 schrieb Johannes Sixt:
Show 9 quoted lines
> 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.
Show 7 quoted lines
> > 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 ?
Show 12 quoted lines
> > It is easy to achieve the opposite effect, i.e., that ^M is not > displayed. For example with these lines in .git/info/attributes or > .gitattributes: > > *.cpp > whitespace=trailing-space,cr-at-eol,indent-with-non-tab,space-before-tab > *.h > whitespace=trailing-space,cr-at-eol,indent-with-non-tab,space-before-tab > > Note the cr-at-eol. (There may be shorter versions to achieve a > similar effect.)
With cr-at-eol, ^M indeed doesn't show up anymore in '+' lines with CR+LF line endings. That's correct/expected. '-' lines with CR+LF line endings are displayed correctly in this case, too. However, ^M still shows up in '+' and '-' lines with CR line endings.
Hmm... is CR-only line termination supported at all ? E.g. 'eol' can be set to 'lf' or 'crlf' but not 'cr'...
Regards, Frank
> > -- Hannes