编写VS代码扩展时如何聚焦自定义视图?

时间:2018-07-09 03:19:15

标签: visual-studio-code vscode-extensions

我需要VS Code扩展的帮助。我编写了一个自定义视图,该视图工作得很好,但是我想使用键盘快捷键或上下文菜单命令来激活/聚焦/进入该视图。我无法找到如何使用VS代码API来实现这一目标。

context.subscriptions.push(vscode.commands.registerCommand('extensionId.showView', () =>
{   
    // how to do that?
}));

我知道这是可以做到的,因为可以使用以下代码snppet显示文件浏览器:

vscode.commands.executeCommand('workbench.view.search');

但是对于自定义树形视图,您将如何做呢?

1 个答案:

答案 0 :(得分:1)

您应该可以使用new focus option that was added to TreeView.reveal() in 1.25。该方法要求您传递要显示的树项,因此,它是一种无法直接聚焦视图本身的变通办法,而您只需传递第一个/根节点即可。

// these gets properly printed

// correct formatted JSON
console.log( JSON.parse('{"c1": "value1", "c2": "value2"}') );

// correct formatted JSON, outer doulbe quotes and inner, escaped one's
console.log( JSON.parse("{\"c1\": \"value1\", \"c2\": \"value2\"}") );

// yours wrapped with single quotes and inner double quotes, changed to one
console.log( JSON.parse('{""c1"": ""value1"", ""c2"": ""value2""}'.replace(/""/g, '"')) );


// these generates script error

// yours wrapped with single quotes
console.log( JSON.parse('{""c1"": ""value1"", ""c2"": ""value2""}') );

// yours as is, and had to comment this out, as if not, it crashes itself and all the above
//console.log( JSON.parse("{""c1"": ""value1"", ""c2"": ""value2""}") );

请注意,在这种情况下,焦点表示键盘焦点。如果您只是想看到它,那么在没有焦点选项的情况下调用treeView.reveal(item, {focus: true}); 就足够了。

要获取reveal()实例,您需要使用视图ID和提供者调用TreeView