我正在写一个使用VS Code的webview api的扩展。我的扩展程序还注册了一个更新webview内容的refresh preview
命令。我怎样才能这样做:
refresh preview
命令只出现在命令面板中?refresh preview
命令显示在webview的编辑器标题栏中?首先,创建一个自定义context key,用于跟踪webview的聚焦时间。当您的webview聚焦时,使用VS Code的setContext
命令使此上下文键跟踪:
const myWebview = ...;
// Make the context key track when one of your webviews is focused
myWebview.onDidChangeViewState(({ webviewPanel }) => {
vscode.commands.executeCommand('setContext',
'myWebviewFocused',
webviewPanel.active);
});
然后在扩展程序的when
的menus contribution point子句中使用上下文键
对于具有id myExtension.refreshPreview
的命令,要确保在关注webview时命令仅显示在命令选项板中,请使用以下贡献:
{
"contributes": {
"menus": {
"commandPalette": [
{
"command": "myExtension.refreshPreview",
"when": "myWebviewFocused",
}
]
}
}
}
要将命令(可能带有图标)添加到webview的编辑器标题栏,请使用editor/title
贡献点:
{
"contributes": {
"menus": {
"editor/title": [
{
"command": "myExtension.refreshPreview",
"when": "myWebviewFocused",
}
]
}
}
}
查看VS Code's built-in markdown extension以获得更高级的示例。