跳到主要内容

配置

配置是用户在设置里改的值。扩展在 contributes.configuration 里声明形状,用 workspace.getConfiguration 读取,用 onDidChangeConfiguration 监听变化。

声明​

{
"contributes": {
"configuration": {
"title": "Demo",
"properties": {
"demo.intervalMs": {
"type": "number",
"default": 1000,
"minimum": 200,
"description": "刷新间隔(毫秒)"
}
}
}
}
}

type 常用 string、number、boolean、array、object。可以用 enum、minimum、maximum、scope 限制取值和生效范围。scope 决定这项能写到用户设置、工作区,还是某个资源(语言或文件夹)。

configurationDefaults 用来给已有配置提供默认值,例如某种语言的编辑器选项,而不是发明一个新的配置键。

读取​

const config = vscode.workspace.getConfiguration('demo');
const intervalMs = config.get<number>('intervalMs', 1000);

getConfiguration 的参数是节名,后面的 get 用节内的键。也可以 getConfiguration().get('demo.intervalMs')。

第二个参数可以传 Uri 或 { uri, languageId }。配置按语言或按文件夹有不同值时必须传资源,否则拿到的是不带资源范围的那一层。

写入与作用域​

config.update(key, value, target) 把值写到某一层:

  • Global:用户设置
  • Workspace:工作区
  • WorkspaceFolder:多根工作区里的某一个文件夹

语言覆盖要配合 ConfigurationTarget 和语言范围参数,不能假设一次 update 会改掉所有语言。

监听​

onDidChangeConfiguration 在任意配置变化时都会来。回调里用 event.affectsConfiguration('demo.intervalMs') 判断是不是自己的键,避免无关设置也触发刷新。

参考​