在Visual Studio Code中,当我对项目使用Git源代码控制时,我可以右键单击源代码管理视图中的文件,然后选择“打开文件”来查看该文件,就好像我只是从资源管理器中打开它一样窗格。如何为我自己的SCM扩展实现类似的上下文菜单和命令?我让它工作到列出文件的位置,我可以选择一个来显示差异,或者选择内联命令图标来显示以不同方式选择的版本之间的差异。但我无法弄清楚如何添加上下文菜单或命令来简单地打开其中一个文件而不是比较。
要添加到上下文菜单,可以在package.json文件中指定命令和上下文菜单项。在contributes
块的commands
数组中,添加如下命令:
{
"command": "accurev.openFile",
"category": "AccuRev",
"title": "Open file"
}
然后从例如scm/resourceState/context
块的menus
数组中定义的上下文菜单项中引用命令:
{
"command": "accurev.openFile",
"when": "scmProvider == accurev"
}
最后,为使用Visual Studio Code的内置open
命令的新命令注册命令处理程序。这可以在扩展的初始activate
函数期间运行的代码中完成:
globalState.disposables.push(vscode.commands.registerCommand('accurev.openFile', async (file: AccuRevFile) => {
try {
await vscode.commands.executeCommand('vscode.open', file.resourceUri);
}
catch(err) {
if (globalState) {
globalState.channel.appendLine(err);
}
}
}));
在此示例中,globalState
只是一个变量,用于跟踪扩展中的一些全局变量,包括将在扩展关闭时清除的一次性对象列表,以及为扩展写入日志文本的通道。