diff --git a/keymap/vim.js b/keymap/vim.js index c3375a743c88e1caf8342a1c9686a22f62438d53..2763b5134f4ba3c52cd34f95b60632e00471028b 100644 --- a/keymap/vim.js +++ b/keymap/vim.js @@ -2188,7 +2188,9 @@ enterMacroRecordMode: function(cm, actionArgs) { var macroModeState = vimGlobalState.macroModeState; var registerName = actionArgs.selectedCharacter; - macroModeState.enterMacroRecordMode(cm, registerName); + if (vimGlobalState.registerController.isValidRegister(registerName)) { + macroModeState.enterMacroRecordMode(cm, registerName); + } }, toggleOverwrite: function(cm) { if (!cm.state.overwrite) { diff --git a/test/vim_test.js b/test/vim_test.js index 7d8f16fe83f78939a1e0c74d85a976c2cb038112..d107e82cac9214b1548cef99a974f2ad1e52cebe 100644 --- a/test/vim_test.js +++ b/test/vim_test.js @@ -2582,6 +2582,14 @@ testVim('macro_search_2f', function(cm, vim, helpers) { helpers.doKeys('@', 'a'); helpers.assertCursorAt(0,9); }, { value: 'The quick brown fox jumped over the lazy dog.'}); +testVim('macro_yank_tick', function(cm, vim, helpers) { + cm.setCursor(0, 0); + // Start recording a macro into the \' register. + helpers.doKeys('q', '\''); + helpers.doKeys('y', '<Right>', '<Right>', '<Right>', '<Right>', 'p'); + helpers.assertCursorAt(0,4); + eq('the tex parrot', cm.getValue()); +}, { value: 'the ex parrot'}); testVim('yank_register', function(cm, vim, helpers) { cm.setCursor(0, 0); helpers.doKeys('"', 'a', 'y', 'y');