mirror of
https://github.com/microsoft/vscode.git
synced 2026-05-14 12:11:43 +01:00
replace DeclarationProviderRegistry with service property
This commit is contained in:
@@ -1949,7 +1949,7 @@ export class EditorModeContext extends Disposable {
|
||||
this._register(modes.CodeActionProviderRegistry.onDidChange(update));
|
||||
this._register(_languageFeaturesService.codeLensProvider.onDidChange(update));
|
||||
this._register(_languageFeaturesService.definitionProvider.onDidChange(update));
|
||||
this._register(modes.DeclarationProviderRegistry.onDidChange(update));
|
||||
this._register(_languageFeaturesService.declarationProvider.onDidChange(update));
|
||||
this._register(modes.ImplementationProviderRegistry.onDidChange(update));
|
||||
this._register(_languageFeaturesService.typeDefinitionProvider.onDidChange(update));
|
||||
this._register(modes.HoverProviderRegistry.onDidChange(update));
|
||||
@@ -2003,7 +2003,7 @@ export class EditorModeContext extends Disposable {
|
||||
this._hasCodeActionsProvider.set(modes.CodeActionProviderRegistry.has(model));
|
||||
this._hasCodeLensProvider.set(this._languageFeaturesService.codeLensProvider.has(model));
|
||||
this._hasDefinitionProvider.set(this._languageFeaturesService.definitionProvider.has(model));
|
||||
this._hasDeclarationProvider.set(modes.DeclarationProviderRegistry.has(model));
|
||||
this._hasDeclarationProvider.set(this._languageFeaturesService.declarationProvider.has(model));
|
||||
this._hasImplementationProvider.set(modes.ImplementationProviderRegistry.has(model));
|
||||
this._hasTypeDefinitionProvider.set(this._languageFeaturesService.typeDefinitionProvider.has(model));
|
||||
this._hasHoverProvider.set(modes.HoverProviderRegistry.has(model));
|
||||
|
||||
@@ -1927,11 +1927,6 @@ export const DocumentHighlightProviderRegistry = new LanguageFeatureRegistry<Doc
|
||||
*/
|
||||
export const LinkedEditingRangeProviderRegistry = new LanguageFeatureRegistry<LinkedEditingRangeProvider>();
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export const DeclarationProviderRegistry = new LanguageFeatureRegistry<DeclarationProvider>();
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { LanguageFeatureRegistry } from 'vs/editor/common/languageFeatureRegistry';
|
||||
import { CodeLensProvider, DefinitionProvider, DocumentFormattingEditProvider, DocumentRangeFormattingEditProvider, DocumentSymbolProvider, InlayHintsProvider, OnTypeFormattingEditProvider, ReferenceProvider, RenameProvider, TypeDefinitionProvider } from 'vs/editor/common/languages';
|
||||
import { CodeLensProvider, DeclarationProvider, DefinitionProvider, DocumentFormattingEditProvider, DocumentRangeFormattingEditProvider, DocumentSymbolProvider, InlayHintsProvider, OnTypeFormattingEditProvider, ReferenceProvider, RenameProvider, TypeDefinitionProvider } from 'vs/editor/common/languages';
|
||||
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
||||
|
||||
export const ILanguageFeaturesService = createDecorator<ILanguageFeaturesService>('ILanguageFeaturesService');
|
||||
@@ -19,6 +19,8 @@ export interface ILanguageFeaturesService {
|
||||
|
||||
readonly typeDefinitionProvider: LanguageFeatureRegistry<TypeDefinitionProvider>;
|
||||
|
||||
readonly declarationProvider: LanguageFeatureRegistry<DeclarationProvider>;
|
||||
|
||||
readonly renameProvider: LanguageFeatureRegistry<RenameProvider>;
|
||||
|
||||
readonly documentSymbolProvider: LanguageFeatureRegistry<DocumentSymbolProvider>;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { LanguageFeatureRegistry } from 'vs/editor/common/languageFeatureRegistry';
|
||||
import { CodeLensProvider, DefinitionProvider, DocumentFormattingEditProvider, DocumentRangeFormattingEditProvider, DocumentSymbolProvider, InlayHintsProvider, OnTypeFormattingEditProvider, ReferenceProvider, RenameProvider, TypeDefinitionProvider } from 'vs/editor/common/languages';
|
||||
import { CodeLensProvider, DeclarationProvider, DefinitionProvider, DocumentFormattingEditProvider, DocumentRangeFormattingEditProvider, DocumentSymbolProvider, InlayHintsProvider, OnTypeFormattingEditProvider, ReferenceProvider, RenameProvider, TypeDefinitionProvider } from 'vs/editor/common/languages';
|
||||
import { ILanguageFeaturesService } from 'vs/editor/common/services/languageFeatures';
|
||||
import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
|
||||
|
||||
@@ -20,6 +20,8 @@ export class LanguageFeatureService implements ILanguageFeaturesService {
|
||||
|
||||
readonly typeDefinitionProvider = new LanguageFeatureRegistry<TypeDefinitionProvider>();
|
||||
|
||||
readonly declarationProvider = new LanguageFeatureRegistry<DeclarationProvider>();
|
||||
|
||||
readonly documentSymbolProvider = new LanguageFeatureRegistry<DocumentSymbolProvider>();
|
||||
|
||||
readonly inlayHintsProvider = new LanguageFeatureRegistry<InlayHintsProvider>();
|
||||
|
||||
@@ -357,7 +357,7 @@ registerGoToAction(class PeekDefinitionAction extends DefinitionAction {
|
||||
class DeclarationAction extends SymbolNavigationAction {
|
||||
|
||||
protected async _getLocationModel(languageFeaturesService: ILanguageFeaturesService, model: ITextModel, position: corePosition.Position, token: CancellationToken): Promise<ReferencesModel> {
|
||||
return new ReferencesModel(await getDeclarationsAtPosition(model, position, token), nls.localize('decl.title', 'Declarations'));
|
||||
return new ReferencesModel(await getDeclarationsAtPosition(languageFeaturesService.declarationProvider, model, position, token), nls.localize('decl.title', 'Declarations'));
|
||||
}
|
||||
|
||||
protected _getNoResultFoundMessage(info: IWordAtPosition | null): string {
|
||||
|
||||
@@ -8,7 +8,7 @@ import { onUnexpectedExternalError } from 'vs/base/common/errors';
|
||||
import { registerModelAndPositionCommand } from 'vs/editor/browser/editorExtensions';
|
||||
import { Position } from 'vs/editor/common/core/position';
|
||||
import { ITextModel } from 'vs/editor/common/model';
|
||||
import { DeclarationProviderRegistry, DefinitionProvider, ImplementationProviderRegistry, LocationLink, ProviderResult, ReferenceProvider, TypeDefinitionProvider } from 'vs/editor/common/languages';
|
||||
import { DeclarationProvider, DefinitionProvider, ImplementationProviderRegistry, LocationLink, ProviderResult, ReferenceProvider, TypeDefinitionProvider } from 'vs/editor/common/languages';
|
||||
import { LanguageFeatureRegistry } from 'vs/editor/common/languageFeatureRegistry';
|
||||
import { ReferencesModel } from 'vs/editor/contrib/gotoSymbol/browser/referencesModel';
|
||||
import { ILanguageFeaturesService } from 'vs/editor/common/services/languageFeatures';
|
||||
@@ -48,8 +48,8 @@ export function getDefinitionsAtPosition(registry: LanguageFeatureRegistry<Defin
|
||||
});
|
||||
}
|
||||
|
||||
export function getDeclarationsAtPosition(model: ITextModel, position: Position, token: CancellationToken): Promise<LocationLink[]> {
|
||||
return getLocationLinks(model, position, DeclarationProviderRegistry, (provider, model, position) => {
|
||||
export function getDeclarationsAtPosition(registry: LanguageFeatureRegistry<DeclarationProvider>, model: ITextModel, position: Position, token: CancellationToken): Promise<LocationLink[]> {
|
||||
return getLocationLinks(model, position, registry, (provider, model, position) => {
|
||||
return provider.provideDeclaration(model, position, token);
|
||||
});
|
||||
}
|
||||
@@ -93,16 +93,20 @@ async function _sortedAndDeduped(callback: () => Promise<LocationLink[]>): Promi
|
||||
registerModelAndPositionCommand('_executeDefinitionProvider', (accessor, model, position) => {
|
||||
const languageFeaturesService = accessor.get(ILanguageFeaturesService);
|
||||
const promise = getDefinitionsAtPosition(languageFeaturesService.definitionProvider, model, position, CancellationToken.None);
|
||||
_sortedAndDeduped(() => promise);
|
||||
return _sortedAndDeduped(() => promise);
|
||||
});
|
||||
|
||||
registerModelAndPositionCommand('_executeTypeDefinitionProvider', (accessor, model, position) => {
|
||||
const languageFeaturesService = accessor.get(ILanguageFeaturesService);
|
||||
const promise = getTypeDefinitionsAtPosition(languageFeaturesService.typeDefinitionProvider, model, position, CancellationToken.None);
|
||||
_sortedAndDeduped(() => promise);
|
||||
return _sortedAndDeduped(() => promise);
|
||||
});
|
||||
|
||||
registerModelAndPositionCommand('_executeDeclarationProvider', (_accessor, model, position) => _sortedAndDeduped(() => getDeclarationsAtPosition(model, position, CancellationToken.None)));
|
||||
registerModelAndPositionCommand('_executeDeclarationProvider', (accessor, model, position) => {
|
||||
const languageFeaturesService = accessor.get(ILanguageFeaturesService);
|
||||
const promise = getDeclarationsAtPosition(languageFeaturesService.declarationProvider, model, position, CancellationToken.None);
|
||||
return _sortedAndDeduped(() => promise);
|
||||
});
|
||||
|
||||
registerModelAndPositionCommand('_executeReferenceProvider', (accessor, model, position) => {
|
||||
const languageFeaturesService = accessor.get(ILanguageFeaturesService);
|
||||
|
||||
@@ -582,7 +582,8 @@ export function registerFoldingRangeProvider(languageId: string, provider: langu
|
||||
* Register a declaration provider
|
||||
*/
|
||||
export function registerDeclarationProvider(languageId: string, provider: languages.DeclarationProvider): IDisposable {
|
||||
return languages.DeclarationProviderRegistry.register(languageId, provider);
|
||||
const languageFeaturesService = StandaloneServices.get(ILanguageFeaturesService);
|
||||
return languageFeaturesService.declarationProvider.register(languageId, provider);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -221,7 +221,7 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha
|
||||
}
|
||||
|
||||
$registerDeclarationSupport(handle: number, selector: IDocumentFilterDto[]): void {
|
||||
this._registrations.set(handle, modes.DeclarationProviderRegistry.register(selector, <modes.DeclarationProvider>{
|
||||
this._registrations.set(handle, this._languageFeaturesService.declarationProvider.register(selector, <modes.DeclarationProvider>{
|
||||
provideDeclaration: (model, position, token) => {
|
||||
return this._proxy.$provideDeclaration(handle, model.uri, position, token).then(MainThreadLanguageFeatures._reviveLocationLinkDto);
|
||||
}
|
||||
|
||||
@@ -356,7 +356,7 @@ suite('ExtHostLanguageFeatures', function () {
|
||||
}));
|
||||
|
||||
await rpcProtocol.sync();
|
||||
let value = await getDeclarationsAtPosition(model, new EditorPosition(1, 1), CancellationToken.None);
|
||||
let value = await getDeclarationsAtPosition(languageFeaturesService.declarationProvider, model, new EditorPosition(1, 1), CancellationToken.None);
|
||||
assert.strictEqual(value.length, 1);
|
||||
let [entry] = value;
|
||||
assert.deepStrictEqual(entry.range, { startLineNumber: 2, startColumn: 3, endLineNumber: 4, endColumn: 5 });
|
||||
|
||||
Reference in New Issue
Block a user