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