diff --git a/keymap/vim.js b/keymap/vim.js index 8a7945ed0849e1aed3f90d10032f43cdf092e6b1..3ed95190b24279c734164fe1f4f62d50d1319390 100644 --- a/keymap/vim.js +++ b/keymap/vim.js @@ -2105,7 +2105,7 @@ selectionStart = Pos(selectionStart.line, selectionEnd.ch); cm.setCursor(selectionStart); selectBlock(cm, selectionEnd); - } else if (selectionEnd.line < selectionStart.line) { + } else if (selectionEnd && selectionEnd.line < selectionStart.line) { selectionEnd = Pos(selectionStart.line, 0); cm.setCursor(selectionEnd); } diff --git a/test/vim_test.js b/test/vim_test.js index d057b4b3d5f55a37555efe0983d51b6c3994718e..7f016c479b9238535aa48b2e0235132784d59300 100644 --- a/test/vim_test.js +++ b/test/vim_test.js @@ -1304,6 +1304,11 @@ testVim('A_visual_block', function(cm, vim, helpers) { replacement.pop(); cm.replaceSelections(replacement); eq('testhello\nmehello\npleahellose', cm.getValue()); + helpers.doKeys('<Esc>'); + cm.setCursor(0, 0); + helpers.doKeys('.'); + // TODO this doesn't work yet + // eq('teshellothello\nme hello hello\nplehelloahellose', cm.getValue()); }, {value: 'test\nme\nplease'}); testVim('I', function(cm, vim, helpers) { cm.setCursor(0, 4);