Чтобы добавить в контекстное меню, команду и пункт контекстного меню можно указать в файле package.json. В массиве contributes
блока *1001* добавьте команду, например:
{
"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
- это просто переменная, которая отслеживает некоторые глобальные переменные в расширении, включая список одноразовых объектов, которые будут очищены с выключением расширения, и канал, для которого записывается текст журнала. расширение.