Skip to content

Commit

Permalink
gitk: Synchronize highlighting in file view for 'f' and 'b' commands
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Paul Mackerras committed May 10, 2008
1 parent 5e3502d commit f4c54b3
Showing 1 changed file with 25 additions and 7 deletions.
32 changes: 25 additions & 7 deletions gitk
Original file line number Diff line number Diff line change
Expand Up @@ -1016,7 +1016,7 @@ proc makewindow {} {
bindkey k "selnextline 1"
bindkey j "goback"
bindkey l "goforw"
bindkey b "$ctext yview scroll -1 pages"
bindkey b prevfile
bindkey d "$ctext yview scroll 18 units"
bindkey u "$ctext yview scroll -18 units"
bindkey / {dofind 1 1}
Expand Down Expand Up @@ -5479,26 +5479,44 @@ proc changediffdisp {} {
$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 {} {
global difffilestart ctext
set prev [lindex $difffilestart 0]
global difffilestart ctext cmitmode

if {$cmitmode eq "tree"} return
set prev 0.0
set prevline 1
set here [$ctext index @0,0]
foreach loc $difffilestart {
if {[$ctext compare $loc >= $here]} {
$ctext yview $prev
highlightfile $prev $prevline
return
}
set prev $loc
incr prevline
}
$ctext yview $prev
highlightfile $prev $prevline
}

proc nextfile {} {
global difffilestart ctext
global difffilestart ctext cmitmode

if {$cmitmode eq "tree"} return
set here [$ctext index @0,0]
set line 1
foreach loc $difffilestart {
incr line
if {[$ctext compare $loc > $here]} {
$ctext yview $loc
highlightfile $loc $line
return
}
}
Expand Down

0 comments on commit f4c54b3

Please sign in to comment.