Введите команду «Открыть файл» из контекстного меню панели управления исходным кодом Visual Studio. - PullRequest
1 голос
/ 29 марта 2019

В коде Visual Studio, когда я использую управление исходным кодом Git для проекта, я могу щелкнуть правой кнопкой мыши файл в представлении управления исходным кодом и выбрать «Открыть файл», чтобы посмотреть на файл, как если бы я просто открыл егоиз панели проводника.Как реализовать аналогичное контекстное меню и команду для собственного расширения SCM?У меня это работает до точки, где файлы перечислены, и я могу выбрать один, чтобы показать различия, или выбрать встроенные значки команд, чтобы показать различия между версиями, выбранными по-разному.Но я не могу понять, как добавить контекстное меню или команду, чтобы просто открыть один из этих файлов вместо сравнения.

1 Ответ

0 голосов
/ 29 марта 2019

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

...