VSCode中WorkspaceConfiguration.update未更新值?解决方案解析
VS Code扩展更新工作区配置后的取值问题解决
我开发的VS Code扩展用于更新特定工作区文件夹的设置,原本打算在状态栏展示更新后的配置值,但遇到了一个问题:调用cfg.update()更新配置后,直接用原WorkspaceConfiguration对象的.get()方法获取到的还是旧值。
改成async/await写法并反复尝试后发现关键:必须在更新设置后重新调用vscode.workspace.getConfiguration()刷新配置对象,否则始终拿不到最新的配置内容。现在代码已正常运行,示例代码如下:
export async function setEmailDesignSystemId(cfg: vscode.WorkspaceConfiguration, bar: vscode.StatusBarItem, value?: string) { if (value) { var [id, descr] = splitBySemiColon(value); const idNum = parseInt(id, 10); try { // null 参数表示配置生效范围为当前工作区/工作区文件夹 await cfg.update('designSystemId', idNum, null); await cfg.update('designSystemDescr', descr, null); console.log(`设置EDS ID = ${idNum}, 描述 = ${descr}`); // 必须刷新配置对象才能获取新值 cfg = vscode.workspace.getConfiguration('taxi'); updateEDSBar(bar, cfg, ''); } catch (error) { console.log('更新designSystemId失败'); }; } }
内容的提问来源于stack exchange,提问作者tuck1s
相关产品推荐
相关产品推荐

