1

我想要的是

我正在 VSCode (a la vscode.commands.executeCommand(...)) 中搜索返回函数/类的内部函数/类的符号信息 (大纲) 的命令。

例子

类似 vscode.commands.executeCommand('vscode.??', Range(2,6))on的命令

1  def foo1():
2     def innerfoo():
3        print("hello")
4     def innerfoo2():
5        print("world)
6     innerfoo()

innerfoo应该返回一个带有and的数组innerfoo2

我发现了什么

该命令vscode.commands.executeCommand('vscode.executeDocumentSymbolProvider')将为整个文档提供第一级符号信息。例如在

class MyClass:
  def foo(self):
    pass

只有MyClass被发现

4

2 回答 2

0

没有这样的 API。语言支持是自包含的,通常不会将其信息提供给外部世界。

相反,您必须创建自己的解析器,该解析器处理代码以查找符号信息。

于 2021-02-17T07:58:38.457 回答
0

此信息隐藏在(由 返回)的children属性中:DocumentSymbolvscode.executeDocumentSymbolProvider

let symbols = vscode.commands.executeCommand ('vscode.executeDocumentSymbolProvider');

console.log (symbols[0].children); 

我写“隐藏”是因为children不显示,如果你只是console.log (symbols);在上面的代码中运行。

于 2021-03-05T03:21:36.737 回答