提交 1731aa3c 编写于 作者: G Gustavo Sampaio

Fix tests and remove cyclic dependencies

Signed-off-by: NGustavo Sampaio <gbritosampaio@gmail.com>
上级 e9ddb0f9
/*---------------------------------------------------------------------------------------------
* 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<void> {
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<string, any[] | undefined> = 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();
}
}
......@@ -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<void> {
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<string, any[] | undefined> = 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 });
......
......@@ -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<IQuickInputService>('quickInputService');
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册