Visual Studio代码自定义语言IntelliSense和转到符号

时间:2016-01-06 18:55:25

标签: intellisense visual-studio-code

我正在为Visual Studio Code编写自定义语言的扩展。语法检测通过tmLanguage文件运行良好。我试图弄清楚如何添加intellisense并转到符号支持,我既没有找到明确的文档也没有参考文件。

当我打开文件并选择自定义语言并选择转到符号时出现以下错误: 不幸的是,我们没有该文件的符号信息。

是否有任何文档,或者您是否可以提供有关如何入门的一些提示,或者我们是否知道这些选项不适用于自定义语言?

2 个答案:

答案 0 :(得分:3)

@Wosi是正确的,但他引用了API预览。自11月发布以来,您希望实现WorkspaceSymbolProviderhttps://code.visualstudio.com/docs/extensionAPI/vscode-api#WorkspaceSymbolProvider)来实现此目标。

您可以找到我们是如何做到的TypeScript herethis是如何注册该功能。基本上提供provideWorkspaceSymbols函数,给定搜索字符串返回符号列表。

答案 1 :(得分:2)

转到工作区中的任何符号:实施WorkspaceSymbolProvider并在扩展程序的main.js中注册,如下所示

function registerSupports(modeID, host, client) {
    vscode.languages.registerWorkspaceSymbolProvider(new WorkspaceSymbolProvider(client, modeID));
}

转到符号(在当前光标位置):实施does not allow 0 timeouts并将其注册到您的扩展程序的main.js中

function registerSupports(modeID, host, client) {
    vscode.languages.registerDefinitionProvider(modeID, new DeclarationSupport(client));
}

智能感知:实施DefinitionProvider并将其注册到您的扩展程序的main.js中

function registerSupports(modeID, host, client) {
    vscode.languages.registerCompletionItemProvider(modeID, new SuggestSupport(client), '.');
}

另请参阅CompletionItemProviderHelloWorld extension