From 96b5193affc9bf1610726cab88f97029de1dbb5d Mon Sep 17 00:00:00 2001
From: Lanny <lan.rogers.book@gmail.com>
Date: Wed, 18 Jul 2012 10:16:02 +0400
Subject: [PATCH] Added basic framework for ex mode commands and go-to-line ex
 mode command.

---
 keymap/vim.js | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/keymap/vim.js b/keymap/vim.js
index 2aa6e0f7..bbff4d17 100644
--- a/keymap/vim.js
+++ b/keymap/vim.js
@@ -224,6 +224,11 @@
     cm.setOption("keyMap", "vim-insert");
   }
 
+  function dialog(cm, text, shortText, f) {
+    if (cm.openDialog) cm.openDialog(text, f);
+    else f(prompt(shortText, ""));
+  }
+
   // main keymap
   var map = CodeMirror.keyMap.vim = {
     // Pipe (|); TODO: should be *screen* chars, so need a util function to turn tabs into spaces?
@@ -294,6 +299,14 @@
       popCount();
       CodeMirror.commands.goLineStart(cm);
     },
+    "Shift-;": function(cm) {
+      var exModeDialog = '<input type="text" />';
+      dialog(cm, exModeDialog, 'ex mode:', function(command) {
+        if (command.match(/\d+/)) {
+          cm.setCursor(command-1, cm.getCursor().ch);
+        }
+      });
+    },
     nofallthrough: true, style: "fat-cursor"
   };
 
-- 
GitLab