mirror of
https://github.com/microsoft/monaco-editor.git
synced 2025-12-22 20:52:56 +01:00
Extract a common DocumentSymbolAdapter
This commit is contained in:
parent
6e986e8f96
commit
81023950c6
7 changed files with 95 additions and 235 deletions
|
|
@ -646,3 +646,85 @@ function toWorkspaceEdit(edit: lsTypes.WorkspaceEdit): languages.WorkspaceEdit {
|
|||
}
|
||||
|
||||
//#endregion
|
||||
|
||||
//#region DocumentSymbolAdapter
|
||||
|
||||
export interface ILanguageWorkerWithDocumentSymbols {
|
||||
findDocumentSymbols(uri: string): Promise<lsTypes.SymbolInformation[]>;
|
||||
}
|
||||
|
||||
export class DocumentSymbolAdapter<T extends ILanguageWorkerWithDocumentSymbols>
|
||||
implements languages.DocumentSymbolProvider
|
||||
{
|
||||
constructor(private readonly _worker: WorkerAccessor<T>) {}
|
||||
|
||||
public provideDocumentSymbols(
|
||||
model: editor.IReadOnlyModel,
|
||||
token: CancellationToken
|
||||
): Promise<languages.DocumentSymbol[] | undefined> {
|
||||
const resource = model.uri;
|
||||
|
||||
return this._worker(resource)
|
||||
.then((worker) => worker.findDocumentSymbols(resource.toString()))
|
||||
.then((items) => {
|
||||
if (!items) {
|
||||
return;
|
||||
}
|
||||
return items.map((item) => ({
|
||||
name: item.name,
|
||||
detail: '',
|
||||
containerName: item.containerName,
|
||||
kind: toSymbolKind(item.kind),
|
||||
range: toRange(item.location.range),
|
||||
selectionRange: toRange(item.location.range),
|
||||
tags: []
|
||||
}));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function toSymbolKind(kind: lsTypes.SymbolKind): languages.SymbolKind {
|
||||
let mKind = languages.SymbolKind;
|
||||
|
||||
switch (kind) {
|
||||
case lsTypes.SymbolKind.File:
|
||||
return mKind.Array;
|
||||
case lsTypes.SymbolKind.Module:
|
||||
return mKind.Module;
|
||||
case lsTypes.SymbolKind.Namespace:
|
||||
return mKind.Namespace;
|
||||
case lsTypes.SymbolKind.Package:
|
||||
return mKind.Package;
|
||||
case lsTypes.SymbolKind.Class:
|
||||
return mKind.Class;
|
||||
case lsTypes.SymbolKind.Method:
|
||||
return mKind.Method;
|
||||
case lsTypes.SymbolKind.Property:
|
||||
return mKind.Property;
|
||||
case lsTypes.SymbolKind.Field:
|
||||
return mKind.Field;
|
||||
case lsTypes.SymbolKind.Constructor:
|
||||
return mKind.Constructor;
|
||||
case lsTypes.SymbolKind.Enum:
|
||||
return mKind.Enum;
|
||||
case lsTypes.SymbolKind.Interface:
|
||||
return mKind.Interface;
|
||||
case lsTypes.SymbolKind.Function:
|
||||
return mKind.Function;
|
||||
case lsTypes.SymbolKind.Variable:
|
||||
return mKind.Variable;
|
||||
case lsTypes.SymbolKind.Constant:
|
||||
return mKind.Constant;
|
||||
case lsTypes.SymbolKind.String:
|
||||
return mKind.String;
|
||||
case lsTypes.SymbolKind.Number:
|
||||
return mKind.Number;
|
||||
case lsTypes.SymbolKind.Boolean:
|
||||
return mKind.Boolean;
|
||||
case lsTypes.SymbolKind.Array:
|
||||
return mKind.Array;
|
||||
}
|
||||
return mKind.Function;
|
||||
}
|
||||
|
||||
//#endregion
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue