replace InlineValuesProviderRegistry with service property

This commit is contained in:
Johannes Rieken
2022-01-31 17:26:56 +01:00
parent 672633f825
commit fe103b623e
5 changed files with 19 additions and 14 deletions
-5
View File
@@ -1892,11 +1892,6 @@ export interface DocumentRangeSemanticTokensProvider {
*/
export const EvaluatableExpressionProviderRegistry = new LanguageFeatureRegistry<EvaluatableExpressionProvider>();
/**
* @internal
*/
export const InlineValuesProviderRegistry = new LanguageFeatureRegistry<InlineValuesProvider>();
/**
* @internal
*/
@@ -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>('ILanguageFeaturesService');
@@ -66,4 +66,8 @@ export interface ILanguageFeaturesService {
readonly completionProvider: LanguageFeatureRegistry<CompletionItemProvider>;
readonly linkedEditingRangeProvider: LanguageFeatureRegistry<LinkedEditingRangeProvider>;
// --- debug
readonly inlineValuesProvider: LanguageFeatureRegistry<InlineValuesProvider>;
}
@@ -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<LinkedEditingRangeProvider>();
// --- debug
readonly inlineValuesProvider = new LanguageFeatureRegistry<InlineValuesProvider>();
}
registerSingleton(ILanguageFeaturesService, LanguageFeaturesService, true);
@@ -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 {
@@ -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<IDebugConfiguration>('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<string | undefined> => {
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<number, InlineSegment[]>();