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) {