From 54da9357badb6d0e62254cbc788a52ef76579276 Mon Sep 17 00:00:00 2001 From: Duroktar Date: Sun, 14 May 2017 22:03:38 -0300 Subject: [PATCH] add "open old file" git command this implements #23011 --- extensions/git/package.json | 19 +++++++++++++++++++ extensions/git/package.nls.json | 1 + extensions/git/src/commands.ts | 30 +++++++++++++++++++++++++++++- 3 files changed, 49 insertions(+), 1 deletion(-) diff --git a/extensions/git/package.json b/extensions/git/package.json index 2a47e2dc209b0..91edc51233f0b 100644 --- a/extensions/git/package.json +++ b/extensions/git/package.json @@ -59,6 +59,11 @@ "dark": "resources/icons/dark/open-file.svg" } }, + { + "command": "git.openOldFile", + "title": "%command.openOldFile%", + "category": "Git" + }, { "command": "git.stage", "title": "%command.stage%", @@ -226,6 +231,10 @@ "command": "git.openFile", "when": "config.git.enabled && scmProvider == git && gitState == idle" }, + { + "command": "git.openOldFile", + "when": "config.git.enabled && scmProvider == git && gitState == idle" + }, { "command": "git.openChange", "when": "config.git.enabled && scmProvider == git && gitState == idle" @@ -477,6 +486,11 @@ "when": "config.git.enabled && scmProvider == git && gitState == idle && scmResourceGroup == index", "group": "navigation" }, + { + "command": "git.openOldFile", + "when": "config.git.enabled && scmProvider == git && gitState == idle && scmResourceGroup == index", + "group": "navigation" + }, { "command": "git.unstage", "when": "config.git.enabled && scmProvider == git && gitState == idle && scmResourceGroup == index", @@ -492,6 +506,11 @@ "when": "config.git.enabled && scmProvider == git && gitState == idle && scmResourceGroup == workingTree", "group": "navigation" }, + { + "command": "git.openOldFile", + "when": "config.git.enabled && scmProvider == git && gitState == idle && scmResourceGroup == workingTree", + "group": "navigation" + }, { "command": "git.openFile", "when": "config.git.enabled && scmProvider == git && gitState == idle && scmResourceGroup == workingTree", diff --git a/extensions/git/package.nls.json b/extensions/git/package.nls.json index efdde34dd7afa..63216feb65fc4 100644 --- a/extensions/git/package.nls.json +++ b/extensions/git/package.nls.json @@ -4,6 +4,7 @@ "command.refresh": "Refresh", "command.openChange": "Open Changes", "command.openFile": "Open File", + "command.openOldFile": "Open Old File", "command.stage": "Stage Changes", "command.stageAll": "Stage All Changes", "command.stageSelectedRanges": "Stage Selected Ranges", diff --git a/extensions/git/src/commands.ts b/extensions/git/src/commands.ts index 24f9c35129a84..215ecc78a786e 100644 --- a/extensions/git/src/commands.ts +++ b/extensions/git/src/commands.ts @@ -275,6 +275,35 @@ export class CommandCenter { return await commands.executeCommand('vscode.open', uri); } + @command('git.openOldFile') + async openOldFile(arg?: Resource | Uri): Promise { + let resource: Resource | undefined = undefined; + + if (arg instanceof Resource) { + resource = arg; + + } else if (arg instanceof Uri) { + resource = this.getSCMResource(arg); + } else { + resource = this.getSCMResource(); + } + + if (!resource) { + return; + } + return await this._openOldResource(resource); + } + + private async _openOldResource(resource: Resource): Promise { + const old = this.getLeftResource(resource); + const current = this.getRightResource(resource); + + if (!old) { + return await commands.executeCommand('vscode.open', current); + } + return await commands.executeCommand('vscode.open', old); + } + @command('git.openChange') async openChange(arg?: Resource | Uri): Promise { let resource: Resource | undefined = undefined; @@ -290,7 +319,6 @@ export class CommandCenter { if (!resource) { return; } - return await this._openResource(resource); }