diff --git a/src/vs/vscode.d.ts b/src/vs/vscode.d.ts index 1d7fb5ac180..b6cc6de2f61 100644 --- a/src/vs/vscode.d.ts +++ b/src/vs/vscode.d.ts @@ -2587,6 +2587,14 @@ declare module 'vscode' { provideDocumentSymbols(document: TextDocument, token: CancellationToken): ProviderResult; } + export interface DocumentSymbolProviderMetadata { + /** + * If there is more than one outline provider, this name will be used in the outline tree to + * distinguish between them. + */ + displayName?: string; + } + /** * The workspace symbol provider interface defines the contract between extensions and * the [symbol search](https://code.visualstudio.com/docs/editor/editingevolved#_open-symbol-by-name)-feature. @@ -7747,9 +7755,10 @@ declare module 'vscode' { * * @param selector A selector that defines the documents this provider is applicable to. * @param provider A document symbol provider. + * @param metaData metadata about the provider * @return A [disposable](#Disposable) that unregisters this provider when being disposed. */ - export function registerDocumentSymbolProvider(selector: DocumentSelector, provider: DocumentSymbolProvider): Disposable; + export function registerDocumentSymbolProvider(selector: DocumentSelector, provider: DocumentSymbolProvider, metaData?: DocumentSymbolProviderMetadata): Disposable; /** * Register a workspace symbol provider. diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index 834d2df052a..ecacee6bdd7 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -320,8 +320,8 @@ export function createApiFactory( registerRenameProvider(selector: vscode.DocumentSelector, provider: vscode.RenameProvider): vscode.Disposable { return extHostLanguageFeatures.registerRenameProvider(extension, checkSelector(selector), provider); }, - registerDocumentSymbolProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentSymbolProvider): vscode.Disposable { - return extHostLanguageFeatures.registerDocumentSymbolProvider(extension, checkSelector(selector), provider); + registerDocumentSymbolProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentSymbolProvider, metadata?: vscode.DocumentSymbolProviderMetadata): vscode.Disposable { + return extHostLanguageFeatures.registerDocumentSymbolProvider(extension, checkSelector(selector), provider, metadata); }, registerWorkspaceSymbolProvider(provider: vscode.WorkspaceSymbolProvider): vscode.Disposable { return extHostLanguageFeatures.registerWorkspaceSymbolProvider(extension, provider); diff --git a/src/vs/workbench/api/node/extHostLanguageFeatures.ts b/src/vs/workbench/api/node/extHostLanguageFeatures.ts index c02ff8a5e2a..8ccfbf44676 100644 --- a/src/vs/workbench/api/node/extHostLanguageFeatures.ts +++ b/src/vs/workbench/api/node/extHostLanguageFeatures.ts @@ -973,9 +973,10 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { // --- outline - registerDocumentSymbolProvider(extension: IExtensionDescription, selector: vscode.DocumentSelector, provider: vscode.DocumentSymbolProvider): vscode.Disposable { + registerDocumentSymbolProvider(extension: IExtensionDescription, selector: vscode.DocumentSelector, provider: vscode.DocumentSymbolProvider, metadata?: vscode.DocumentSymbolProviderMetadata): vscode.Disposable { const handle = this._addNewAdapter(new OutlineAdapter(this._documents, provider), extension); - this._proxy.$registerOutlineSupport(handle, this._transformDocumentSelector(selector), extension ? extension.displayName || extension.name : undefined); + const displayName = (metadata && metadata.displayName) || (extension && (extension.displayName || extension.name)) || undefined; + this._proxy.$registerOutlineSupport(handle, this._transformDocumentSelector(selector), displayName); return this._createDisposable(handle); }