关于如何向 Visual Studio 代码添加对语言的符号支持的文档在哪里?

Where are the docs on how to add symbol support for a language to Visual Studio Code?

我想为 VS Code 添加对 PowerShell 的符号支持,但我在 code.visualstudio.com/docs 站点上找不到任何文档。

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

顺便说一句,我添加了一堆 PowerShell snippets,我正在尝试将其集成到 VS Code 中。任何有关如何将这些片段添加到产品中的帮助也将不胜感激?我确实提交了关于代码片段的问题,建议团队将它们放入 VS Code。

目前没有插件的文档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":[

        ]
    },
]
}

我不确定 "symbol support" 是什么意思。是不是像 "jump to symbol inside the current file" 使用 CTRL+Shift+O?那么你正在寻找outlineSupport。 是不是像 "find a symbol in any file" 使用 CTRL+P, #?那么你正在寻找navigateTypesSupport。 将所需的 .js 文件从 vs.langauage.csharp.o 文件夹复制到 vs.langauage.powershell 文件夹,并像在 omnisharpMain.js 中那样在 powershellMain.js 中注册支持。

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

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

我希望这对目前有所帮助。不要忘记将更改的插件保存在不同的文件夹中。 VSCode 经常在更新时删除插件文件夹中的更改。