summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn O. Pearce <spearce@spearce.org>2007-05-01 19:51:09 (GMT)
committerShawn O. Pearce <spearce@spearce.org>2007-05-08 03:35:51 (GMT)
commit60aa065f6958a888d14178ca94f17a60100d3709 (patch)
tree8f665c9f5d8d923ec5aadbbfecfe649315946465
parenta35d65d9c8a2a6a10d369c00e22aded6fbdff2a9 (diff)
downloadgit-60aa065f6958a888d14178ca94f17a60100d3709.zip
git-60aa065f6958a888d14178ca94f17a60100d3709.tar.gz
git-60aa065f6958a888d14178ca94f17a60100d3709.tar.bz2
git-gui: Allow vi keys to scroll the diff/blame regions
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>
-rwxr-xr-xgit-gui.sh6
-rw-r--r--lib/blame.tcl17
2 files changed, 23 insertions, 0 deletions
diff --git a/git-gui.sh b/git-gui.sh
index 72673c6..dc6664c 100755
--- a/git-gui.sh
+++ b/git-gui.sh
@@ -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]} {
diff --git a/lib/blame.tcl b/lib/blame.tcl
index c276fa9..6d894e5 100644
--- a/lib/blame.tcl
+++ b/lib/blame.tcl
@@ -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> "