VSCode 扩展中的竞争语言配置

Competing Language Configurations in VSCode Extensions

有没有人碰巧知道 VSCode 当多个扩展通过 contributes.languages 贡献点为同一语言提供语言配置文件时的行为?

我只是想在我的扩展程序中为一种语言添加一个自动关闭对,但是,至少有一个其他活动扩展程序(我的插件的每个用户也可能拥有)提供它自己的语言配置。

它是一个还是另一个?如果有,基于什么? The docs suggest multiple configs are OK 因为它说贡献点也可以作为 "enrich" VSCode 语言知识的一种方式,但我似乎无法让我的扩展程序添加自动关闭对.

我确定我使用了正确的语言 ID(配置此语言的其他扩展使用的 ID)以及扩展。

如果它只允许我扩展语言的配置,我是否应该只在 language-configuration.json 文件中提供我需要的信息?例如:

{
    "autoClosingPairs": [
        { "open": "/**", "close": " */", "notIn": ["string"] }
    ]
}

如果所有这些都有意义,并且贡献不起作用,是否有人对调试问题有任何建议?提前致谢。

好的,如果其他人碰巧遇到这个问题(考虑到这个问题受到的关注程度不大 :) 哦,好吧。),您的问题可能是 publisher 中的键 package.json 显现。

抓了好几天的救命稻草,终于开始尝试一些没有意义的东西,貌似应该对此没有影响。所以我开始从我的 package.json 中删除 VSCode 扩展相关的密钥,果然,当我达到 publisher 时,瞧!我的语言配置终于成功了。

我对 'why?' 的最初假设是 vscode 在幕后按字母顺序注册扩展,而另一个扩展的发布者可能在我的发布者名称之前。但遗憾的是,我的发布者名称是 dubs-dev-extensions,而同样配置相关语言的竞争扩展的发布者名称是 salesforce,所以这个假设就成立了。此外,当我决定更改我的发布者名称以查看发生了什么时,我选择了 peter-weinberg,这也有效(因此它在没有发布者密钥和新发布者名称的情况下工作)。 peter-weinbergdubs-dev-extensions 都出现在 salesforce 之前,所以按字母顺序排列显然不是答案。在写这篇文章的时候,我很困惑,并会尝试将错误报告给 vscode,如果不是,至少我希望能得到一些关于为什么我经历过这种奇怪的解释行为。