作为同一操作的一部分,从扩展程序打开文件夹和文件的正确方法是什么?
看起来像一个简单的任务,但我花了很长时间,无法解决它。 我可以很容易地做一个或另一个但不能同时做一个操作。
commands.executeCommand('vscode.openFolder',
Uri.parse('E:\\dev\\proj'))
.then(() => commands.executeCommand('vscode.open',
Uri.file('E:\\dev\\files\\file.json'));
上面的代码打开了一个文件夹,但没有打开文件。从调试器中我看到vscode.open
命令被触发但文件未打开。并且'vscode.open`只会按预期打开文件。
似乎在打开文件夹之后,整个执行上下文都消失了。
我做了这个残酷的实验:
setTimeout(() => commands.executeCommand('vscode.open',
Uri.file('E:\\dev\\files\\file.json'), 3000);
commands.executeCommand('vscode.openFolder',
Uri.parse('E:\\dev\\proj'))
并且谴责如果调用vscode.openFolder
,则永远不会调用setTimeout的回调。
非常感谢任何帮助/提示。
答案 0 :(得分:0)
我找到了问题的原因。但不是解决方案。
显然打开文件夹会完全终止执行上下文。这就是VSCode文档所说的内容:
Note that opening in the same window will shutdown the current extension host process and start a new one on the given folder unless the newWindow parameter is set to true.
因此,目前似乎无法在当前窗口中打开一个打开并激活特定文件的文件夹。