Skip to content

Commit

Permalink
<C-r> <C-w> (insert word under cursor) in search/commmand line
Browse files Browse the repository at this point in the history
  • Loading branch information
fraenkel committed Oct 6, 2019
1 parent 5378ed4 commit 4b4bae3
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 0 deletions.
23 changes: 23 additions & 0 deletions src/actions/commands/actions.ts
Expand Up @@ -422,6 +422,29 @@ class CommandInsertRegisterContentInSearchMode extends BaseCommand {
}
}

@RegisterAction
class CommandInsertWord extends BaseCommand {
modes = [ModeName.CommandlineInProgress, ModeName.SearchInProgressMode];
keys = ['<C-r>', '<C-w>'];

public async exec(position: Position, vimState: VimState): Promise<VimState> {
const word = TextEditor.getWord(position);

if (word !== undefined) {
if (vimState.currentMode === ModeName.SearchInProgressMode) {
const searchState = globalState.searchState!;
searchState.searchString += word;
} else {
vimState.currentCommandlineText += word;
}

vimState.statusBarCursorCharacterPos += word.length;
}

return vimState;
}
}

@RegisterAction
class CommandRecordMacro extends BaseCommand {
modes = [ModeName.Normal, ModeName.Visual, ModeName.VisualLine];
Expand Down
14 changes: 14 additions & 0 deletions test/cmd_line/command.test.ts
Expand Up @@ -155,4 +155,18 @@ suite('cmd_line/search command', () => {
assert.equal(StatusBar.Get().trim(), ':|');
await modeHandler.handleKeyEvent('<Esc>');
});

test('<C-r> <C-w> insert word under cursor on command line', async () => {
await modeHandler.handleMultipleKeyEvents('iabc'.split(''));
await modeHandler.handleMultipleKeyEvents(['<Esc>', ':', '<C-r>', '<C-w>']);
const statusBar = StatusBar.Get().trim();
assert.equal(statusBar, ':abc|', 'Failed to insert word');
});

test('<C-r> <C-w> insert word under cursor in search mode', async () => {
await modeHandler.handleMultipleKeyEvents('iabc'.split(''));
await modeHandler.handleMultipleKeyEvents(['<Esc>', '/', '<C-r>', '<C-w>']);
const statusBar = StatusBar.Get().trim();
assert.equal(statusBar, '/abc|', 'Failed to insert word');
});
});

0 comments on commit 4b4bae3

Please sign in to comment.