aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn O. Pearce <spearce@spearce.org>2007-01-29 05:33:27 -0500
committerShawn O. Pearce <spearce@spearce.org>2007-01-29 05:33:27 -0500
commit915616e4ebaedc486a2dd235e70f25ceb39b4515 (patch)
tree8d71ac1ba1e1fb25c2e92cd1d9f081230a314bf3
parent8f6c07b902b297329e63799d5332758530ec4d99 (diff)
downloadgit-915616e4ebaedc486a2dd235e70f25ceb39b4515.tar.gz
git-915616e4ebaedc486a2dd235e70f25ceb39b4515.tar.xz
git-gui: Display original filename and line number in blame.
When we annotate a file and show its line data, we're already asking for copy and movement detection (-M -C). This costs extra time, but gives extra data. Since we are asking for the extra data we really should show it to the user. Now the blame UI has two additional columns, one for the original filename (in the case of a move/copy between files) and one for the original line number of the current line of code. Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
-rwxr-xr-xgit-gui.sh34
1 files changed, 33 insertions, 1 deletions
diff --git a/git-gui.sh b/git-gui.sh
index 160309b2c..f247d40a7 100755
--- a/git-gui.sh
+++ b/git-gui.sh
@@ -3190,6 +3190,25 @@ proc show_blame {commit path} {
$w.out add $w.out.date
lappend texts $w.out.date
+ text $w.out.filename -background white -borderwidth 0 \
+ -state disabled \
+ -wrap none \
+ -height 40 \
+ -width 20 \
+ -font font_diff
+ $w.out add $w.out.filename
+ lappend texts $w.out.filename
+
+ text $w.out.origlinenumber -background white -borderwidth 0 \
+ -state disabled \
+ -wrap none \
+ -height 40 \
+ -width 5 \
+ -font font_diff
+ $w.out.origlinenumber tag conf linenumber -justify right
+ $w.out add $w.out.origlinenumber
+ lappend texts $w.out.origlinenumber
+
text $w.out.linenumber -background white -borderwidth 0 \
-state disabled \
-wrap none \
@@ -3286,7 +3305,9 @@ proc read_blame_catfile {fd w commit path texts w_lno w_file} {
}
}
-proc read_blame_incremental {fd w w_commit w_author w_date w_lno w_file} {
+proc read_blame_incremental {fd w
+ w_commit w_author w_date w_filename w_olno
+ w_lno w_file} {
global blame_status blame_data
if {![winfo exists $w_commit]} {
@@ -3297,6 +3318,8 @@ proc read_blame_incremental {fd w w_commit w_author w_date w_lno w_file} {
$w_commit conf -state normal
$w_author conf -state normal
$w_date conf -state normal
+ $w_filename conf -state normal
+ $w_olno conf -state normal
while {[gets $fd line] >= 0} {
if {[regexp {^([a-z0-9]{40}) (\d+) (\d+) (\d+)$} $line line \
@@ -3308,6 +3331,7 @@ proc read_blame_incremental {fd w w_commit w_author w_date w_lno w_file} {
} elseif {[string match {filename *} $line]} {
set n $blame_data($w,line_count)
set lno $blame_data($w,final_line)
+ set ol $blame_data($w,original_line)
set file [string range $line 9 end]
set commit $blame_data($w,commit)
set abbrev [string range $commit 0 8]
@@ -3327,14 +3351,20 @@ proc read_blame_incremental {fd w w_commit w_author w_date w_lno w_file} {
$w_commit delete $lno.0 "$lno.0 lineend"
$w_author delete $lno.0 "$lno.0 lineend"
$w_date delete $lno.0 "$lno.0 lineend"
+ $w_filename delete $lno.0 "$lno.0 lineend"
+ $w_olno delete $lno.0 "$lno.0 lineend"
$w_commit insert $lno.0 $abbrev
$w_author insert $lno.0 $author
$w_date insert $lno.0 $atime
+ $w_filename insert $lno.0 $file
+ $w_olno insert $lno.0 $ol linenumber
+
set blame_data($w,line$lno,commit) $commit
incr n -1
incr lno
+ incr ol
}
} elseif {[regexp {^([a-z-]+) (.*)$} $line line header data]} {
set blame_data($w,$blame_data($w,commit),$header) $data
@@ -3344,6 +3374,8 @@ proc read_blame_incremental {fd w w_commit w_author w_date w_lno w_file} {
$w_commit conf -state disabled
$w_author conf -state disabled
$w_date conf -state disabled
+ $w_filename conf -state disabled
+ $w_olno conf -state disabled
if {[eof $fd]} {
close $fd