Visual studio code VSCode扩展:获取自定义大纲视图的函数大纲

Visual studio code VSCode扩展:获取自定义大纲视图的函数大纲,visual-studio-code,vscode-extensions,add-on,Visual Studio Code,Vscode Extensions,Add On,我正在尝试为VSCode创建一个自定义大纲视图(目前仅针对python),但我没有找到获取所需信息的方法 我喜欢通过以下方式获取信息: 数组: [0] 标签:“foo” 类型:“功能” 参数:[……] 范围:[……] 内部定义:[0] [1] 标签:“myclass” 类型:“类” 基本类:“ 范围:[……] 内部定义: [0]: [……] [1] : [……] 目前,我试图通过vscode.commands.executeCommand('vscode.

我正在尝试为VSCode创建一个自定义大纲视图(目前仅针对python),但我没有找到获取所需信息的方法

我喜欢通过以下方式获取信息:

  • 数组:
    • [0]
      • 标签:“foo”
      • 类型:“功能”
      • 参数:[……]
      • 范围:[……]
      • 内部定义:[0]
    • [1]
      • 标签:“myclass”
      • 类型:“类”
      • 基本类:“
      • 范围:[……]
      • 内部定义:
        • [0]:
          • [……]
        • [1] :
          • [……]
目前,我试图通过
vscode.commands.executeCommand('vscode.XXX'

我所尝试的: 下面是我尝试过的命令和收到的结果

  • vscode.executeImplementationProvider
    • 半可用:functionname的范围。缺少其他信息
  • vscode.executeOverProvider
    • 半可用:函数头字符串(包括
      def
      关键字)
  • vscode.executeDefinitionProvider
    • 半可用:完整功能的范围。个别信息必须“解析出来”
  • vscode.executeTypeDefinitionProvider
    • 从未提供任何结果
  • vscode.executedParationProvider
    • 从未提供任何结果
  • vscode.executeDocumentSymbolProvider
    • 但是,这是一个好的方向 (1) 仅对整个文档起作用(不是单个功能) (2) 只返回一级实体(即结果中不包括类方法)
有我监督过的API调用吗? 我想知道内置的大纲视图是如何工作的,因为它包含所有级别信息

  • 您需要使用
    vscode.commands.executeCommand(“vscode.executeDocumentSymbolProvider”,uri,position)
  • 这将为您提供一个文件的完整大纲。无法获得部分大纲
  • 注意:
    innerDefinitions
    在这里称为
    children
  • 关于大纲的细节:
    • 大纲的详细程度(和正确程度)取决于提供程序的实现。此外,提供程序的信息在不同语言之间不一定一致。记住这一点非常重要!
      • 目前(2021/03),标准符号提供商。。。
        • …Python将为函数的每个参数和局部变量指定一个子项。它们将无法区分
        • …C++将不包含参数的子集。但是它将在其<代码>名称>代码>中具有参数类型。(例如<代码>名称<代码> > <代码f>(字符串p)<代码>将是<代码> Foo(String):Value < /LI>
      • 正如你所看到的,两者的行为都有各自的特点
    • 您可以自己创建并注册DocumentSymbolProvider,它将返回所需的详细级别(请参阅)
    另见: