From bb0e1c3f130893e9f0c1bcdb8916e7445fd709e7 Mon Sep 17 00:00:00 2001
From: jkaplon <jody@kaplon.us>
Date: Wed, 6 Sep 2017 12:56:18 -0400
Subject: [PATCH] [vim mode] Add tick-dot and backtick-dot custom marks

---
 keymap/vim.js    |  9 +++++++++
 test/vim_test.js | 10 ++++++++++
 2 files changed, 19 insertions(+)

diff --git a/keymap/vim.js b/keymap/vim.js
index 8bf1fe566..3d990d1d5 100644
--- a/keymap/vim.js
+++ b/keymap/vim.js
@@ -3979,6 +3979,15 @@
         var history = cm.doc.history.done;
         var event = history[history.length - 2];
         return event && event.ranges && event.ranges[0].head;
+      } else if (markName == '.') {
+        if (cm.doc.history.lastModTime == 0) {
+          return  // If no changes, bail out; don't bother to copy or reverse history array.
+        } else {
+          var changeHistory = cm.doc.history.done.filter(function(el){ if (el.changes !== undefined) { return el } });
+          changeHistory.reverse();
+          var lastEditPos = changeHistory[0].changes[0].to;
+        }
+        return lastEditPos;
       }
 
       var mark = vim.marks[markName];
diff --git a/test/vim_test.js b/test/vim_test.js
index 9c7868597..18268ee78 100644
--- a/test/vim_test.js
+++ b/test/vim_test.js
@@ -1675,6 +1675,16 @@ testVim('mark\'', function(cm, vim, helpers) {
   helpers.doKeys('\'', '\'');
   helpers.assertCursorAt(2, 3);
 });
+testVim('mark.', function(cm, vim, helpers) {
+  cm.setCursor(0, 0);
+  helpers.doKeys('O', 'testing', '<Esc>');
+  cm.setCursor(3, 3);
+  helpers.doKeys('\'', '.');
+  helpers.assertCursorAt(0, 0);
+  cm.setCursor(4, 4);
+  helpers.doKeys('`', '.');
+  helpers.assertCursorAt(0, 6);
+});
 testVim('jumpToMark_next', function(cm, vim, helpers) {
   cm.setCursor(2, 2);
   helpers.doKeys('m', 't');
-- 
GitLab