我正在为 VSCode 开发一个插件。
使用的参数从
settings.json
文件中读取,用户可以在 extension settings
页面上修改。
用于从
settings.json
读取参数的代码行是:
const value = vscode.workspace.getConfiguration(configKey).get('parameterName');
当我启动插件时,参数会被正确读取,但如果我在
extension settings
页面中更改它们,则无法识别更改。但是,如果我关闭编辑器并重新启动它,修改后的参数最终会被识别并使用。
这是插件的正常行为还是有一个我不知道的系统可以让插件在用户设置参数更改后立即识别它们?
我通过阅读 VSCode API 文档以及为许多软件公司的扩展编写的代码,自己找到了解决方案。
没有直接、干净的方法来拦截对配置参数所做的更改,从而使它们自动激活。
激活新配置参数值的唯一方法是重新启动 VSCode 或调用
Reload window
命令:
F1
或 Ctrl+Shift+P
或 Shift+Command+P
;reload window
;Developer: Reload Window
;但是,如果您正在为 VSCode 开发新扩展,请记住在
README.md
文件中添加一个段落,在其中向用户解释我刚刚编写的过程。
我很确定
vscode.workspace.getConfiguration
应该在您调用它时为您提供设置的当前值。一旦将值读入变量,该变量就不会在设置更改时神奇地更新。您需要再次调用 getConfiguration
来再次读取设置值。您可以使用 onDidChangeConfiguration
监听配置更改,但我见过相当多的扩展不会缓存配置值,而只是在每次使用它来执行某些操作时读取该值。那么你就不需要费心去监听变化了