Merge "Use "gj" and "gk" to fix navigation in vim mode"
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide2.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide2.java
index e4148a0..8972102 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide2.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide2.java
@@ -297,8 +297,6 @@
}
});
cm.addKeyMap(KeyMap.create()
- .on("'j'", moveCursorDown(cm, 1))
- .on("'k'", moveCursorDown(cm, -1))
.on("'a'", openReplyBox())
.on("'u'", upToChange())
.on("'r'", toggleReviewed())
@@ -1076,14 +1074,6 @@
};
}
- private Runnable moveCursorDown(final CodeMirror cm, final int numLines) {
- return new Runnable() {
- public void run() {
- cm.moveCursorDown(numLines);
- }
- };
- }
-
private Runnable openReplyBox() {
return new Runnable() {
public void run() {
diff --git a/gerrit-gwtui/src/main/java/net/codemirror/lib/CodeMirror.java b/gerrit-gwtui/src/main/java/net/codemirror/lib/CodeMirror.java
index 2e552ef..4db989c 100644
--- a/gerrit-gwtui/src/main/java/net/codemirror/lib/CodeMirror.java
+++ b/gerrit-gwtui/src/main/java/net/codemirror/lib/CodeMirror.java
@@ -265,10 +265,6 @@
return this.lineCount();
}-*/;
- public final native void moveCursorDown(int numLines) /*-{
- this.moveV(numLines, "line");
- }-*/;
-
public final native Element getGutterElement() /*-{
return this.getGutterElement();
}-*/;
@@ -311,6 +307,10 @@
$wnd.CodeMirror.Vim.handleKey(cm, key);
}-*/;
+ public static final native void mapVimKey(String alias, String actual) /*-{
+ $wnd.CodeMirror.Vim.map(alias, actual);
+ }-*/;
+
public final native boolean hasVimSearchHighlight() /*-{
return this.state.vim && this.state.vim.searchState_ &&
!!this.state.vim.searchState_.getOverlay();
diff --git a/gerrit-gwtui/src/main/java/net/codemirror/lib/Loader.java b/gerrit-gwtui/src/main/java/net/codemirror/lib/Loader.java
index 37adf1e..2a515b7 100644
--- a/gerrit-gwtui/src/main/java/net/codemirror/lib/Loader.java
+++ b/gerrit-gwtui/src/main/java/net/codemirror/lib/Loader.java
@@ -90,10 +90,14 @@
private static void initVimKeys() {
// TODO: Better custom keybindings, remove temporary navigation hacks.
KeyMap km = CodeMirror.cloneKeyMap("vim");
- for (String s : new String[] {"A", "C", "J", "K", "O", "R", "U", "Ctrl-C"}) {
+ for (String s : new String[] {"A", "C", "O", "R", "U", "Ctrl-C"}) {
km.remove(s);
}
CodeMirror.addKeyMap("vim_ro", km);
+ CodeMirror.mapVimKey("j", "gj");
+ CodeMirror.mapVimKey("k", "gk");
+ CodeMirror.mapVimKey("Down", "gj");
+ CodeMirror.mapVimKey("Up", "gk");
}
private static void error(Exception e) {