提交 2a270de2 编写于 作者: J Johannes Rieken

add extensionId to DocumentSymbolProvider interface

上级 7fda0363
...@@ -676,6 +676,9 @@ export interface SymbolInformation { ...@@ -676,6 +676,9 @@ export interface SymbolInformation {
* the [go to symbol](https://code.visualstudio.com/docs/editor/editingevolved#_goto-symbol)-feature. * the [go to symbol](https://code.visualstudio.com/docs/editor/editingevolved#_goto-symbol)-feature.
*/ */
export interface DocumentSymbolProvider { export interface DocumentSymbolProvider {
extensionId?: string;
/** /**
* Provide symbol information for the given document. * Provide symbol information for the given document.
*/ */
......
...@@ -4893,6 +4893,7 @@ declare namespace monaco.languages { ...@@ -4893,6 +4893,7 @@ declare namespace monaco.languages {
* the [go to symbol](https://code.visualstudio.com/docs/editor/editingevolved#_goto-symbol)-feature. * the [go to symbol](https://code.visualstudio.com/docs/editor/editingevolved#_goto-symbol)-feature.
*/ */
export interface DocumentSymbolProvider { export interface DocumentSymbolProvider {
extensionId?: string;
/** /**
* Provide symbol information for the given document. * Provide symbol information for the given document.
*/ */
......
...@@ -97,8 +97,9 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha ...@@ -97,8 +97,9 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha
// --- outline // --- 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), <modes.DocumentSymbolProvider>{ this._registrations[handle] = modes.DocumentSymbolProviderRegistry.register(typeConverters.LanguageSelector.from(selector), <modes.DocumentSymbolProvider>{
extensionId,
provideDocumentSymbols: (model: ITextModel, token: CancellationToken): Thenable<modes.SymbolInformation[]> => { provideDocumentSymbols: (model: ITextModel, token: CancellationToken): Thenable<modes.SymbolInformation[]> => {
return wireCancellationToken(token, this._proxy.$provideDocumentSymbols(handle, model.uri)).then(MainThreadLanguageFeatures._reviveSymbolInformationDto); return wireCancellationToken(token, this._proxy.$provideDocumentSymbols(handle, model.uri)).then(MainThreadLanguageFeatures._reviveSymbolInformationDto);
} }
......
...@@ -285,7 +285,7 @@ export function createApiFactory( ...@@ -285,7 +285,7 @@ export function createApiFactory(
return extHostLanguageFeatures.registerRenameProvider(checkSelector(selector), provider); return extHostLanguageFeatures.registerRenameProvider(checkSelector(selector), provider);
}, },
registerDocumentSymbolProvider(selector: vscode.DocumentSelector, provider: vscode.DocumentSymbolProvider): vscode.Disposable { 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 { registerWorkspaceSymbolProvider(provider: vscode.WorkspaceSymbolProvider): vscode.Disposable {
return extHostLanguageFeatures.registerWorkspaceSymbolProvider(provider); return extHostLanguageFeatures.registerWorkspaceSymbolProvider(provider);
......
...@@ -263,7 +263,7 @@ export interface ISerializedDocumentFilter { ...@@ -263,7 +263,7 @@ export interface ISerializedDocumentFilter {
export interface MainThreadLanguageFeaturesShape extends IDisposable { export interface MainThreadLanguageFeaturesShape extends IDisposable {
$unregister(handle: number): void; $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; $registerCodeLensSupport(handle: number, selector: ISerializedDocumentFilter[], eventHandle: number): void;
$emitCodeLensEvent(eventHandle: number, event?: any): void; $emitCodeLensEvent(eventHandle: number, event?: any): void;
$registerDeclaractionSupport(handle: number, selector: ISerializedDocumentFilter[]): void; $registerDeclaractionSupport(handle: number, selector: ISerializedDocumentFilter[]): void;
......
...@@ -928,9 +928,9 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape { ...@@ -928,9 +928,9 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape {
// --- outline // --- 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)); 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); return this._createDisposable(handle);
} }
......
...@@ -14,10 +14,9 @@ import { Range } from 'vs/editor/common/core/range'; ...@@ -14,10 +14,9 @@ import { Range } from 'vs/editor/common/core/range';
import { values } from 'vs/base/common/map'; import { values } from 'vs/base/common/map';
export function getOutline(model: ITextModel): TPromise<OutlineItemGroup>[] { export function getOutline(model: ITextModel): TPromise<OutlineItemGroup>[] {
return DocumentSymbolProviderRegistry.ordered(model).map((provider, i) => { return DocumentSymbolProviderRegistry.ordered(model).map(provider => {
let source = `provider${i}`;
return asWinJsPromise(token => provider.provideDocumentSymbols(model, token)).then(result => { 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) { for (const info of result) {
let child = asOutlineItem(info, group); let child = asOutlineItem(info, group);
group.children.set(child.id, child); group.children.set(child.id, child);
...@@ -25,7 +24,7 @@ export function getOutline(model: ITextModel): TPromise<OutlineItemGroup>[] { ...@@ -25,7 +24,7 @@ export function getOutline(model: ITextModel): TPromise<OutlineItemGroup>[] {
return group; return group;
}, err => { }, err => {
//todo@joh capture error in group //todo@joh capture error in group
return new OutlineItemGroup(source); return new OutlineItemGroup(provider.extensionId);
}); });
}); });
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册