VS 代码条件片段

VS Code Conditional Snippets

我希望在特定语言的 VS Code IntelliSense 中有条件地列出一些片段。我正在考虑创建一个扩展,截取 CompletionItems 的列表,并根据 languageId 和 settings/configuration 删除不满足我的条件的任何片段我将为扩展做出贡献。我正在寻找最简单的解决方案来完成此任务,但如果我需要语言服务器,那就这样吧。如果我可以为特定的 languageId 动态加载片段文件,那就更好了。我只需要一个更熟悉 API 的人的起点。我什至还没有找到如何检索 CompletionList 以开始拦截——我搜索了 API 文档,但除了它的对象定义之外什么也没找到。

从 VSCode 1.14 开始,您不能有条件 user snippets 但扩展可以有条件地贡献片段。尝试创建一个 CompletionItemProvider 的 returns 完成项目,其 kind 设置为 CompletionItemKind.Snippet

VSCode 代码库中的 JsDocCompletionProvider 就是这种模式的一个示例。当光标周围的区域匹配正则表达式时,它只会 returns jsdoc 片段