在Visual Studio Code中,当我对项目使用Git源代码管理时,我可以右键单击源代码管理视图中的文件,然后选择"打开文件"以查看该文件,就像我只是从资源管理器窗格中打开它一样。如何为我自己的 SCM 扩展实现类似的上下文菜单和命令?我让它工作到列出文件的程度,我可以选择一个来显示差异,或者选择内联命令图标来显示以不同方式选择的版本之间的差异。但是我不知道如何添加上下文菜单或命令来简单地打开其中一个文件而不是进行比较。
若要添加到上下文菜单,可以在 package.json 文件中指定命令和上下文菜单项。在contributes
块的commands
数组中,添加一个命令,如下所示:
{
"command": "accurev.openFile",
"category": "AccuRev",
"title": "Open file"
}
然后引用上下文菜单项中的命令,例如,menus
块的 scm/resourceState/context
数组:
{
"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
只是一个变量,用于跟踪扩展中的某些全局变量,包括将在扩展关闭时清理的一次性对象列表,以及为扩展写入日志文本的通道。