mirror of
https://github.com/git/git.git
synced 2024-10-29 21:37:53 +01:00
Fix display of mode changes in details pane.
Also simplified the parsing of the git-diff-tree -p output and got rid of the unused 'seenfile' variable.
This commit is contained in:
parent
e2ed4324b0
commit
4f2c2642ca
1 changed files with 13 additions and 33 deletions
46
gitk
46
gitk
|
@ -1602,7 +1602,7 @@ proc selectline {l} {
|
|||
global lineid linehtag linentag linedtag
|
||||
global canvy0 linespc parents nparents
|
||||
global cflist currentid sha1entry
|
||||
global commentend seenfile idtags
|
||||
global commentend idtags
|
||||
$canv delete hover
|
||||
if {![info exists lineid($l)] || ![info exists linehtag($l)]} return
|
||||
$canv delete secsel
|
||||
|
@ -1689,12 +1689,11 @@ proc selectline {l} {
|
|||
|
||||
proc startdiff {id vs} {
|
||||
global diffpending diffpindex
|
||||
global diffindex difffilestart seenfile
|
||||
global diffindex difffilestart
|
||||
global curdifftag curtagstart
|
||||
|
||||
set diffpending $vs
|
||||
set diffpindex 0
|
||||
catch {unset seenfile}
|
||||
set diffindex 0
|
||||
catch {unset difffilestart}
|
||||
set curdifftag Comments
|
||||
|
@ -1705,8 +1704,8 @@ proc startdiff {id vs} {
|
|||
proc contdiff {ids} {
|
||||
global treediffs diffids treepending
|
||||
|
||||
set diffids $ids
|
||||
if {![info exists treediffs($ids)]} {
|
||||
set diffids $ids
|
||||
if {![info exists treepending]} {
|
||||
gettreediffs $ids
|
||||
}
|
||||
|
@ -1768,7 +1767,7 @@ proc gettreediffline {gdtf ids} {
|
|||
|
||||
proc getblobdiffs {ids} {
|
||||
global diffopts blobdifffd diffids env
|
||||
global nextupdate
|
||||
global nextupdate diffinhdr
|
||||
|
||||
set id [lindex $ids 0]
|
||||
set p [lindex $ids 1]
|
||||
|
@ -1777,6 +1776,7 @@ proc getblobdiffs {ids} {
|
|||
puts "error getting diffs: $err"
|
||||
return
|
||||
}
|
||||
set diffinhdr 0
|
||||
fconfigure $bdf -blocking 0
|
||||
set blobdifffd($ids) $bdf
|
||||
fileevent $bdf readable [list getblobdiffline $bdf $ids]
|
||||
|
@ -1784,9 +1784,9 @@ proc getblobdiffs {ids} {
|
|||
}
|
||||
|
||||
proc getblobdiffline {bdf ids} {
|
||||
global diffids blobdifffd ctext curdifftag curtagstart seenfile
|
||||
global diffids blobdifffd ctext curdifftag curtagstart
|
||||
global diffnexthead diffnextnote diffindex difffilestart
|
||||
global nextupdate diffpending diffpindex
|
||||
global nextupdate diffpending diffpindex diffinhdr
|
||||
|
||||
set n [gets $bdf line]
|
||||
if {$n < 0} {
|
||||
|
@ -1794,7 +1794,6 @@ proc getblobdiffline {bdf ids} {
|
|||
close $bdf
|
||||
if {$ids == $diffids && $bdf == $blobdifffd($ids)} {
|
||||
$ctext tag add $curdifftag $curtagstart end
|
||||
set seenfile($curdifftag) 1
|
||||
if {[incr diffpindex] < [llength $diffpending]} {
|
||||
set id [lindex $ids 0]
|
||||
set p [lindex $diffpending $diffpindex]
|
||||
|
@ -1808,18 +1807,12 @@ proc getblobdiffline {bdf ids} {
|
|||
return
|
||||
}
|
||||
$ctext conf -state normal
|
||||
if {[regexp {^---[ \t]+([^/])*/(.*)} $line match s1 fname]} {
|
||||
if {[regexp {^diff --git a/(.*) b/} $line match fname]} {
|
||||
# start of a new file
|
||||
$ctext insert end "\n"
|
||||
$ctext tag add $curdifftag $curtagstart end
|
||||
set seenfile($curdifftag) 1
|
||||
set curtagstart [$ctext index "end - 1c"]
|
||||
set header $fname
|
||||
if {[info exists diffnexthead]} {
|
||||
set fname $diffnexthead
|
||||
set header "$diffnexthead ($diffnextnote)"
|
||||
unset diffnexthead
|
||||
}
|
||||
set here [$ctext index "end - 1c"]
|
||||
set difffilestart($diffindex) $here
|
||||
incr diffindex
|
||||
|
@ -1831,27 +1824,15 @@ proc getblobdiffline {bdf ids} {
|
|||
set l [expr {(78 - [string length $header]) / 2}]
|
||||
set pad [string range "----------------------------------------" 1 $l]
|
||||
$ctext insert end "$pad $header $pad\n" filesep
|
||||
} elseif {[string range $line 0 2] == "+++"} {
|
||||
# no need to do anything with this
|
||||
} elseif {[regexp {^Created: (.*) \((mode: *[0-7]*)\)} $line match fn m]} {
|
||||
set diffnexthead $fn
|
||||
set diffnextnote "created, mode $m"
|
||||
} elseif {[string range $line 0 8] == "Deleted: "} {
|
||||
set diffnexthead [string range $line 9 end]
|
||||
set diffnextnote "deleted"
|
||||
} elseif {[regexp {^diff --git a/(.*) b/} $line match fn]} {
|
||||
# save the filename in case the next thing is "new file mode ..."
|
||||
set diffnexthead $fn
|
||||
set diffnextnote "modified"
|
||||
} elseif {[regexp {^new file mode ([0-7]+)} $line match m]} {
|
||||
set diffnextnote "new file, mode $m"
|
||||
} elseif {[string range $line 0 11] == "deleted file"} {
|
||||
set diffnextnote "deleted"
|
||||
set diffinhdr 1
|
||||
} elseif {[regexp {^(---|\+\+\+)} $line]} {
|
||||
set diffinhdr 0
|
||||
} elseif {[regexp {^@@ -([0-9]+),([0-9]+) \+([0-9]+),([0-9]+) @@(.*)} \
|
||||
$line match f1l f1c f2l f2c rest]} {
|
||||
$ctext insert end "\t" hunksep
|
||||
$ctext insert end " $f1l " d0 " $f2l " d1
|
||||
$ctext insert end " $rest \n" hunksep
|
||||
set diffinhdr 0
|
||||
} else {
|
||||
set x [string range $line 0 0]
|
||||
if {$x == "-" || $x == "+"} {
|
||||
|
@ -1861,7 +1842,7 @@ proc getblobdiffline {bdf ids} {
|
|||
} elseif {$x == " "} {
|
||||
set line [string range $line 1 end]
|
||||
$ctext insert end "$line\n"
|
||||
} elseif {$x == "\\"} {
|
||||
} elseif {$diffinhdr || $x == "\\"} {
|
||||
# e.g. "\ No newline at end of file"
|
||||
$ctext insert end "$line\n" filesep
|
||||
} else {
|
||||
|
@ -1869,7 +1850,6 @@ proc getblobdiffline {bdf ids} {
|
|||
if {$curdifftag != "Comments"} {
|
||||
$ctext insert end "\n"
|
||||
$ctext tag add $curdifftag $curtagstart end
|
||||
set seenfile($curdifftag) 1
|
||||
set curtagstart [$ctext index "end - 1c"]
|
||||
set curdifftag Comments
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue