diff --git a/src/vs/editor/contrib/codelens/codelensCommands.ts b/src/vs/editor/contrib/codelens/codelensCommands.ts deleted file mode 100644 index ef9fdaa31438a2bb5740b73aa90d9cdc974d6fd9..0000000000000000000000000000000000000000 --- a/src/vs/editor/contrib/codelens/codelensCommands.ts +++ /dev/null @@ -1,67 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { Command } from 'vs/editor/browser/editorExtensions'; -import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService'; -import { CodeLensContribution } from 'vs/editor/contrib/codelens/codelensController'; -import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; -import { IQuickInputService, IQuickPickItem, IQuickPickSeparator } from 'vs/platform/quickinput/common/quickInput'; -import { ICommandService } from 'vs/platform/commands/common/commands'; -import { INotificationService } from 'vs/platform/notification/common/notification'; - -export class ShowLensesInCurrentLineCommand extends Command { - public runCommand(accessor: ServicesAccessor, args: any): void | Promise { - const quickInputService = accessor.get(IQuickInputService); - const commandService = accessor.get(ICommandService); - const notificationService = accessor.get(INotificationService); - - const focusedEditor = accessor.get(ICodeEditorService).getFocusedCodeEditor(); - if (!focusedEditor?.getSelection()?.isEmpty()) { - return; - } - const lineNumber = focusedEditor.getSelection()?.positionLineNumber; - const codelensController = focusedEditor.getContribution(CodeLensContribution.ID) as CodeLensContribution; - - const activeLensesWidgets = codelensController.getLenses().filter(lens => lens.getLineNumber() === lineNumber); - - const commandArguments: Map = new Map(); - - const picker = quickInputService.createQuickPick(); - const items: (IQuickPickItem | IQuickPickSeparator)[] = []; - - activeLensesWidgets.forEach(widget => { - widget.getItems().forEach(codelens => { - const command = codelens.symbol.command; - if (!command) { - return; - } - items.push({ id: command.id, label: command.title }); - - commandArguments.set(command.id, command.arguments); - }); - }); - - - console.log(items); - picker.items = items; - picker.canSelectMany = false; - picker.onDidAccept(_ => { - const selectedItems = picker.selectedItems; - if (selectedItems.length === 1) { - const id = selectedItems[0].id!; - - if (!id) { - picker.hide(); - return; - } - - commandService.executeCommand(id, ...(commandArguments.get(id) || [])).catch(err => notificationService.error(err)); - } - picker.hide(); - }); - picker.show(); - } - -} diff --git a/src/vs/editor/contrib/codelens/codelensController.ts b/src/vs/editor/contrib/codelens/codelensController.ts index 696dd680f76244bc61de92e7240630974eef70ad..6bf5613c9646bb4a061973139c2d90216807600e 100644 --- a/src/vs/editor/contrib/codelens/codelensController.ts +++ b/src/vs/editor/contrib/codelens/codelensController.ts @@ -3,6 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ + import * as dom from 'vs/base/browser/dom'; import { CancelablePromise, createCancelablePromise, disposableTimeout, RunOnceScheduler } from 'vs/base/common/async'; import { onUnexpectedError, onUnexpectedExternalError } from 'vs/base/common/errors'; @@ -10,17 +11,18 @@ import { hash } from 'vs/base/common/hash'; import { DisposableStore, dispose, toDisposable } from 'vs/base/common/lifecycle'; import { StableEditorScrollState } from 'vs/editor/browser/core/editorState'; import { IActiveCodeEditor, ICodeEditor, IViewZoneChangeAccessor, MouseTargetType } from 'vs/editor/browser/editorBrowser'; -import { registerEditorContribution } from 'vs/editor/browser/editorExtensions'; +import { Command, registerEditorContribution, ServicesAccessor } from 'vs/editor/browser/editorExtensions'; +import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService'; import { EditorOption } from 'vs/editor/common/config/editorOptions'; import { IEditorContribution } from 'vs/editor/common/editorCommon'; import { IModelDecorationsChangeAccessor } from 'vs/editor/common/model'; import { CodeLens, CodeLensProviderRegistry } from 'vs/editor/common/modes'; import { CodeLensItem, CodeLensModel, getCodeLensData } from 'vs/editor/contrib/codelens/codelens'; import { ICodeLensCache } from 'vs/editor/contrib/codelens/codeLensCache'; -import { ShowLensesInCurrentLineCommand } from 'vs/editor/contrib/codelens/codelensCommands'; import { CodeLensHelper, CodeLensWidget } from 'vs/editor/contrib/codelens/codelensWidget'; import { ICommandService } from 'vs/platform/commands/common/commands'; import { INotificationService } from 'vs/platform/notification/common/notification'; +import { IQuickInputService, IQuickPickItem, IQuickPickSeparator } from 'vs/platform/quickinput/common/quickInput'; export class CodeLensContribution implements IEditorContribution { @@ -409,6 +411,59 @@ export class CodeLensContribution implements IEditorContribution { } } +export class ShowLensesInCurrentLineCommand extends Command { + public runCommand(accessor: ServicesAccessor, args: any): void | Promise { + const quickInputService = accessor.get(IQuickInputService); + const commandService = accessor.get(ICommandService); + const notificationService = accessor.get(INotificationService); + + const focusedEditor = accessor.get(ICodeEditorService).getFocusedCodeEditor(); + if (!focusedEditor?.getSelection()?.isEmpty()) { + return; + } + const lineNumber = focusedEditor.getSelection()?.positionLineNumber; + const codelensController = focusedEditor.getContribution(CodeLensContribution.ID) as CodeLensContribution; + + const activeLensesWidgets = codelensController.getLenses().filter(lens => lens.getLineNumber() === lineNumber); + + const commandArguments: Map = new Map(); + + const picker = quickInputService.createQuickPick(); + const items: (IQuickPickItem | IQuickPickSeparator)[] = []; + + activeLensesWidgets.forEach(widget => { + widget.getItems().forEach(codelens => { + const command = codelens.symbol.command; + if (!command) { + return; + } + items.push({ id: command.id, label: command.title }); + + commandArguments.set(command.id, command.arguments); + }); + }); + + picker.items = items; + picker.canSelectMany = false; + picker.onDidAccept(_ => { + const selectedItems = picker.selectedItems; + if (selectedItems.length === 1) { + const id = selectedItems[0].id!; + + if (!id) { + picker.hide(); + return; + } + + commandService.executeCommand(id, ...(commandArguments.get(id) || [])).catch(err => notificationService.error(err)); + } + picker.hide(); + }); + picker.show(); + } + +} + registerEditorContribution(CodeLensContribution.ID, CodeLensContribution); const showLensesInCurrentLineCommand = new ShowLensesInCurrentLineCommand({ id: 'codelens.showLensesInCurrentLine', precondition: undefined }); diff --git a/src/vs/platform/quickinput/common/quickInput.ts b/src/vs/platform/quickinput/common/quickInput.ts index 5827452f6e46487ff47ec69ec19b40a568259d6b..33e122679dbb463733d2e860357562110a3bcbe3 100644 --- a/src/vs/platform/quickinput/common/quickInput.ts +++ b/src/vs/platform/quickinput/common/quickInput.ts @@ -7,7 +7,7 @@ import { createDecorator } from 'vs/platform/instantiation/common/instantiation' import { CancellationToken } from 'vs/base/common/cancellation'; import { IQuickPickItem, IPickOptions, IInputOptions, IQuickNavigateConfiguration, IQuickPick, IQuickInputButton, IInputBox, QuickPickInput } from 'vs/base/parts/quickinput/common/quickInput'; -export { IQuickPickItem, IPickOptions, IInputOptions, IQuickNavigateConfiguration, IQuickPick, IQuickInput, IQuickInputButton, IInputBox, IQuickPickItemButtonEvent, QuickPickInput, IQuickPickSeparator, IKeyMods } from 'vs/base/parts/quickinput/common/quickInput'; +export * from 'vs/base/parts/quickinput/common/quickInput'; export const IQuickInputService = createDecorator('quickInputService');