MCPcopy Create free account
hub / github.com/OpenEndedGroup/Field2 / executeMacroRegister

Function executeMacroRegister

lib/web/CodeMirror/keymap/vim.js:5405–5439  ·  view source on GitHub ↗
(cm, vim, macroModeState, registerName)

Source from the content-addressed store, hash-verified

5403 };
5404
5405 function executeMacroRegister(cm, vim, macroModeState, registerName) {
5406 var register = vimGlobalState.registerController.getRegister(registerName);
5407 if (registerName == ':') {
5408 // Read-only register containing last Ex command.
5409 if (register.keyBuffer[0]) {
5410 exCommandDispatcher.processCommand(cm, register.keyBuffer[0]);
5411 }
5412 macroModeState.isPlaying = false;
5413 return;
5414 }
5415 var keyBuffer = register.keyBuffer;
5416 var imc = 0;
5417 macroModeState.isPlaying = true;
5418 macroModeState.replaySearchQueries = register.searchQueries.slice(0);
5419 for (var i = 0; i < keyBuffer.length; i++) {
5420 var text = keyBuffer[i];
5421 var match, key;
5422 while (text) {
5423 // Pull off one command key, which is either a single character
5424 // or a special sequence wrapped in '<' and '>', e.g. '<Space>'.
5425 match = (/<\w+-.+?>|<\w+>|./).exec(text);
5426 key = match[0];
5427 text = text.substring(match.index + key.length);
5428 CodeMirror.Vim.handleKey(cm, key, 'macro');
5429 if (vim.insertMode) {
5430 var changes = register.insertModeChanges[imc++].changes;
5431 vimGlobalState.macroModeState.lastInsertModeChanges.changes =
5432 changes;
5433 repeatInsertModeChanges(cm, changes, 1);
5434 exitInsertMode(cm);
5435 }
5436 }
5437 }
5438 macroModeState.isPlaying = false;
5439 }
5440
5441 function logKey(macroModeState, key) {
5442 if (macroModeState.isPlaying) { return; }

Callers 1

VimFunction · 0.85

Calls 3

repeatInsertModeChangesFunction · 0.85
exitInsertModeFunction · 0.85
execMethod · 0.65

Tested by

no test coverage detected