如何显示/控制VSCode虚拟文档的面包屑?

时间:2019-11-20 02:19:19

标签: visual-studio-code vscode-extensions

我正在开发一个扩展程序,该扩展程序注册一个TextDocumentContentProvider来为JSON格式的某些Azure资源提供只读查看器。当我显示这些资源的JSON时,我希望编辑器显示JSON面包屑。由于某些原因,当通过我的虚拟文档URL显示内容时,不会显示面包屑。使用file://方案提取相同的文档内容时,编辑器可以很好地显示面包屑。

有人知道如何为虚拟文档设置面包屑支持吗?

1 个答案:

答案 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;
    };
};