X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=gitk;h=2db187c017fab2358eaa4a782d0f599437c90d0e;hb=e2ed4324b0b99fd3cb93bd14b6e1599c6fcbfe23;hp=e190ce6e6ea0c7e2c3f966a329b5d209aa217fb9;hpb=14c9dbd69bfed89011f99278c7f293b0d186ffc7;p=git.git diff --git a/gitk b/gitk index e190ce6e..2db187c0 100755 --- a/gitk +++ b/gitk @@ -1684,13 +1684,25 @@ proc selectline {l} { $cflist delete 0 end $cflist insert end "Comments" - if {$nparents($id) == 1} { - startdiff [concat $id $parents($id)] - } + startdiff $id $parents($id) +} + +proc startdiff {id vs} { + global diffpending diffpindex + global diffindex difffilestart seenfile + global curdifftag curtagstart + + set diffpending $vs + set diffpindex 0 catch {unset seenfile} + set diffindex 0 + catch {unset difffilestart} + set curdifftag Comments + set curtagstart 0.0 + contdiff [list $id [lindex $vs 0]] } -proc startdiff {ids} { +proc contdiff {ids} { global treediffs diffids treepending if {![info exists treediffs($ids)]} { @@ -1712,9 +1724,13 @@ proc selnextline {dir} { } proc addtocflist {ids} { - global treediffs cflist + global treediffs cflist diffpindex + + set colors {black blue green red cyan magenta} + set color [lindex $colors [expr {$diffpindex % [llength $colors]}]] foreach f $treediffs($ids) { $cflist insert end $f + $cflist itemconf end -foreground $color } getblobdiffs $ids } @@ -1741,7 +1757,6 @@ proc gettreediffline {gdtf ids} { if {$ids != $diffids} { gettreediffs $diffids } else { - unset diffids addtocflist $ids } } @@ -1752,8 +1767,8 @@ proc gettreediffline {gdtf ids} { } proc getblobdiffs {ids} { - global diffopts blobdifffd blobdiffids env curdifftag curtagstart - global diffindex difffilestart nextupdate + global diffopts blobdifffd diffids env + global nextupdate set id [lindex $ids 0] set p [lindex $ids 1] @@ -1763,33 +1778,33 @@ proc getblobdiffs {ids} { return } fconfigure $bdf -blocking 0 - set blobdiffids $ids set blobdifffd($ids) $bdf - set curdifftag Comments - set curtagstart 0.0 - set diffindex 0 - catch {unset difffilestart} - fileevent $bdf readable "getblobdiffline $bdf {$ids}" + fileevent $bdf readable [list getblobdiffline $bdf $ids] set nextupdate [expr {[clock clicks -milliseconds] + 100}] } proc getblobdiffline {bdf ids} { - global blobdiffids blobdifffd ctext curdifftag curtagstart seenfile + global diffids blobdifffd ctext curdifftag curtagstart seenfile global diffnexthead diffnextnote diffindex difffilestart - global nextupdate + global nextupdate diffpending diffpindex set n [gets $bdf line] if {$n < 0} { if {[eof $bdf]} { close $bdf - if {$ids == $blobdiffids && $bdf == $blobdifffd($ids)} { + 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] + contdiff [list $id $p] + } } } return } - if {$ids != $blobdiffids || $bdf != $blobdifffd($ids)} { + if {$ids != $diffids || $bdf != $blobdifffd($ids)} { return } $ctext conf -state normal @@ -1882,7 +1897,7 @@ proc nextfile {} { } proc listboxsel {} { - global ctext cflist currentid treediffs seenfile + global ctext cflist currentid treediffs if {![info exists currentid]} return set sel [lsort [$cflist curselection]] if {$sel eq {}} return