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

add extensionId to DocumentSymbolProvider interface

上级 7fda0363
......@@ -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.
*/
......
......@@ -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.
*/
......
......@@ -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), <modes.DocumentSymbolProvider>{
extensionId,
provideDocumentSymbols: (model: ITextModel, token: CancellationToken): Thenable<modes.SymbolInformation[]> => {
return wireCancellationToken(token, this._proxy.$provideDocumentSymbols(handle, model.uri)).then(MainThreadLanguageFeatures._reviveSymbolInformationDto);
}
......
......@@ -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);
......
......@@ -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;
......
......@@ -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);
}
......
......@@ -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<OutlineItemGroup>[] {
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<OutlineItemGroup>[] {
return group;
}, err => {
//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.
先完成此消息的编辑!
想要评论请 注册