diff --git a/packages/common/src/types/TextEditor.ts b/packages/common/src/types/TextEditor.ts index db4599d926..3506610e33 100644 --- a/packages/common/src/types/TextEditor.ts +++ b/packages/common/src/types/TextEditor.ts @@ -55,6 +55,7 @@ export interface TextEditor { export interface SetSelectionsOpts { focusEditor?: boolean; revealRange?: boolean; + highlightWord?: boolean; } export type OpenLinkOptions = { diff --git a/packages/cursorless-engine/src/actions/SetSelection.ts b/packages/cursorless-engine/src/actions/SetSelection.ts index db46311631..a221b1cc9f 100644 --- a/packages/cursorless-engine/src/actions/SetSelection.ts +++ b/packages/cursorless-engine/src/actions/SetSelection.ts @@ -21,9 +21,14 @@ abstract class SetSelectionBase implements SimpleAction { ? editor.selections.concat(targetSelections) : targetSelections; + const highlightWord = + this.selectionMode === "set" && + selections.length === 1 && + selections[0].isEmpty; + await ide() .getEditableTextEditor(editor) - .setSelections(selections, { focusEditor: true }); + .setSelections(selections, { focusEditor: true, highlightWord }); return { thatTargets: targets, diff --git a/packages/cursorless-vscode/src/ide/vscode/VscodeTextEditorImpl.ts b/packages/cursorless-vscode/src/ide/vscode/VscodeTextEditorImpl.ts index fc42b61f49..1aa3b828ac 100644 --- a/packages/cursorless-vscode/src/ide/vscode/VscodeTextEditorImpl.ts +++ b/packages/cursorless-vscode/src/ide/vscode/VscodeTextEditorImpl.ts @@ -51,7 +51,11 @@ export class VscodeTextEditorImpl implements EditableTextEditor { async setSelections( rawSelections: Selection[], - { focusEditor = false, revealRange = true }: SetSelectionsOpts = {}, + { + focusEditor = false, + revealRange = true, + highlightWord = false, + }: SetSelectionsOpts = {}, ): Promise { const selections = uniqWithHash( rawSelections, @@ -85,6 +89,10 @@ export class VscodeTextEditorImpl implements EditableTextEditor { if (revealRange) { await this.revealRange(this.selections[0]); } + + if (highlightWord) { + vscode.commands.executeCommand("editor.action.wordHighlight.trigger"); + } } get visibleRanges(): Range[] {