On Sun, Oct 22, 2017 at 08:27:20AM -0400, Jason Pyeron wrote: > > ESC (for color) > > + if ($line =~ s/[\000-\011\013-\032\034-\037]/?/g) { > > What about CR [0x0D] ? I assumed that CR was one of the things we'd want to avoid (and it was in fact what I used to test this). E.g., try: echo base >file git add file printf 'foo\r+bar\n' >file Running through "less" shows something like: diff --git a/file b/file index df967b9..5b6ee80 100644 --- a/file +++ b/file @@ -1 +1 @@ -base +foo^M+bar but "git add -p" shows: $ git add -p diff --git a/file b/file index df967b9..5b6ee80 100644 --- a/file +++ b/file @@ -1 +1 @@ -base +bar Stage this hunk [y,n,q,a,d,/,e,?]? For systems where CRLF is the native line ending, we'd still expect to see only LFs here when line-ending conversion is on (since the diff shows the canonical in-repo form). For files where the CRs must remain for some reason, they'd show as a "?" at the end. The "^M" shown by "less" is a bit more informative. If we really do want to pursue this direction, it might make sense to use more descriptive placeholders. -Peff