Visual studio code VS代码扩展如何访问[语言]特定的`settings.json`子节值?

Visual studio code VS代码扩展如何访问[语言]特定的`settings.json`子节值?,visual-studio-code,vscode-extensions,vscode-settings,Visual Studio Code,Vscode Extensions,Vscode Settings,示例:扩展代码可以非常简单地确定editor.formatOnSave的值。但是,从我所知道的和已经尝试过的情况来看,现在几乎不可能查询当前文档/编辑器的设置是否有效。对于[language]-特定的子节,可以为Go启用,但为其他子节禁用,例如,反之亦然。还有一些ie。我的分机可能需要ie。想知道吗 如果您尝试使用文档化的getConfigurationlanguage.getsetting,它将不起作用。但是有一个解决方法可以访问您想要的内容 假设您要为标记文件加载editor.formatO

示例:扩展代码可以非常简单地确定editor.formatOnSave的值。但是,从我所知道的和已经尝试过的情况来看,现在几乎不可能查询当前文档/编辑器的设置是否有效。对于[language]-特定的子节,可以为Go启用,但为其他子节禁用,例如,反之亦然。还有一些ie。我的分机可能需要ie。想知道吗

如果您尝试使用文档化的getConfigurationlanguage.getsetting,它将不起作用。但是有一个解决方法可以访问您想要的内容

假设您要为标记文件加载editor.formatOnSave。如果查看用户设置,您将看到它的存储方式如下:

["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"]: {
    "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文件中的表示方式

还请注意,此解决方法将不允许您访问未被语言覆盖的设置。在这种情况下,您必须使用/组合记录的API