Path: blob/main/src/vs/editor/common/services/languageFeaturesService.ts
3294 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { URI } from '../../../base/common/uri.js';6import { LanguageFeatureRegistry, NotebookInfo, NotebookInfoResolver } from '../languageFeatureRegistry.js';7import { CodeActionProvider, CodeLensProvider, CompletionItemProvider, DocumentPasteEditProvider, DeclarationProvider, DefinitionProvider, DocumentColorProvider, DocumentFormattingEditProvider, MultiDocumentHighlightProvider, DocumentHighlightProvider, DocumentDropEditProvider, DocumentRangeFormattingEditProvider, DocumentRangeSemanticTokensProvider, DocumentSemanticTokensProvider, DocumentSymbolProvider, EvaluatableExpressionProvider, FoldingRangeProvider, HoverProvider, ImplementationProvider, InlayHintsProvider, InlineCompletionsProvider, InlineValuesProvider, LinkedEditingRangeProvider, LinkProvider, OnTypeFormattingEditProvider, ReferenceProvider, RenameProvider, SelectionRangeProvider, SignatureHelpProvider, TypeDefinitionProvider, NewSymbolNamesProvider } from '../languages.js';8import { ILanguageFeaturesService } from './languageFeatures.js';9import { InstantiationType, registerSingleton } from '../../../platform/instantiation/common/extensions.js';1011export class LanguageFeaturesService implements ILanguageFeaturesService {1213declare _serviceBrand: undefined;1415readonly referenceProvider = new LanguageFeatureRegistry<ReferenceProvider>(this._score.bind(this));16readonly renameProvider = new LanguageFeatureRegistry<RenameProvider>(this._score.bind(this));17readonly newSymbolNamesProvider = new LanguageFeatureRegistry<NewSymbolNamesProvider>(this._score.bind(this));18readonly codeActionProvider = new LanguageFeatureRegistry<CodeActionProvider>(this._score.bind(this));19readonly definitionProvider = new LanguageFeatureRegistry<DefinitionProvider>(this._score.bind(this));20readonly typeDefinitionProvider = new LanguageFeatureRegistry<TypeDefinitionProvider>(this._score.bind(this));21readonly declarationProvider = new LanguageFeatureRegistry<DeclarationProvider>(this._score.bind(this));22readonly implementationProvider = new LanguageFeatureRegistry<ImplementationProvider>(this._score.bind(this));23readonly documentSymbolProvider = new LanguageFeatureRegistry<DocumentSymbolProvider>(this._score.bind(this));24readonly inlayHintsProvider = new LanguageFeatureRegistry<InlayHintsProvider>(this._score.bind(this));25readonly colorProvider = new LanguageFeatureRegistry<DocumentColorProvider>(this._score.bind(this));26readonly codeLensProvider = new LanguageFeatureRegistry<CodeLensProvider>(this._score.bind(this));27readonly documentFormattingEditProvider = new LanguageFeatureRegistry<DocumentFormattingEditProvider>(this._score.bind(this));28readonly documentRangeFormattingEditProvider = new LanguageFeatureRegistry<DocumentRangeFormattingEditProvider>(this._score.bind(this));29readonly onTypeFormattingEditProvider = new LanguageFeatureRegistry<OnTypeFormattingEditProvider>(this._score.bind(this));30readonly signatureHelpProvider = new LanguageFeatureRegistry<SignatureHelpProvider>(this._score.bind(this));31readonly hoverProvider = new LanguageFeatureRegistry<HoverProvider>(this._score.bind(this));32readonly documentHighlightProvider = new LanguageFeatureRegistry<DocumentHighlightProvider>(this._score.bind(this));33readonly multiDocumentHighlightProvider = new LanguageFeatureRegistry<MultiDocumentHighlightProvider>(this._score.bind(this));34readonly selectionRangeProvider = new LanguageFeatureRegistry<SelectionRangeProvider>(this._score.bind(this));35readonly foldingRangeProvider = new LanguageFeatureRegistry<FoldingRangeProvider>(this._score.bind(this));36readonly linkProvider = new LanguageFeatureRegistry<LinkProvider>(this._score.bind(this));37readonly inlineCompletionsProvider = new LanguageFeatureRegistry<InlineCompletionsProvider>(this._score.bind(this));38readonly completionProvider = new LanguageFeatureRegistry<CompletionItemProvider>(this._score.bind(this));39readonly linkedEditingRangeProvider = new LanguageFeatureRegistry<LinkedEditingRangeProvider>(this._score.bind(this));40readonly inlineValuesProvider = new LanguageFeatureRegistry<InlineValuesProvider>(this._score.bind(this));41readonly evaluatableExpressionProvider = new LanguageFeatureRegistry<EvaluatableExpressionProvider>(this._score.bind(this));42readonly documentRangeSemanticTokensProvider = new LanguageFeatureRegistry<DocumentRangeSemanticTokensProvider>(this._score.bind(this));43readonly documentSemanticTokensProvider = new LanguageFeatureRegistry<DocumentSemanticTokensProvider>(this._score.bind(this));44readonly documentDropEditProvider = new LanguageFeatureRegistry<DocumentDropEditProvider>(this._score.bind(this));45readonly documentPasteEditProvider = new LanguageFeatureRegistry<DocumentPasteEditProvider>(this._score.bind(this));4647private _notebookTypeResolver?: NotebookInfoResolver;4849setNotebookTypeResolver(resolver: NotebookInfoResolver | undefined) {50this._notebookTypeResolver = resolver;51}5253private _score(uri: URI): NotebookInfo | undefined {54return this._notebookTypeResolver?.(uri);55}5657}5859registerSingleton(ILanguageFeaturesService, LanguageFeaturesService, InstantiationType.Delayed);606162