【发布时间】:2022-05-17 02:01:37
【问题描述】:
我正在编写一个 VsCode 扩展。当用户右键单击树视图中的项目时,他会收到弹出命令,该命令的操作适用于先前选择的项目。在 VsCode 本身中,情况并非如此。例如,右键单击新文件,将文件添加到当前突出显示的文件夹(不是选定的文件夹)。如何在我的扩展中复制这种行为?
【问题讨论】:
标签: visual-studio-code vscode-extensions
我正在编写一个 VsCode 扩展。当用户右键单击树视图中的项目时,他会收到弹出命令,该命令的操作适用于先前选择的项目。在 VsCode 本身中,情况并非如此。例如,右键单击新文件,将文件添加到当前突出显示的文件夹(不是选定的文件夹)。如何在我的扩展中复制这种行为?
【问题讨论】:
标签: visual-studio-code vscode-extensions
我找到了解决方案。 在注册右键运行的命令时,添加一个参数,即树节点。当通过菜单弹出调用命令时,此树节点将是突出显示的节点,而不是选定的节点。 比如替换代码
commands.registerCommand('myExtension.myCommand', () => this.command());
及以后:
command() {
}
与
commands.registerCommand('myExtension.myCommand', command(), this);
及以后:
command(node: TreeNode) {
if (node) {
}
}
if (node) 是必需的,如果可以从不同的上下文(如按钮)调用命令,在这种情况下,node 将是undefined。
【讨论】: