diff options
| author | Paul Mackerras <paulus@samba.org> | 2008-01-02 21:44:06 +1100 |
|---|---|---|
| committer | Paul Mackerras <paulus@samba.org> | 2008-01-02 21:44:06 +1100 |
| commit | cd2bcae798ac2194f18374dc7dc10de404fd01d0 (patch) | |
| tree | 09ffb73aca7cd90a1333b2e8da62e054cdd52e37 | |
| parent | 42a671fc006122159aec06da28045ffee49d3244 (diff) | |
gitk: Fix a couple of bugs in the find function
First, findmore would sometimes get a Tcl error due to relying on
varcorder and vrownum having valid values for the rows being searched,
but they may not be valid unless update_arcrows is called, so this
makes findmore call update_arcrows if necessary.
Secondly, in the "touching paths" and "adding/removing string" modes,
findmore was treating fhighlights($row) == -1 as meaning the row
matches, whereas it only means that we haven't received an answer from
the external git diff-tree process about it yet. This fixes it.
Signed-off-by: Paul Mackerras <paulus@samba.org>
| -rwxr-xr-x | gitk | 15 |
1 files changed, 11 insertions, 4 deletions
@@ -4950,7 +4950,7 @@ proc findmore {} { global commitdata commitinfo numcommits findpattern findloc global findstartline findcurline findallowwrap global find_dirn gdttype fhighlights fprogcoord - global curview varcorder vrownum varccommits + global curview varcorder vrownum varccommits vrowmod if {![info exists find_dirn]} { return 0 @@ -4986,6 +4986,9 @@ proc findmore {} { set n 500 set moretodo 1 } + if {$l + ($find_dirn > 0? $n: 1) > $vrowmod($curview)} { + update_arcrows $curview + } set found 0 set domore 1 set ai [bsearch $vrownum($curview) $l] @@ -5032,14 +5035,18 @@ proc findmore {} { } set id [lindex $ids [expr {$l - $arow}]] if {![info exists fhighlights($l)]} { + # this sets fhighlights($l) to -1 askfilehighlight $l $id + } + if {$fhighlights($l) > 0} { + set found $domore + break + } + if {$fhighlights($l) < 0} { if {$domore} { set domore 0 set findcurline [expr {$l - $find_dirn}] } - } elseif {$fhighlights($l)} { - set found $domore - break } } } |
