From fe103b623ea904370ab0c4ebb3a60732be034a69 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Mon, 31 Jan 2022 17:26:56 +0100 Subject: [PATCH] replace `InlineValuesProviderRegistry` with service property --- src/vs/editor/common/languages.ts | 5 ----- src/vs/editor/common/services/languageFeatures.ts | 6 +++++- .../common/services/languageFeaturesService.ts | 6 +++++- .../api/browser/mainThreadLanguageFeatures.ts | 2 +- .../debug/browser/debugEditorContribution.ts | 14 ++++++++------ 5 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/vs/editor/common/languages.ts b/src/vs/editor/common/languages.ts index 0e5f8f554b6..152b4ea5ccb 100644 --- a/src/vs/editor/common/languages.ts +++ b/src/vs/editor/common/languages.ts @@ -1892,11 +1892,6 @@ export interface DocumentRangeSemanticTokensProvider { */ export const EvaluatableExpressionProviderRegistry = new LanguageFeatureRegistry(); -/** - * @internal - */ -export const InlineValuesProviderRegistry = new LanguageFeatureRegistry(); - /** * @internal */ diff --git a/src/vs/editor/common/services/languageFeatures.ts b/src/vs/editor/common/services/languageFeatures.ts index 8c29af7bfb9..eb45967b1f7 100644 --- a/src/vs/editor/common/services/languageFeatures.ts +++ b/src/vs/editor/common/services/languageFeatures.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { LanguageFeatureRegistry } from 'vs/editor/common/languageFeatureRegistry'; -import { CodeLensProvider, CompletionItemProvider, DeclarationProvider, DefinitionProvider, DocumentColorProvider, DocumentFormattingEditProvider, DocumentHighlightProvider, DocumentRangeFormattingEditProvider, DocumentSymbolProvider, FoldingRangeProvider, HoverProvider, ImplementationProvider, InlayHintsProvider, InlineCompletionsProvider, LinkedEditingRangeProvider, LinkProvider, OnTypeFormattingEditProvider, ReferenceProvider, RenameProvider, SelectionRangeProvider, SignatureHelpProvider, TypeDefinitionProvider } from 'vs/editor/common/languages'; +import { CodeLensProvider, CompletionItemProvider, DeclarationProvider, DefinitionProvider, DocumentColorProvider, DocumentFormattingEditProvider, DocumentHighlightProvider, DocumentRangeFormattingEditProvider, DocumentSymbolProvider, FoldingRangeProvider, HoverProvider, ImplementationProvider, InlayHintsProvider, InlineCompletionsProvider, InlineValuesProvider, LinkedEditingRangeProvider, LinkProvider, OnTypeFormattingEditProvider, ReferenceProvider, RenameProvider, SelectionRangeProvider, SignatureHelpProvider, TypeDefinitionProvider } from 'vs/editor/common/languages'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; export const ILanguageFeaturesService = createDecorator('ILanguageFeaturesService'); @@ -66,4 +66,8 @@ export interface ILanguageFeaturesService { readonly completionProvider: LanguageFeatureRegistry; readonly linkedEditingRangeProvider: LanguageFeatureRegistry; + + // --- debug + + readonly inlineValuesProvider: LanguageFeatureRegistry; } diff --git a/src/vs/editor/common/services/languageFeaturesService.ts b/src/vs/editor/common/services/languageFeaturesService.ts index 91eb7215391..c6ab6caca38 100644 --- a/src/vs/editor/common/services/languageFeaturesService.ts +++ b/src/vs/editor/common/services/languageFeaturesService.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { LanguageFeatureRegistry } from 'vs/editor/common/languageFeatureRegistry'; -import { CodeLensProvider, CompletionItemProvider, DeclarationProvider, DefinitionProvider, DocumentColorProvider, DocumentFormattingEditProvider, DocumentHighlightProvider, DocumentRangeFormattingEditProvider, DocumentSymbolProvider, FoldingRangeProvider, HoverProvider, ImplementationProvider, InlayHintsProvider, InlineCompletionsProvider, LinkedEditingRangeProvider, LinkProvider, OnTypeFormattingEditProvider, ReferenceProvider, RenameProvider, SelectionRangeProvider, SignatureHelpProvider, TypeDefinitionProvider } from 'vs/editor/common/languages'; +import { CodeLensProvider, CompletionItemProvider, DeclarationProvider, DefinitionProvider, DocumentColorProvider, DocumentFormattingEditProvider, DocumentHighlightProvider, DocumentRangeFormattingEditProvider, DocumentSymbolProvider, FoldingRangeProvider, HoverProvider, ImplementationProvider, InlayHintsProvider, InlineCompletionsProvider, InlineValuesProvider, LinkedEditingRangeProvider, LinkProvider, OnTypeFormattingEditProvider, ReferenceProvider, RenameProvider, SelectionRangeProvider, SignatureHelpProvider, TypeDefinitionProvider } from 'vs/editor/common/languages'; import { ILanguageFeaturesService } from 'vs/editor/common/services/languageFeatures'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; @@ -56,6 +56,10 @@ export class LanguageFeaturesService implements ILanguageFeaturesService { readonly linkedEditingRangeProvider = new LanguageFeatureRegistry(); + // --- debug + + readonly inlineValuesProvider = new LanguageFeatureRegistry(); + } registerSingleton(ILanguageFeaturesService, LanguageFeaturesService, true); diff --git a/src/vs/workbench/api/browser/mainThreadLanguageFeatures.ts b/src/vs/workbench/api/browser/mainThreadLanguageFeatures.ts index eded349ffd2..896dc01183f 100644 --- a/src/vs/workbench/api/browser/mainThreadLanguageFeatures.ts +++ b/src/vs/workbench/api/browser/mainThreadLanguageFeatures.ts @@ -279,7 +279,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha provider.onDidChangeInlineValues = emitter.event; } - this._registrations.set(handle, modes.InlineValuesProviderRegistry.register(selector, provider)); + this._registrations.set(handle, this._languageFeaturesService.inlineValuesProvider.register(selector, provider)); } $emitInlineValuesEvent(eventHandle: number, event?: any): void { diff --git a/src/vs/workbench/contrib/debug/browser/debugEditorContribution.ts b/src/vs/workbench/contrib/debug/browser/debugEditorContribution.ts index d97a618696c..72e94ffe23d 100644 --- a/src/vs/workbench/contrib/debug/browser/debugEditorContribution.ts +++ b/src/vs/workbench/contrib/debug/browser/debugEditorContribution.ts @@ -12,7 +12,7 @@ import { setProperty } from 'vs/base/common/jsonEdit'; import { Constants } from 'vs/base/common/uint'; import { KeyCode } from 'vs/base/common/keyCodes'; import { IKeyboardEvent, StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; -import { InlineValueContext, InlineValuesProviderRegistry, StandardTokenType } from 'vs/editor/common/languages'; +import { InlineValueContext, StandardTokenType } from 'vs/editor/common/languages'; import { CancellationTokenSource } from 'vs/base/common/cancellation'; import { distinct, flatten } from 'vs/base/common/arrays'; import { onUnexpectedExternalError } from 'vs/base/common/errors'; @@ -45,6 +45,7 @@ import { Expression } from 'vs/workbench/contrib/debug/common/debugModel'; import { registerColor } from 'vs/platform/theme/common/colorRegistry'; import { addDisposableListener } from 'vs/base/browser/dom'; import { DomEmitter } from 'vs/base/browser/event'; +import { ILanguageFeaturesService } from 'vs/editor/common/services/languageFeatures'; const LAUNCH_JSON_REGEX = /\.vscode\/launch\.json$/; const MAX_NUM_INLINE_VALUES = 100; // JS Global scope can have 700+ entries. We want to limit ourselves for perf reasons @@ -227,7 +228,8 @@ export class DebugEditorContribution implements IDebugEditorContribution { @IConfigurationService private readonly configurationService: IConfigurationService, @IHostService private readonly hostService: IHostService, @IUriIdentityService private readonly uriIdentityService: IUriIdentityService, - @IContextKeyService contextKeyService: IContextKeyService + @IContextKeyService contextKeyService: IContextKeyService, + @ILanguageFeaturesService private readonly languageFeaturesService: ILanguageFeaturesService, ) { this.hoverWidget = this.instantiationService.createInstance(DebugHoverWidget, this.editor); this.toDispose = []; @@ -279,7 +281,7 @@ export class DebugEditorContribution implements IDebugEditorContribution { // Inline value provider should get called on view port change const model = this.editor.getModel(); - if (model && InlineValuesProviderRegistry.has(model)) { + if (model && this.languageFeaturesService.inlineValuesProvider.has(model)) { this.updateInlineValuesScheduler.schedule(); } })); @@ -616,7 +618,7 @@ export class DebugEditorContribution implements IDebugEditorContribution { const model = this.editor.getModel(); const inlineValuesSetting = this.configurationService.getValue('debug').inlineValues; - const inlineValuesTurnedOn = inlineValuesSetting === true || (inlineValuesSetting === 'auto' && model && InlineValuesProviderRegistry.has(model)); + const inlineValuesTurnedOn = inlineValuesSetting === true || (inlineValuesSetting === 'auto' && model && this.languageFeaturesService.inlineValuesProvider.has(model)); if (!inlineValuesTurnedOn || !model || !stackFrame || model.uri.toString() !== stackFrame.source.uri.toString()) { if (!this.removeInlineValuesScheduler.isScheduled()) { this.removeInlineValuesScheduler.schedule(); @@ -628,7 +630,7 @@ export class DebugEditorContribution implements IDebugEditorContribution { let allDecorations: IModelDeltaDecoration[]; - if (InlineValuesProviderRegistry.has(model)) { + if (this.languageFeaturesService.inlineValuesProvider.has(model)) { const findVariable = async (_key: string, caseSensitiveLookup: boolean): Promise => { const scopes = await stackFrame.getMostSpecificScopes(stackFrame.range); @@ -650,7 +652,7 @@ export class DebugEditorContribution implements IDebugEditorContribution { const token = new CancellationTokenSource().token; const ranges = this.editor.getVisibleRangesPlusViewportAboveBelow(); - const providers = InlineValuesProviderRegistry.ordered(model).reverse(); + const providers = this.languageFeaturesService.inlineValuesProvider.ordered(model).reverse(); allDecorations = []; const lineDecorations = new Map();