如何解决VSCode 扩展:获取自定义大纲的功能大纲 我尝试过的:
我正在尝试为 VSCode 创建自定义大纲(目前仅适用于 Python),但我没有找到获取所需信息的措施。
我喜欢以这种方式获取信息:
- 数组:
目前我尝试通过 vscode.commands.executeCommand( 'vscode.XXX'
我尝试过的:
这是我尝试过的命令以及收到的结果。
-
vscode.executeImplementationProvider
- 一半可用:函数名的范围。其他信息缺失
-
vscode.executeHoverProvider
-
vscode.executeDeFinitionProvider
- 一半可用:完整功能的范围。个人信息必须“解析出来”
-
vscode.executeTypeDeFinitionProvider
- 从未提供任何结果
-
vscode.executeDeclarationProvider
- 从未提供任何结果
-
vscode.executeDocumentSymbolProvider
有我监督过的 API 调用吗? 我想知道内置大纲如何工作,因为它包含所有级别的信息。
解决方法
- 您需要使用
vscode.commands.executeCommand<vscode.Location[]>("vscode.executeDocumentSymbolProvider",uri,position)
- 这将为您提供一个文件的完整大纲。无法接收部分大纲。
- 注意:
innerDefinitions
在这里称为children
。 - 关于大纲的细节:
- 大纲的详细程度(和正确程度)取决于提供者的实施。此外,提供者的信息在语言之间不一定一致。记住这一点非常重要!
- 目前 (2021/03),标准 SymbolProvider 用于...
- ... Python 将有一个函数的每个参数和局部变量的子项。它们将无法区分
- ... C++ 将不包含参数的子项。但是它的
name
中会有参数类型。 (例如,name
的void foo(string p)
将是foo(string): void
。
- 如您所见,两者都有自己的怪癖。
- 目前 (2021/03),标准 SymbolProvider 用于...
- 您可以自己创建和注册 DocumentSymbolProvider,这将返回您需要的详细程度(请参阅 VSCode Providers)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。