Visual Studio代码自定义语言智能感知和转到符号
问题描述:
我正在为Visual Studio代码中的自定义语言编写扩展。语法检测通过tmLanguage文件运行良好。我试图找出如何添加智能感知并转到符号支持,这两者我都无法找到明确的文档以及参考文件。Visual Studio代码自定义语言智能感知和转到符号
当我用我的自定义语言选择打开文件,我选择去符号我得到以下错误: 不幸的是,我们没有该文件的符号信息。
是否有任何文档,或者您可以提供一些关于如何入门的提示,或者我们知道这些选项不适用于自定义语言吗?
答
进入工作区任何符号:实现WorkspaceSymbolProvider
并在您的扩展main.js注册像这样
function registerSupports(modeID, host, client) {
vscode.languages.registerWorkspaceSymbolProvider(new WorkspaceSymbolProvider(client, modeID));
}
转到符号(在当前光标位置):实现DefinitionProvider
和注册它在扩展的main.js这样
function registerSupports(modeID, host, client) {
vscode.languages.registerDefinitionProvider(modeID, new DeclarationSupport(client));
}
智能感知:实现CompletionItemProvider
并在您的扩展main.js注册像这样
function registerSupports(modeID, host, client) {
vscode.languages.registerCompletionItemProvider(modeID, new SuggestSupport(client), '.');
}
答
@Wosi是正确的,但他指的是API预览。自11月发布以来,您需要实现WorkspaceSymbolProvider
(https://code.visualstudio.com/docs/extensionAPI/vscode-api#WorkspaceSymbolProvider)来实现此目标。
你可以找到我们是如何做到的TypeScript here和this是如何注册该功能。基本上提供一个provideWorkspaceSymbols
函数,给定一个搜索字符串返回一个符号列表。
是的,你是对的。我误解了OP想用“去符号”来达到什么目的。谢谢。 – Wosi