(如何)VS 代码扩展可以访问特定于 [language] 的 `settings.json` 子部分值?

(How) can a VS Code extension access [language]-specific `settings.json` sub-section values?

示例:扩展代码可以非常简单地确定 editor.formatOnSave 的值。但据我所知并尝试过,似乎几乎不可能查询当前 document/editor 该设置是否有效 就在那里,现在 。对于 [language]-特定的子部分,它可能对 Go 启用但对其他人禁用,例如 --- 反之亦然。 "some"(即我的)扩展可能 "need"(即想要)了解它!

如果您尝试使用已记录的 getConfiguration("language").get("setting"),它将不起作用。但是有一个 解决方法 可以访问您想要的内容。

假设您要为 markdown 个文件加载 editor.formatOnSave。如果你查看 User Settings,你会看到它是这样存储的:

["markdown"]: {
    "editor.wordWrap": "wordWrapColumn",
    "editor.formatOnSave": true
}

您只需加载配置对象并访问所需的属性,如下所示:

let markdownObject = vscode.workspace.getConfiguration("[markdown]");
if (markdownObject["editor.formatOnSave"]) {
    console.log("[markdown].editor.formatOnSave is TRUE");
}

请务必注意,您必须使用 [markdown](括号内),因为它在 JSON 文件中是这样表示的。

另请注意,此解决方法 不会让您访问未覆盖 语言的设置。在这种情况下,您必须 use/combine 记录的 API.