diff --git a/extensions/references-view/src/navigation.ts b/extensions/references-view/src/navigation.ts index e592dfbf7eae6..bf2478fe952f9 100644 --- a/extensions/references-view/src/navigation.ts +++ b/extensions/references-view/src/navigation.ts @@ -21,6 +21,10 @@ export class Navigation { ); } + getSelection(): readonly unknown[] { + return this._view.selection; + } + dispose(): void { vscode.Disposable.from(...this._disposables).dispose(); } diff --git a/extensions/references-view/src/references/index.ts b/extensions/references-view/src/references/index.ts index c4942f125b76e..2513d421bfee9 100644 --- a/extensions/references-view/src/references/index.ts +++ b/extensions/references-view/src/references/index.ts @@ -21,7 +21,7 @@ export function register(tree: SymbolsTree, context: vscode.ExtensionContext): v vscode.commands.registerCommand('references-view.findImplementations', () => findLocations('Implementations', 'vscode.executeImplementationProvider')), // --- legacy name vscode.commands.registerCommand('references-view.find', (...args: any[]) => vscode.commands.executeCommand('references-view.findReferences', ...args)), - vscode.commands.registerCommand('references-view.removeReferenceItem', removeReferenceItem), + vscode.commands.registerCommand('references-view.removeReferenceItem', (arg) => removeReferenceItem(tree, arg)), vscode.commands.registerCommand('references-view.copy', copyCommand), vscode.commands.registerCommand('references-view.copyAll', copyAllCommand), vscode.commands.registerCommand('references-view.copyPath', copyPathCommand), @@ -61,11 +61,18 @@ const copyAllCommand = async (item: ReferenceItem | FileItem | unknown) => { } }; -function removeReferenceItem(item: FileItem | ReferenceItem | unknown) { +function removeReferenceItem(tree: SymbolsTree, item: FileItem | ReferenceItem | unknown) { if (item instanceof FileItem) { item.remove(); } else if (item instanceof ReferenceItem) { item.remove(); + } else if (item === undefined) { + // if item undefined, assume called from hotkey with no context, so call remove on selected items + for (const ni of tree.getSelection()) { + if (ni instanceof FileItem || ni instanceof ReferenceItem) { + ni.remove(); + } + } } } diff --git a/extensions/references-view/src/tree.ts b/extensions/references-view/src/tree.ts index 4a6bf189675a0..a950de86f36de 100644 --- a/extensions/references-view/src/tree.ts +++ b/extensions/references-view/src/tree.ts @@ -45,6 +45,9 @@ export class SymbolsTree { getInput(): SymbolTreeInput | undefined { return this._input; } + getSelection(): readonly unknown[] { + return this._navigation.getSelection(); + } async setInput(input: SymbolTreeInput) {