我正在开发一个扩展程序,该扩展程序注册一个TextDocumentContentProvider
来为JSON格式的某些Azure资源提供只读查看器。当我显示这些资源的JSON时,我希望编辑器显示JSON面包屑。由于某些原因,当通过我的虚拟文档URL显示内容时,不会显示面包屑。使用file://方案提取相同的文档内容时,编辑器可以很好地显示面包屑。
有人知道如何为虚拟文档设置面包屑支持吗?
答案 0 :(得分:0)
面包屑使用DocumentSymbolProvider
返回的信息。实现自己的符号提供者,该提供者返回您想要的信息并按照VS Code API页上的说明进行注册。
文档提供程序本身非常简单。
export class MySymbolProvider implements DocumentSymbolProvider {
constructor() {}
provideDocumentSymbols(document: TextDocument, token: CancellationToken): ProviderResult<SymbolInformation[]> {
var symbols = ... // get your symbols from somewhere
var symbolsList = [];
for (let symbol of symbols) {
// Construct location information here (for go-to feature).
let startRow = ...;
let endRow = ...;
let startColumn = ...;
let endColumn = ...;
let range = new Range(startRow, startColumn, endRow, endColumn);
let location = new Location(Uri.file(symbol.source), range);
var description = ...;
const kind = translateSymbolKind(symbol.kind);
let info = new SymbolInformation(symbol.name, kind, description, location);
symbolsList.push(info);
}
return symbolsList;
};
};