提交 a6a9f771 编写于 作者: D Daniel Imms

Lint progress

上级 0fa9d367
......@@ -55,7 +55,7 @@ export abstract class AbstractCommandsQuickAccessProvider extends PickerQuickAcc
this.options = options;
}
protected async getPicks(filter: string, disposables: DisposableStore, token: CancellationToken): Promise<Array<ICommandQuickPick | IQuickPickSeparator>> {
protected async _getPicks(filter: string, disposables: DisposableStore, token: CancellationToken): Promise<Array<ICommandQuickPick | IQuickPickSeparator>> {
// Ask subclass for all command picks
const allCommandPicks = await this.getCommandPicks(disposables, token);
......
......@@ -122,7 +122,7 @@ export abstract class PickerQuickAccessProvider<T extends IPickerQuickAccessItem
// Collect picks and support both long running and short or combined
const picksToken = picksCts.token;
const picksFilter = picker.value.substr(this.prefix.length).trim();
const providedPicks = this.getPicks(picksFilter, picksDisposables, picksToken);
const providedPicks = this._getPicks(picksFilter, picksDisposables, picksToken);
const applyPicks = (picks: Picks<T>, skipEmpty?: boolean): boolean => {
let items: readonly Pick<T>[];
......@@ -330,5 +330,5 @@ export abstract class PickerQuickAccessProvider<T extends IPickerQuickAccessItem
* @returns the picks either directly, as promise or combined fast and slow results.
* Pickers can return `null` to signal that no change in picks is needed.
*/
protected abstract getPicks(filter: string, disposables: DisposableStore, token: CancellationToken): Picks<T> | Promise<Picks<T>> | FastAndSlowPicks<T> | null;
protected abstract _getPicks(filter: string, disposables: DisposableStore, token: CancellationToken): Picks<T> | Promise<Picks<T>> | FastAndSlowPicks<T> | null;
}
......@@ -68,7 +68,7 @@ export abstract class BaseEditorQuickAccessProvider extends PickerQuickAccessPro
return super.provide(picker, token);
}
protected getPicks(filter: string): Array<IEditorQuickPickItem | IQuickPickSeparator> {
protected _getPicks(filter: string): Array<IEditorQuickPickItem | IQuickPickSeparator> {
const query = prepareQuery(filter);
// Filtering
......
......@@ -69,7 +69,7 @@ export abstract class SimpleFindWidget extends Widget {
this._updateHistoryDelayer = new Delayer<void>(500);
this.oninput(this._findInput.domNode, (e) => {
this.foundMatch = this.onInputChanged();
this.foundMatch = this._onInputChanged();
this.updateButtons(this.foundMatch);
this._delayedUpdateHistory();
});
......@@ -138,25 +138,25 @@ export abstract class SimpleFindWidget extends Widget {
});
this._focusTracker = this._register(dom.trackFocus(this._innerDomNode));
this._register(this._focusTracker.onDidFocus(this.onFocusTrackerFocus.bind(this)));
this._register(this._focusTracker.onDidBlur(this.onFocusTrackerBlur.bind(this)));
this._register(this._focusTracker.onDidFocus(this._onFocusTrackerFocus.bind(this)));
this._register(this._focusTracker.onDidBlur(this._onFocusTrackerBlur.bind(this)));
this._findInputFocusTracker = this._register(dom.trackFocus(this._findInput.domNode));
this._register(this._findInputFocusTracker.onDidFocus(this.onFindInputFocusTrackerFocus.bind(this)));
this._register(this._findInputFocusTracker.onDidBlur(this.onFindInputFocusTrackerBlur.bind(this)));
this._register(this._findInputFocusTracker.onDidFocus(this._onFindInputFocusTrackerFocus.bind(this)));
this._register(this._findInputFocusTracker.onDidBlur(this._onFindInputFocusTrackerBlur.bind(this)));
this._register(dom.addDisposableListener(this._innerDomNode, 'click', (event) => {
event.stopPropagation();
}));
}
protected abstract onInputChanged(): boolean;
protected abstract _onInputChanged(): boolean;
protected abstract find(previous: boolean): void;
protected abstract findFirst(): void;
protected abstract onFocusTrackerFocus(): void;
protected abstract onFocusTrackerBlur(): void;
protected abstract onFindInputFocusTrackerFocus(): void;
protected abstract onFindInputFocusTrackerBlur(): void;
protected abstract _onFocusTrackerFocus(): void;
protected abstract _onFocusTrackerBlur(): void;
protected abstract _onFindInputFocusTrackerFocus(): void;
protected abstract _onFindInputFocusTrackerBlur(): void;
protected get inputValue() {
return this._findInput.getValue();
......
......@@ -33,7 +33,7 @@ export class StartDebugQuickAccessProvider extends PickerQuickAccessProvider<IPi
});
}
protected async getPicks(filter: string): Promise<(IQuickPickSeparator | IPickerQuickAccessItem)[]> {
protected async _getPicks(filter: string): Promise<(IQuickPickSeparator | IPickerQuickAccessItem)[]> {
const picks: Array<IPickerQuickAccessItem | IQuickPickSeparator> = [];
picks.push({ type: 'separator', label: 'launch.json' });
......
......@@ -28,7 +28,7 @@ export class InstallExtensionQuickAccessProvider extends PickerQuickAccessProvid
super(InstallExtensionQuickAccessProvider.PREFIX);
}
protected getPicks(filter: string, disposables: DisposableStore, token: CancellationToken): Array<IPickerQuickAccessItem | IQuickPickSeparator> | Promise<Array<IPickerQuickAccessItem | IQuickPickSeparator>> {
protected _getPicks(filter: string, disposables: DisposableStore, token: CancellationToken): Array<IPickerQuickAccessItem | IQuickPickSeparator> | Promise<Array<IPickerQuickAccessItem | IQuickPickSeparator>> {
// Nothing typed
if (!filter) {
......@@ -100,7 +100,7 @@ export class ManageExtensionsQuickAccessProvider extends PickerQuickAccessProvid
super(ManageExtensionsQuickAccessProvider.PREFIX);
}
protected getPicks(): Array<IPickerQuickAccessItem | IQuickPickSeparator> {
protected _getPicks(): Array<IPickerQuickAccessItem | IQuickPickSeparator> {
return [{
label: localize('manage', "Press Enter to manage your extensions."),
accept: () => openExtensionsViewlet(this.viewletService)
......
......@@ -48,7 +48,7 @@ export class ViewQuickAccessProvider extends PickerQuickAccessProvider<IViewQuic
});
}
protected getPicks(filter: string): Array<IViewQuickPickItem | IQuickPickSeparator> {
protected _getPicks(filter: string): Array<IViewQuickPickItem | IQuickPickSeparator> {
const filteredViewEntries = this.doGetViewPickItems().filter(entry => {
if (!filter) {
return true;
......
......@@ -259,7 +259,7 @@ export class AnythingQuickAccessProvider extends PickerQuickAccessProvider<IAnyt
return toDisposable(() => this.clearDecorations(activeEditorControl));
}
protected getPicks(originalFilter: string, disposables: DisposableStore, token: CancellationToken): Picks<IAnythingQuickPickItem> | Promise<Picks<IAnythingQuickPickItem>> | FastAndSlowPicks<IAnythingQuickPickItem> | null {
protected _getPicks(originalFilter: string, disposables: DisposableStore, token: CancellationToken): Picks<IAnythingQuickPickItem> | Promise<Picks<IAnythingQuickPickItem>> | FastAndSlowPicks<IAnythingQuickPickItem> | null {
// Find a suitable range from the pattern looking for ":", "#" or ","
// unless we have the `@` editor symbol character inside the filter
......
......@@ -83,7 +83,7 @@ export class SymbolsQuickAccessProvider extends PickerQuickAccessProvider<ISymbo
};
}
protected getPicks(filter: string, disposables: DisposableStore, token: CancellationToken): Promise<Array<ISymbolQuickPickItem>> {
protected _getPicks(filter: string, disposables: DisposableStore, token: CancellationToken): Promise<Array<ISymbolQuickPickItem>> {
return this.getSymbolPicks(filter, undefined, token);
}
......
......@@ -39,7 +39,7 @@ export class TasksQuickAccessProvider extends PickerQuickAccessProvider<IPickerQ
this.activationPromise = extensionService.activateByEvent('onCommand:workbench.action.tasks.runTask');
}
protected async getPicks(filter: string, disposables: DisposableStore, token: CancellationToken): Promise<Array<IPickerQuickAccessItem | IQuickPickSeparator>> {
protected async _getPicks(filter: string, disposables: DisposableStore, token: CancellationToken): Promise<Array<IPickerQuickAccessItem | IQuickPickSeparator>> {
// always await extensions
await this.activationPromise;
......
......@@ -200,7 +200,7 @@ export class TerminalLinkManager extends DisposableStore {
if (uri.scheme === Schemas.file) {
// Just using fsPath here is unsafe: https://github.com/microsoft/vscode/issues/109076
const fsPath = uri.fsPath;
this._handleLocalLink(((this.osPath.sep === posix.sep) && isWindows) ? fsPath.replace(/\\/g, posix.sep) : fsPath);
this._handleLocalLink(((this._osPath.sep === posix.sep) && isWindows) ? fsPath.replace(/\\/g, posix.sep) : fsPath);
return;
}
......@@ -263,7 +263,7 @@ export class TerminalLinkManager extends DisposableStore {
return markdown.appendMarkdown(`[${label}](${uri}) (${clickLabel})`);
}
private get osPath(): IPath {
private get _osPath(): IPath {
if (!this._processManager) {
throw new Error('Process manager is required');
}
......@@ -282,7 +282,7 @@ export class TerminalLinkManager extends DisposableStore {
if (!this._processManager.userHome) {
return null;
}
link = this.osPath.join(this._processManager.userHome, link.substring(1));
link = this._osPath.join(this._processManager.userHome, link.substring(1));
} else if (link.charAt(0) !== '/' && link.charAt(0) !== '~') {
// Resolve workspace path . | .. | <relative_path> -> <path>/. | <path>/.. | <path>/<relative_path>
if (this._processManager.os === OperatingSystem.Windows) {
......@@ -291,7 +291,7 @@ export class TerminalLinkManager extends DisposableStore {
// Abort if no workspace is open
return null;
}
link = this.osPath.join(this._processCwd, link);
link = this._osPath.join(this._processCwd, link);
} else {
// Remove \\?\ from paths so that they share the same underlying
// uri and don't open multiple tabs for the same file
......@@ -302,10 +302,10 @@ export class TerminalLinkManager extends DisposableStore {
// Abort if no workspace is open
return null;
}
link = this.osPath.join(this._processCwd, link);
link = this._osPath.join(this._processCwd, link);
}
}
link = this.osPath.normalize(link);
link = this._osPath.normalize(link);
return link;
}
......
......@@ -464,11 +464,11 @@ export function registerTerminalActions() {
const codeEditorService = accessor.get(ICodeEditorService);
const instance = terminalService.getActiveOrCreateInstance();
let editor = codeEditorService.getActiveCodeEditor();
const editor = codeEditorService.getActiveCodeEditor();
if (!editor || !editor.hasModel()) {
return;
}
let selection = editor.getSelection();
const selection = editor.getSelection();
let text: string;
if (selection.isEmpty()) {
text = editor.getModel().getLineContent(selection.selectionStartLineNumber).trim();
......@@ -836,7 +836,7 @@ export function registerTerminalActions() {
const labelService = accessor.get(ILabelService);
const remoteAgentService = accessor.get(IRemoteAgentService);
const notificationService = accessor.get(INotificationService);
let offProcTerminalService = remoteAgentService.getConnection() ? accessor.get(IRemoteTerminalService) : accessor.get(ILocalTerminalService);
const offProcTerminalService = remoteAgentService.getConnection() ? accessor.get(IRemoteTerminalService) : accessor.get(ILocalTerminalService);
const terms = await offProcTerminalService.listProcesses();
......
......@@ -43,9 +43,9 @@ export class TerminalConfigHelper implements IBrowserTerminalConfigHelper {
@IConfigurationService private readonly _configurationService: IConfigurationService,
@IExtensionManagementService private readonly _extensionManagementService: IExtensionManagementService,
@INotificationService private readonly _notificationService: INotificationService,
@ITelemetryService private readonly telemetryService: ITelemetryService,
@IInstantiationService private readonly instantiationService: IInstantiationService,
@IProductService private readonly productService: IProductService,
@ITelemetryService private readonly _telemetryService: ITelemetryService,
@IInstantiationService private readonly _instantiationService: IInstantiationService,
@IProductService private readonly _productService: IProductService,
) {
this._updateConfig();
this._configurationService.onDidChangeConfiguration(e => {
......@@ -74,15 +74,15 @@ export class TerminalConfigHelper implements IBrowserTerminalConfigHelper {
public configFontIsMonospace(): boolean {
const fontSize = 15;
const fontFamily = this.config.fontFamily || this._configurationService.getValue<IEditorOptions>('editor').fontFamily || EDITOR_FONT_DEFAULTS.fontFamily;
const i_rect = this._getBoundingRectFor('i', fontFamily, fontSize);
const w_rect = this._getBoundingRectFor('w', fontFamily, fontSize);
const iRect = this._getBoundingRectFor('i', fontFamily, fontSize);
const wRect = this._getBoundingRectFor('w', fontFamily, fontSize);
// Check for invalid bounds, there is no reason to believe the font is not monospace
if (!i_rect || !w_rect || !i_rect.width || !w_rect.width) {
if (!iRect || !wRect || !iRect.width || !wRect.width) {
return true;
}
return i_rect.width === w_rect.width;
return iRect.width === wRect.width;
}
private _createCharMeasureElementIfNecessary(): HTMLElement {
......@@ -217,21 +217,21 @@ export class TerminalConfigHelper implements IBrowserTerminalConfigHelper {
return r;
}
private recommendationsShown = false;
private _recommendationsShown = false;
public async showRecommendations(shellLaunchConfig: IShellLaunchConfig): Promise<void> {
if (this.recommendationsShown) {
if (this._recommendationsShown) {
return;
}
this.recommendationsShown = true;
this._recommendationsShown = true;
if (isWindows && shellLaunchConfig.executable && basename(shellLaunchConfig.executable).toLowerCase() === 'wsl.exe') {
const exeBasedExtensionTips = this.productService.exeBasedExtensionTips;
const exeBasedExtensionTips = this._productService.exeBasedExtensionTips;
if (!exeBasedExtensionTips || !exeBasedExtensionTips.wsl) {
return;
}
const extId = Object.keys(exeBasedExtensionTips.wsl.recommendations).find(extId => exeBasedExtensionTips.wsl.recommendations[extId].important);
if (extId && ! await this.isExtensionInstalled(extId)) {
if (extId && ! await this._isExtensionInstalled(extId)) {
this._notificationService.prompt(
Severity.Info,
nls.localize(
......@@ -246,8 +246,8 @@ export class TerminalConfigHelper implements IBrowserTerminalConfigHelper {
"extensionId": { "classification": "PublicNonPersonalData", "purpose": "FeatureInsight" }
}
*/
this.telemetryService.publicLog('terminalLaunchRecommendation:popup', { userReaction: 'install', extId });
this.instantiationService.createInstance(InstallRecommendedExtensionAction, extId).run();
this._telemetryService.publicLog('terminalLaunchRecommendation:popup', { userReaction: 'install', extId });
this._instantiationService.createInstance(InstallRecommendedExtensionAction, extId).run();
}
}
],
......@@ -260,7 +260,7 @@ export class TerminalConfigHelper implements IBrowserTerminalConfigHelper {
"userReaction" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
}
*/
this.telemetryService.publicLog('terminalLaunchRecommendation:popup', { userReaction: 'cancelled' });
this._telemetryService.publicLog('terminalLaunchRecommendation:popup', { userReaction: 'cancelled' });
}
}
);
......@@ -268,7 +268,7 @@ export class TerminalConfigHelper implements IBrowserTerminalConfigHelper {
}
}
private async isExtensionInstalled(id: string): Promise<boolean> {
private async _isExtensionInstalled(id: string): Promise<boolean> {
const extensions = await this._extensionManagementService.getInstalled();
return extensions.some(e => e.identifier.id === id);
}
......
......@@ -47,7 +47,7 @@ export class TerminalFindWidget extends SimpleFindWidget {
}
}
protected onInputChanged() {
protected _onInputChanged() {
// Ignore input changes for now
const instance = this._terminalService.getActiveInstance();
if (instance !== null) {
......@@ -56,7 +56,7 @@ export class TerminalFindWidget extends SimpleFindWidget {
return false;
}
protected onFocusTrackerFocus() {
protected _onFocusTrackerFocus() {
const instance = this._terminalService.getActiveInstance();
if (instance) {
instance.notifyFindWidgetFocusChanged(true);
......@@ -64,7 +64,7 @@ export class TerminalFindWidget extends SimpleFindWidget {
this._findWidgetFocused.set(true);
}
protected onFocusTrackerBlur() {
protected _onFocusTrackerBlur() {
const instance = this._terminalService.getActiveInstance();
if (instance) {
instance.notifyFindWidgetFocusChanged(false);
......@@ -72,11 +72,11 @@ export class TerminalFindWidget extends SimpleFindWidget {
this._findWidgetFocused.reset();
}
protected onFindInputFocusTrackerFocus() {
protected _onFindInputFocusTrackerFocus() {
this._findInputFocused.set(true);
}
protected onFindInputFocusTrackerBlur() {
protected _onFindInputFocusTrackerBlur() {
this._findInputFocused.reset();
}
......
......@@ -448,7 +448,7 @@ export class TerminalProcessManager extends Disposable implements ITerminalProce
} else {
// For normal terminals write a message indicating what happened and relaunch
// using the previous shellLaunchConfig
let message = localize('ptyHostRelaunch', "Restarting the terminal because the connection to the shell process was lost...");
const message = localize('ptyHostRelaunch', "Restarting the terminal because the connection to the shell process was lost...");
this._onProcessData.fire({ data: formatMessageForTerminal(message), trackCommit: false });
await this.relaunch(this._shellLaunchConfig, this._dimensions.cols, this._dimensions.rows, this._isScreenReaderModeEnabled, false);
}
......
......@@ -18,16 +18,16 @@ export class TerminalQuickAccessProvider extends PickerQuickAccessProvider<IPick
static PREFIX = 'term ';
constructor(
@ITerminalService private readonly terminalService: ITerminalService,
@ICommandService private readonly commandService: ICommandService,
@ITerminalService private readonly _terminalService: ITerminalService,
@ICommandService private readonly _commandService: ICommandService,
) {
super(TerminalQuickAccessProvider.PREFIX, { canAcceptInBackground: true });
}
protected getPicks(filter: string): Array<IPickerQuickAccessItem | IQuickPickSeparator> {
protected _getPicks(filter: string): Array<IPickerQuickAccessItem | IQuickPickSeparator> {
const terminalPicks: Array<IPickerQuickAccessItem | IQuickPickSeparator> = [];
const terminalTabs = this.terminalService.terminalTabs;
const terminalTabs = this._terminalService.terminalTabs;
for (let tabIndex = 0; tabIndex < terminalTabs.length; tabIndex++) {
const terminalTab = terminalTabs[tabIndex];
for (let terminalIndex = 0; terminalIndex < terminalTab.terminalInstances.length; terminalIndex++) {
......@@ -52,7 +52,7 @@ export class TerminalQuickAccessProvider extends PickerQuickAccessProvider<IPick
trigger: buttonIndex => {
switch (buttonIndex) {
case 0:
this.commandService.executeCommand(TERMINAL_COMMAND_ID.RENAME, terminal);
this._commandService.executeCommand(TERMINAL_COMMAND_ID.RENAME, terminal);
return TriggerAction.NO_ACTION;
case 1:
terminal.dispose(true);
......@@ -62,8 +62,8 @@ export class TerminalQuickAccessProvider extends PickerQuickAccessProvider<IPick
return TriggerAction.NO_ACTION;
},
accept: (keyMod, event) => {
this.terminalService.setActiveInstance(terminal);
this.terminalService.showPanel(!event.inBackground);
this._terminalService.setActiveInstance(terminal);
this._terminalService.showPanel(!event.inBackground);
}
});
}
......@@ -78,13 +78,13 @@ export class TerminalQuickAccessProvider extends PickerQuickAccessProvider<IPick
terminalPicks.push({
label: `$(plus) ${createTerminalLabel}`,
ariaLabel: createTerminalLabel,
accept: () => this.commandService.executeCommand(TERMINAL_COMMAND_ID.NEW)
accept: () => this._commandService.executeCommand(TERMINAL_COMMAND_ID.NEW)
});
const createWithProfileLabel = localize("workbench.action.terminal.newWithProfilePlus", "Create New Terminal With Profile");
terminalPicks.push({
label: `$(plus) ${createWithProfileLabel}`,
ariaLabel: createWithProfileLabel,
accept: () => this.commandService.executeCommand(TERMINAL_COMMAND_ID.NEW_WITH_PROFILE)
accept: () => this._commandService.executeCommand(TERMINAL_COMMAND_ID.NEW_WITH_PROFILE)
});
return terminalPicks;
......
......@@ -43,7 +43,7 @@ export class EnvironmentVariableInfoWidget extends Widget implements ITerminalWi
const scheduler: RunOnceScheduler = new RunOnceScheduler(() => this._showHover(), this._configurationService.getValue<number>('workbench.hover.delay'));
this._register(scheduler);
let origin = { x: 0, y: 0 };
const origin = { x: 0, y: 0 };
this.onmouseover(this._domNode, e => {
origin.x = e.browserEvent.pageX;
......
......@@ -389,35 +389,35 @@ suite('Workbench - Terminal Typeahead', () => {
class TestTypeAheadAddon extends TypeAheadAddon {
public unlockMakingPredictions() {
this.lastRow = { y: 1, startingX: 100, endingX: 100, charState: CharPredictState.Validated };
this._lastRow = { y: 1, startingX: 100, endingX: 100, charState: CharPredictState.Validated };
}
public lockMakingPredictions() {
this.lastRow = undefined;
this._lastRow = undefined;
}
public unlockNavigating() {
this.lastRow = { y: 1, startingX: 1, endingX: 1, charState: CharPredictState.Validated };
this._lastRow = { y: 1, startingX: 1, endingX: 1, charState: CharPredictState.Validated };
}
public reevaluateNow() {
this.reevaluatePredictorStateNow(this.stats!, this.timeline!);
this._reevaluatePredictorStateNow(this.stats!, this._timeline!);
}
public get isShowing() {
return !!this.timeline?.isShowingPredictions;
return !!this._timeline?.isShowingPredictions;
}
public undoAllPredictions() {
this.timeline?.undoAllPredictions();
this._timeline?.undoAllPredictions();
}
public physicalCursor(buffer: IBuffer) {
return this.timeline?.physicalCursor(buffer);
return this._timeline?.physicalCursor(buffer);
}
public tentativeCursor(buffer: IBuffer) {
return this.timeline?.tentativeCursor(buffer);
return this._timeline?.tentativeCursor(buffer);
}
}
......
......@@ -46,7 +46,7 @@ export class WebviewFindWidget extends SimpleFindWidget {
this._delegate.focus();
}
public onInputChanged() {
public _onInputChanged() {
const val = this.inputValue;
if (val) {
this._delegate.startFind(val);
......@@ -56,17 +56,17 @@ export class WebviewFindWidget extends SimpleFindWidget {
return false;
}
protected onFocusTrackerFocus() {
protected _onFocusTrackerFocus() {
this._findWidgetFocused.set(true);
}
protected onFocusTrackerBlur() {
protected _onFocusTrackerBlur() {
this._findWidgetFocused.reset();
}
protected onFindInputFocusTrackerFocus() { }
protected _onFindInputFocusTrackerFocus() { }
protected onFindInputFocusTrackerBlur() { }
protected _onFindInputFocusTrackerBlur() { }
protected findFirst() { }
}
......@@ -207,7 +207,7 @@ suite('QuickAccess', () => {
super('fast');
}
protected getPicks(filter: string, disposables: DisposableStore, token: CancellationToken): Array<IQuickPickItem> {
protected _getPicks(filter: string, disposables: DisposableStore, token: CancellationToken): Array<IQuickPickItem> {
fastProviderCalled = true;
return [{ label: 'Fast Pick' }];
......@@ -220,7 +220,7 @@ suite('QuickAccess', () => {
super('slow');
}
protected async getPicks(filter: string, disposables: DisposableStore, token: CancellationToken): Promise<Array<IQuickPickItem>> {
protected async _getPicks(filter: string, disposables: DisposableStore, token: CancellationToken): Promise<Array<IQuickPickItem>> {
slowProviderCalled = true;
await timeout(1);
......@@ -239,7 +239,7 @@ suite('QuickAccess', () => {
super('bothFastAndSlow');
}
protected getPicks(filter: string, disposables: DisposableStore, token: CancellationToken): FastAndSlowPicks<IQuickPickItem> {
protected _getPicks(filter: string, disposables: DisposableStore, token: CancellationToken): FastAndSlowPicks<IQuickPickItem> {
fastAndSlowProviderCalled = true;
return {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册