在 vscode 扩展名上添加文档符号层次结构

Add document symbol hierarchy on a vscode extension

我正在开发一个 vscode 扩展,我想添加一个显示符号层次结构的 DocumentSymbolProvider。但由于某些未知原因,以下实例代码无法正常工作:

const documentSymbolProvider: DocumentSymbolProvider = {
  provideDocumentSymbols(document) {
    const symbolsTest: DocumentSymbol = {
      name: 'test',
      detail: 'details',
      kind: SymbolKind.Boolean,
      range: new Range(new Position(0, 0), new Position(0, 10)),
      selectionRange: new Range(new Position(0, 0), new Position(0, 10)),
      children: [
        {
          name: 'child',
          detail: 'child details',
          kind: SymbolKind.Array,
          range: new Range(new Position(0, 11), new Position(0, 15)),
          selectionRange: new Range(new Position(0, 11), new Position(0, 15)),
          children: [],
        },
      ],
    }
    
    return [symbolsTest]
  },
}

我设置了两个硬编码符号,但vscode不会同时显示这两个符号。

我该如何使用这个API?

问题是因为我使用普通 { } 而不是 new 运算符创建对象 DocumentSymbol - 必须使用 new 创建才能继承.

代码已修复:

const symbolsTest1 = new DocumentSymbol(
  'test',
  'details',
  SymbolKind.Boolean,
  new Range(new Position(0, 0), new Position(0, 15)),
  new Range(new Position(0, 0), new Position(0, 15))
)
symbolsTest1.children = [
  new DocumentSymbol(
    'child',
    'child details',
    SymbolKind.Array,
    new Range(new Position(0, 11), new Position(0, 15)),
    new Range(new Position(0, 11), new Position(0, 15))
  ),
]