Skip to content

Commit

Permalink
git-gui: Elide CRs appearing in diff output from display.
Browse files Browse the repository at this point in the history
If we are displaying a diff for a DOS-style (CRLF) formatted file then
the Tk text widget would normally show the CR at the end of every line;
in most fonts this will come out as a square box.  Rather than showing
this character we'll tag it with a tag which forces the character to
be elided away, so its not displayed.  However since the character is
still within the text buffer we can still obtain it and supply it over
to `git apply` when staging or unstaging an individual hunk, ensuring
that the file contents is always fully preserved as-is.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
  • Loading branch information
Shawn O. Pearce committed Jan 25, 2007
1 parent a25c518 commit 30b14ed
Showing 1 changed file with 4 additions and 0 deletions.
4 changes: 4 additions & 0 deletions git-gui.sh
Original file line number Diff line number Diff line change
Expand Up @@ -793,6 +793,9 @@ proc read_diff {fd} {
}
}
$ui_diff insert end $line $tags
if {[string index $line end] eq "\r"} {
$ui_diff tag add d_cr {end - 2c}
}
$ui_diff insert end "\n" $tags
}
$ui_diff conf -state disabled
Expand Down Expand Up @@ -4304,6 +4307,7 @@ pack $ui_diff -side left -fill both -expand 1
pack .vpane.lower.diff.header -side top -fill x
pack .vpane.lower.diff.body -side bottom -fill both -expand 1

$ui_diff tag conf d_cr -elide true
$ui_diff tag conf d_@ -foreground blue -font font_diffbold
$ui_diff tag conf d_+ -foreground {#00a000}
$ui_diff tag conf d_- -foreground red
Expand Down

0 comments on commit 30b14ed

Please sign in to comment.