编写 VS Code 扩展时如何聚焦自定义视图?
How to focus a custom view when writing a VS Code extension?
我的 VS Code 扩展需要帮助。我已经编写了一个工作正常的自定义视图,但是我想通过使用键盘快捷键或上下文菜单命令来激活/聚焦/进入该视图。我无法找到如何使用 VS 代码 API 来实现这一点。
context.subscriptions.push(vscode.commands.registerCommand('extensionId.showView', () =>
{
// how to do that?
}));
我知道这是可以做到的,因为可以使用以下代码 snppet:
来显示文件资源管理器
vscode.commands.executeCommand('workbench.view.search');
但是对于自定义树视图,您将如何做到这一点?
您应该可以使用 new focus
option that was added to TreeView.reveal()
in 1.25 来做到这一点。该方法要求您传递要显示的树项,因此它更像是一种无法直接聚焦视图本身的解决方法,但您可以简单地传递第一个/根节点。
treeView.reveal(item, {focus: true});
请注意,本例中的焦点是指键盘焦点。如果您只是想将其显示出来,调用 reveal()
而不使用 focus 选项就足够了。
要获取 TreeView
实例,您需要使用您的视图 ID 和提供程序调用 vscode.window.createTreeView()
。
我觉得,用
也是可以的
vscode.commands.executeCommand("exampleView.focus")
使用 package.json:
中声明的 exampleView
...
"views": {
"exampleView": [
{
"id": "exampleView",
"name": "Example View"
}
]
},
...
正如@Empiire所说,焦点命令的形式为:vscode.commands.executeCommand
并在 package.json 中声明的视图 ID 末尾添加“.focus”!
您还可以提供一个对象作为参数,例如 { preserveFocus: true } 以在不干扰当前焦点的情况下显示。
eamodio 在 gitlens 中这样做:https://github.com/gitkraken/vscode-gitlens/blob/417587d0dfcda89e9e2d723f8b662d7cf9008c8f/src/webviews/webviewViewBase.ts#L85
我的 VS Code 扩展需要帮助。我已经编写了一个工作正常的自定义视图,但是我想通过使用键盘快捷键或上下文菜单命令来激活/聚焦/进入该视图。我无法找到如何使用 VS 代码 API 来实现这一点。
context.subscriptions.push(vscode.commands.registerCommand('extensionId.showView', () =>
{
// how to do that?
}));
我知道这是可以做到的,因为可以使用以下代码 snppet:
来显示文件资源管理器vscode.commands.executeCommand('workbench.view.search');
但是对于自定义树视图,您将如何做到这一点?
您应该可以使用 new focus
option that was added to TreeView.reveal()
in 1.25 来做到这一点。该方法要求您传递要显示的树项,因此它更像是一种无法直接聚焦视图本身的解决方法,但您可以简单地传递第一个/根节点。
treeView.reveal(item, {focus: true});
请注意,本例中的焦点是指键盘焦点。如果您只是想将其显示出来,调用 reveal()
而不使用 focus 选项就足够了。
要获取 TreeView
实例,您需要使用您的视图 ID 和提供程序调用 vscode.window.createTreeView()
。
我觉得,用
也是可以的vscode.commands.executeCommand("exampleView.focus")
使用 package.json:
中声明的 exampleView...
"views": {
"exampleView": [
{
"id": "exampleView",
"name": "Example View"
}
]
},
...
正如@Empiire所说,焦点命令的形式为:vscode.commands.executeCommand
并在 package.json 中声明的视图 ID 末尾添加“.focus”!
您还可以提供一个对象作为参数,例如 { preserveFocus: true } 以在不干扰当前焦点的情况下显示。
eamodio 在 gitlens 中这样做:https://github.com/gitkraken/vscode-gitlens/blob/417587d0dfcda89e9e2d723f8b662d7cf9008c8f/src/webviews/webviewViewBase.ts#L85