From 2a270de217a6860551d2c1042e7156ff01356f07 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Mon, 14 May 2018 14:27:26 +0200 Subject: [PATCH] add extensionId to DocumentSymbolProvider interface --- src/vs/editor/common/modes.ts | 3 +++ src/vs/monaco.d.ts | 1 + .../api/electron-browser/mainThreadLanguageFeatures.ts | 3 ++- src/vs/workbench/api/node/extHost.api.impl.ts | 2 +- src/vs/workbench/api/node/extHost.protocol.ts | 2 +- src/vs/workbench/api/node/extHostLanguageFeatures.ts | 4 ++-- .../parts/outline/electron-browser/outlineModel.ts | 7 +++---- 7 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/vs/editor/common/modes.ts b/src/vs/editor/common/modes.ts index 97a3a1ab345..6b7ae998466 100644 --- a/src/vs/editor/common/modes.ts +++ b/src/vs/editor/common/modes.ts @@ -676,6 +676,9 @@ export interface SymbolInformation { * the [go to symbol](https://code.visualstudio.com/docs/editor/editingevolved#_goto-symbol)-feature. */ export interface DocumentSymbolProvider { + + extensionId?: string; + /** * Provide symbol information for the given document. */ diff --git a/src/vs/monaco.d.ts b/src/vs/monaco.d.ts index 5867d5cabbb..9aeabdb729a 100644 --- a/src/vs/monaco.d.ts +++ b/src/vs/monaco.d.ts @@ -4893,6 +4893,7 @@ declare namespace monaco.languages { * the [go to symbol](https://code.visualstudio.com/docs/editor/editingevolved#_goto-symbol)-feature. */ export interface DocumentSymbolProvider { + extensionId?: string; /** * Provide symbol information for the given document. */ diff --git a/src/vs/workbench/api/electron-browser/mainThreadLanguageFeatures.ts b/src/vs/workbench/api/electron-browser/mainThreadLanguageFeatures.ts index c25c6477b50..1e2e17a9433 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadLanguageFeatures.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadLanguageFeatures.ts @@ -97,8 +97,9 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha // --- outline - $registerOutlineSupport(handle: number, selector: ISerializedDocumentFilter[]): void { + $registerOutlineSupport(handle: number, selector: ISerializedDocumentFilter[], extensionId: string): void { this._registrations[handle] = modes.DocumentSymbolProviderRegistry.register(typeConverters.LanguageSelector.from(selector), { + extensionId, provideDocumentSymbols: (model: ITextModel, token: CancellationToken): Thenable => { return wireCancellationToken(token, this._proxy.$provideDocumentSymbols(handle, model.uri)).then(MainThreadLanguageFeatures._reviveSymbolInformationDto); } diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index 1334c6cb44d..e3a63ed328d 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -285,7 +285,7 @@ export function createApiFactory( return extHostLanguageFeatures.registerRenameProvider(checkSelector(selector), provider); }, registerDocumentSymbolProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentSymbolProvider): vscode.Disposable { - return extHostLanguageFeatures.registerDocumentSymbolProvider(checkSelector(selector), provider); + return extHostLanguageFeatures.registerDocumentSymbolProvider(checkSelector(selector), provider, extension.id); }, registerWorkspaceSymbolProvider(provider: vscode.WorkspaceSymbolProvider): vscode.Disposable { return extHostLanguageFeatures.registerWorkspaceSymbolProvider(provider); diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 870a18c2358..ec48069d253 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -263,7 +263,7 @@ export interface ISerializedDocumentFilter { export interface MainThreadLanguageFeaturesShape extends IDisposable { $unregister(handle: number): void; - $registerOutlineSupport(handle: number, selector: ISerializedDocumentFilter[]): void; + $registerOutlineSupport(handle: number, selector: ISerializedDocumentFilter[], extensionId: string): void; $registerCodeLensSupport(handle: number, selector: ISerializedDocumentFilter[], eventHandle: number): void; $emitCodeLensEvent(eventHandle: number, event?: any): void; $registerDeclaractionSupport(handle: number, selector: ISerializedDocumentFilter[]): void; diff --git a/src/vs/workbench/api/node/extHostLanguageFeatures.ts b/src/vs/workbench/api/node/extHostLanguageFeatures.ts index a5c89164b99..44222b9b03b 100644 --- a/src/vs/workbench/api/node/extHostLanguageFeatures.ts +++ b/src/vs/workbench/api/node/extHostLanguageFeatures.ts @@ -928,9 +928,9 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { // --- outline - registerDocumentSymbolProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentSymbolProvider): vscode.Disposable { + registerDocumentSymbolProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentSymbolProvider, extensionId?: string): vscode.Disposable { const handle = this._addNewAdapter(new OutlineAdapter(this._documents, provider)); - this._proxy.$registerOutlineSupport(handle, this._transformDocumentSelector(selector)); + this._proxy.$registerOutlineSupport(handle, this._transformDocumentSelector(selector), extensionId); return this._createDisposable(handle); } diff --git a/src/vs/workbench/parts/outline/electron-browser/outlineModel.ts b/src/vs/workbench/parts/outline/electron-browser/outlineModel.ts index d258c920d05..98724108c69 100644 --- a/src/vs/workbench/parts/outline/electron-browser/outlineModel.ts +++ b/src/vs/workbench/parts/outline/electron-browser/outlineModel.ts @@ -14,10 +14,9 @@ import { Range } from 'vs/editor/common/core/range'; import { values } from 'vs/base/common/map'; export function getOutline(model: ITextModel): TPromise[] { - return DocumentSymbolProviderRegistry.ordered(model).map((provider, i) => { - let source = `provider${i}`; + return DocumentSymbolProviderRegistry.ordered(model).map(provider => { return asWinJsPromise(token => provider.provideDocumentSymbols(model, token)).then(result => { - let group = new OutlineItemGroup(source); + let group = new OutlineItemGroup(provider.extensionId); for (const info of result) { let child = asOutlineItem(info, group); group.children.set(child.id, child); @@ -25,7 +24,7 @@ export function getOutline(model: ITextModel): TPromise[] { return group; }, err => { //todo@joh capture error in group - return new OutlineItemGroup(source); + return new OutlineItemGroup(provider.extensionId); }); }); } -- GitLab