gitk: Synchronize highlighting in file view for 'f' and 'b' commands
This is based on a patch by Eric Raible <raible@gmail.com>, but does things a bit more simply. Previously, 'b', backspace, and delete all did the same thing. This changes 'b' to perform the inverse of 'f'. And both of them now highlight the filename of the currently diff. This makes it easier to review and navigate the diffs associated with a particular commit using only f, b, and space because the filename of the currently display diff will be dynamically highlighted. Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
32
gitk
32
gitk
@ -1016,7 +1016,7 @@ proc makewindow {} {
|
|||||||
bindkey k "selnextline 1"
|
bindkey k "selnextline 1"
|
||||||
bindkey j "goback"
|
bindkey j "goback"
|
||||||
bindkey l "goforw"
|
bindkey l "goforw"
|
||||||
bindkey b "$ctext yview scroll -1 pages"
|
bindkey b prevfile
|
||||||
bindkey d "$ctext yview scroll 18 units"
|
bindkey d "$ctext yview scroll 18 units"
|
||||||
bindkey u "$ctext yview scroll -18 units"
|
bindkey u "$ctext yview scroll -18 units"
|
||||||
bindkey / {dofind 1 1}
|
bindkey / {dofind 1 1}
|
||||||
@ -5479,26 +5479,44 @@ proc changediffdisp {} {
|
|||||||
$ctext tag conf d1 -elide [lindex $diffelide 1]
|
$ctext tag conf d1 -elide [lindex $diffelide 1]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
proc highlightfile {loc cline} {
|
||||||
|
global ctext cflist cflist_top
|
||||||
|
|
||||||
|
$ctext yview $loc
|
||||||
|
$cflist tag remove highlight $cflist_top.0 "$cflist_top.0 lineend"
|
||||||
|
$cflist tag add highlight $cline.0 "$cline.0 lineend"
|
||||||
|
$cflist see $cline.0
|
||||||
|
set cflist_top $cline
|
||||||
|
}
|
||||||
|
|
||||||
proc prevfile {} {
|
proc prevfile {} {
|
||||||
global difffilestart ctext
|
global difffilestart ctext cmitmode
|
||||||
set prev [lindex $difffilestart 0]
|
|
||||||
|
if {$cmitmode eq "tree"} return
|
||||||
|
set prev 0.0
|
||||||
|
set prevline 1
|
||||||
set here [$ctext index @0,0]
|
set here [$ctext index @0,0]
|
||||||
foreach loc $difffilestart {
|
foreach loc $difffilestart {
|
||||||
if {[$ctext compare $loc >= $here]} {
|
if {[$ctext compare $loc >= $here]} {
|
||||||
$ctext yview $prev
|
highlightfile $prev $prevline
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
set prev $loc
|
set prev $loc
|
||||||
|
incr prevline
|
||||||
}
|
}
|
||||||
$ctext yview $prev
|
highlightfile $prev $prevline
|
||||||
}
|
}
|
||||||
|
|
||||||
proc nextfile {} {
|
proc nextfile {} {
|
||||||
global difffilestart ctext
|
global difffilestart ctext cmitmode
|
||||||
|
|
||||||
|
if {$cmitmode eq "tree"} return
|
||||||
set here [$ctext index @0,0]
|
set here [$ctext index @0,0]
|
||||||
|
set line 1
|
||||||
foreach loc $difffilestart {
|
foreach loc $difffilestart {
|
||||||
|
incr line
|
||||||
if {[$ctext compare $loc > $here]} {
|
if {[$ctext compare $loc > $here]} {
|
||||||
$ctext yview $loc
|
highlightfile $loc $line
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user