如何在 VSCode 扩展中保留 when-clause 上下文
How to persist when-clause context in VSCode extension
我按照 when clause context 的文档添加了自定义 when 子句上下文。
我设置了一个布尔上下文:
let start = vscode.commands.registerCommand('myExt.start', () => {
vscode.commands.executeCommand('setContext', 'myExt.activated', true);
});
但是VSCode重启后,即使myExt.activated
是true
。 VSCode算了...
"explorer/context": [
{
"command": "myExt.filter",
"when": "myExt.activated"
}
]
即使 myExt.activated
上次是 true
,VSCode 重新启动后也不会显示...
此外,当使用 Developer: Inspect Context Keys
命令调试上下文时,myExt.activated
不存在。
有什么方法可以在 VSCode 次重启之间保留 when 子句上下文?
由于评论中出现了答案(来自@rioV8 和@Mark),我将在这里总结一下:
用于存储持久数据的有 globalState
和 workspaceState
(来自 ExtensionContext
)。
为了存储持久上下文,我们必须使用 globalState
或 workspaceState
来存储状态并注册到 *
或 onStartupFinished
激活事件并立即调用 setContext
与持久存储的状态。
我按照 when clause context 的文档添加了自定义 when 子句上下文。
我设置了一个布尔上下文:
let start = vscode.commands.registerCommand('myExt.start', () => {
vscode.commands.executeCommand('setContext', 'myExt.activated', true);
});
但是VSCode重启后,即使myExt.activated
是true
。 VSCode算了...
"explorer/context": [
{
"command": "myExt.filter",
"when": "myExt.activated"
}
]
即使 myExt.activated
上次是 true
,VSCode 重新启动后也不会显示...
此外,当使用 Developer: Inspect Context Keys
命令调试上下文时,myExt.activated
不存在。
有什么方法可以在 VSCode 次重启之间保留 when 子句上下文?
由于评论中出现了答案(来自@rioV8 和@Mark),我将在这里总结一下:
用于存储持久数据的有 globalState
和 workspaceState
(来自 ExtensionContext
)。
为了存储持久上下文,我们必须使用 globalState
或 workspaceState
来存储状态并注册到 *
或 onStartupFinished
激活事件并立即调用 setContext
与持久存储的状态。