在 VS Code 扩展中,有没有办法以编程方式设置编辑器的配置选项(例如自动换行)?

In a VS Code extension, is there a way to set the configuration options for the editor (such as word wrap) programmatically?

对于我正在开发的扩展,我们的最终用户更愿意默认启用自动换行等选项。我们希望能够在语言级别 进行设置,而无需 用户的直接参与(仅针对我们的扩展程序所针对的语言)。我知道每种语言的设置。我的目标是进行如下设置:

"[xml]": {
    "editor.wordWrap": "on",
    "editor.tabSize": 4
  },

没有用户必须在自己的用户设置中这样做。有没有办法通过 Extension API 做到这一点?我没有看到任何明显的方法。

PS LanguageConfiguration object 似乎与自动换行等设置无关。

是的,扩展可以在 package.json

中为使用 configurationDefaults 的语言贡献默认编辑器设置

这里是内置降价扩展 contributes 例如:

{
    "name": "vscode-markdown",
    ...,
    "contributes": {
        "configurationDefaults": {
            "[markdown]": {
                "editor.wordWrap": "on",
                "editor.quickSuggestions": false
            }
        }
    }
}

目前仅支持 editor.* 语言特定设置。我们正在跟踪对提供额外语言特定设置的支持 here

现在您可以通过 WorkspaceConfiguration API:

以编程方式更改设置
const configuration = vscode.workspace.getConfiguration()

const target = vscode.ConfigurationTarget.Workspace  // Update the setting locally
const overrideInLanguage = true  // Update the setting in the scope of the language

// Set the tab size to 4
configuration.update('editor.tabSize', 4, target, overrideInLanguage)