]> Kevux Git Server - rit/commitdiff
git-gui: Allow vi keys to scroll the diff/blame regions
authorShawn O. Pearce <spearce@spearce.org>
Tue, 1 May 2007 19:51:09 +0000 (15:51 -0400)
committerShawn O. Pearce <spearce@spearce.org>
Tue, 8 May 2007 03:35:51 +0000 (23:35 -0400)
Users who are used to vi and recent versions of gitk may want
to scroll the diff region using vi style keybindings.  Since
these aren't bound to anything else and that widget does not
accept focus for data input, we can easily support that too.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
git-gui.sh
lib/blame.tcl

index 72673c6..dc6664c 100755 (executable)
@@ -2038,6 +2038,12 @@ bind $ui_diff <Key-Up>     {catch {%W yview scroll -1 units};break}
 bind $ui_diff <Key-Down>   {catch {%W yview scroll  1 units};break}
 bind $ui_diff <Key-Left>   {catch {%W xview scroll -1 units};break}
 bind $ui_diff <Key-Right>  {catch {%W xview scroll  1 units};break}
+bind $ui_diff <Key-k>         {catch {%W yview scroll -1 units};break}
+bind $ui_diff <Key-j>         {catch {%W yview scroll  1 units};break}
+bind $ui_diff <Key-h>         {catch {%W xview scroll -1 units};break}
+bind $ui_diff <Key-l>         {catch {%W xview scroll  1 units};break}
+bind $ui_diff <Control-Key-b> {catch {%W yview scroll -1 pages};break}
+bind $ui_diff <Control-Key-f> {catch {%W yview scroll  1 pages};break}
 bind $ui_diff <Button-1>   {focus %W}
 
 if {[is_enabled branch]} {
index c276fa9..6d894e5 100644 (file)
@@ -125,6 +125,23 @@ proc show_blame {commit path} {
                "
        }
 
+       foreach i [list \
+               $w.out.loaded_t \
+               $w.out.linenumber_t \
+               $w.out.file_t \
+               $w.cm.t] {
+               bind $i <Key-Up>        {catch {%W yview scroll -1 units};break}
+               bind $i <Key-Down>      {catch {%W yview scroll  1 units};break}
+               bind $i <Key-Left>      {catch {%W xview scroll -1 units};break}
+               bind $i <Key-Right>     {catch {%W xview scroll  1 units};break}
+               bind $i <Key-k>         {catch {%W yview scroll -1 units};break}
+               bind $i <Key-j>         {catch {%W yview scroll  1 units};break}
+               bind $i <Key-h>         {catch {%W xview scroll -1 units};break}
+               bind $i <Key-l>         {catch {%W xview scroll  1 units};break}
+               bind $i <Control-Key-b> {catch {%W yview scroll -1 pages};break}
+               bind $i <Control-Key-f> {catch {%W yview scroll  1 pages};break}
+       }
+
        bind $w.cm.t <Button-1> "focus $w.cm.t"
        bind $tl <Visibility> "focus $tl"
        bind $tl <Destroy> "