Visual studio code 如何在VSCode扩展中持久化when子句上下文
我按照的文档添加了一个自定义when子句上下文 我设置了一个布尔上下文:Visual studio code 如何在VSCode扩展中持久化when子句上下文,visual-studio-code,vscode-extensions,Visual Studio Code,Vscode Extensions,我按照的文档添加了一个自定义when子句上下文 我设置了一个布尔上下文: let start=vscode.commands.registerCommand('myExt.start',()=>{ vscode.commands.executeCommand('setContext','myExt.activated',true); }); 但是在VSCode重新启动后,即使myExt.activated为true。VSCode忘记它 “资源管理器/上下文”:[ { “命令”:“myExt.f
let start=vscode.commands.registerCommand('myExt.start',()=>{
vscode.commands.executeCommand('setContext','myExt.activated',true);
});
但是在VSCode重新启动后,即使myExt.activated
为true
。VSCode忘记它
“资源管理器/上下文”:[
{
“命令”:“myExt.filter”,
“何时”:“myExt.activated”
}
]
即使上次myExt.activated
为true
时,VSCode重新启动后也不显示
另外,当使用Developer:Inspect context key
命令调试上下文时,myExt.activated
不存在
当VSCode之间的子句上下文重新启动时,有什么方法可以持久化吗?因为答案出现在注释中(由@rioV8和@Mark提供),我将在这里总结它们: 用于存储持久数据的有
globalState
和workspaceState
(来自ExtensionContext
)
为了存储持久化上下文,我们必须使用
globalState
或workspaceState
来存储状态,并注册到*
或onStartupFinished
激活事件,并立即调用setContext
,以获取持久化存储的状态。使用globalStorageUri
和globalState
来自ExtensionContext
我已经在使用workspaceState
用于其他内容,因为我需要工作区范围。但是我没有成功地在when子句
(不出现在上下文键中)中使用它。是否有什么原因使您在激活扩展时不执行setContext
命令?你现在是通过一个命令来完成的-只需执行activate
函数顶部的execute部分就可以了。但正如您所看到的,我正在为explorer/context
做贡献,并在激活方式上执行setContext
——我必须注册到*
或onstartupfointed
,我认为这是不必要的,我想避免它。另一个“问题”是菜单在激活完成之前无法访问。。。