关于如何为Visual Studio Code添加语言符号支持的文档在哪里?

时间:2015-09-13 20:03:54

标签: visual-studio-code

我想将PowerShell的符号支持添加到VS Code,但我没有在code.visualstudio.com/docs网站上找到任何文档。

此外,是否可以针对像PowerShell这样的语言执行此操作,目前只能在Windows上运行?有没有办法在Windows上点亮符号支持?

BTW我已经添加了一堆PowerShell snippets,我试图将其集成到VS Code中。有关如何将这些片段融入产品的任何帮助也会受到赞赏吗?我确实在片段上提交了一个问题,建议团队将这些内容放入VS Code。

1 个答案:

答案 0 :(得分:2)

目前没有插件API的文档。现在为时尚早,因为API在每次发布时都会发生变化。 VSCode团队专注于提供稳定的插件API。完成后会有一份关于它的文档。

尽管如此,已经可以添加新的语言插件或扩展现有的插件。请查看有关如何为新语言添加声明支持的简短说明:Create Custom Language in Visual Studio Code

您可以以类似的方式添加符号支持。您需要的是类似powershell脚本的抽象语法树构建器,以及能够处理JSON请求以提供正确符号的应用程序或javascript模块。大纲支持的示例请求是:

{
  "seq":442,
  "type":"request",
  "command":"navbar",
  "arguments":
  {
    "file":"c:/Users/C/Documents/projects/MyProject/MyFile.xxx"
  }
}

回复可能如下:

{
"seq":442,
"type":"response",
"command":"navbar",
"request_seq":442,
"success":true,
"body":[
    {
        "text":"TObjA",
        "kind":"class",
        "kindModifiers":"",
        "spans":[
            {
            "start":{
                "line":10,
                "offset":3
            },
            "end":{
                "line":16,
                "offset":4
            }
            }
        ],
        "childItems":[

        ]
    },
    {
        "text":"DoSomething",
        "kind":"method",
        "kindModifiers":"",
        "spans":[
            {
            "start":{
                "line":20,
                "offset":1
            },
            "end":{
                "line":27,
                "offset":4
            }
            }
        ],
        "childItems":[

        ]
    },
]
}

我不确定你的意思是什么"符号支持"。它是否类似"跳转到当前文件中的符号"使用CTRL+Shift+O?然后你正在寻找outlineSupport。 它是否类似"在任何文件中找到符号"使用CTRL+P, #?然后你正在寻找navigateTypesSupport。 将所需的.js文件从vs.langauage.csharp.o文件夹复制到vs.langauage.powershell文件夹,然后在powershellMain.js中注册支持,就像在omnisharpMain.js中一样。

如果您只想在Windows上注册新支持,那么您可以这样做:

var isWin = /^win/.test(process.platform);
if(isWin)
  monaco.Modes.NavigateTypesSupport.register('powershell', new navigateTypesSupport_1.default(ModelService, server));

我希望这对目前有帮助。别忘了将更改后的插件保存在其他文件夹中。 VSCode通常会在更新时删除插件文件夹中的更改。