2016-01-06 46 views
2

我正在为Visual Studio代码中的自定义语言编写扩展。语法检测通过tmLanguage文件运行良好。我试图找出如何添加智能感知并转到符号支持,这两者我都无法找到明确的文档以及参考文件。Visual Studio代码自定义语言智能感知和转到符号

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

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

回答

2

进入工作区任何符号:实现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), '.'); 
} 

参见HelloWorld extensionLanguage server example

3

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

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

+0

是的,你是对的。我误解了OP想用“去符号”来达到什么目的。谢谢。 – Wosi

相关问题