diff --git a/extensions/git/package.json b/extensions/git/package.json index 2d1e4c36fd6..da149b64b6d 100644 --- a/extensions/git/package.json +++ b/extensions/git/package.json @@ -665,27 +665,27 @@ { "command": "git.openFile", "group": "navigation", - "when": "config.git.enabled && scmProvider == git && isInDiffEditor && resourceScheme != extension && resourceScheme != merge-conflict.conflict-diff" + "when": "config.git.enabled && isInDiffEditor && resourceScheme != extension && resourceScheme != merge-conflict.conflict-diff" }, { "command": "git.openChange", "group": "navigation", - "when": "config.git.enabled && scmProvider == git && !isInDiffEditor && resourceScheme != extension" + "when": "config.git.enabled && !isInDiffEditor && resourceScheme != extension" }, { "command": "git.stageSelectedRanges", "group": "2_git@1", - "when": "config.git.enabled && scmProvider == git && isInDiffEditor && resourceScheme != merge-conflict.conflict-diff" + "when": "config.git.enabled && isInDiffEditor && resourceScheme != merge-conflict.conflict-diff" }, { "command": "git.unstageSelectedRanges", "group": "2_git@2", - "when": "config.git.enabled && scmProvider == git && isInDiffEditor && resourceScheme != merge-conflict.conflict-diff" + "when": "config.git.enabled && isInDiffEditor && resourceScheme != merge-conflict.conflict-diff" }, { "command": "git.revertSelectedRanges", "group": "2_git@3", - "when": "config.git.enabled && scmProvider == git && isInDiffEditor && resourceScheme != merge-conflict.conflict-diff" + "when": "config.git.enabled && isInDiffEditor && resourceScheme != merge-conflict.conflict-diff" } ] }, diff --git a/extensions/git/src/commands.ts b/extensions/git/src/commands.ts index fa81bdcbadd..c8c3fc103cb 100644 --- a/extensions/git/src/commands.ts +++ b/extensions/git/src/commands.ts @@ -150,14 +150,14 @@ export class CommandCenter { await repository.status(); } - @command('git.openResource', { repository: true }) - async openResource(repository: Repository, resource: Resource): Promise { - await this._openResource(repository, resource); + @command('git.openResource') + async openResource(resource: Resource): Promise { + await this._openResource(resource); } - private async _openResource(repository: Repository, resource: Resource, preview?: boolean): Promise { + private async _openResource(resource: Resource, preview?: boolean): Promise { const left = this.getLeftResource(resource); - const right = this.getRightResource(repository, resource); + const right = this.getRightResource(resource); const title = this.getTitle(resource); if (!right) { @@ -201,7 +201,7 @@ export class CommandCenter { } } - private getRightResource(repository: Repository, resource: Resource): Uri | undefined { + private getRightResource(resource: Resource): Uri | undefined { switch (resource.type) { case Status.INDEX_MODIFIED: case Status.INDEX_ADDED: @@ -217,6 +217,12 @@ export class CommandCenter { case Status.MODIFIED: case Status.UNTRACKED: case Status.IGNORED: + const repository = this.model.getRepository(resource.resourceUri); + + if (!repository) { + return; + } + const uriString = resource.resourceUri.toString(); const [indexStatus] = repository.indexGroup.resourceStates.filter(r => r.resourceUri.toString() === uriString); @@ -306,8 +312,8 @@ export class CommandCenter { // await model.init(); } - @command('git.openFile', { repository: true }) - async openFile(repository: Repository, arg?: Resource | Uri, ...resourceStates: SourceControlResourceState[]): Promise { + @command('git.openFile') + async openFile(arg?: Resource | Uri, ...resourceStates: SourceControlResourceState[]): Promise { let uris: Uri[] | undefined; if (arg instanceof Uri) { @@ -356,8 +362,8 @@ export class CommandCenter { } } - @command('git.openHEADFile', { repository: true }) - async openHEADFile(repository: Repository, arg?: Resource | Uri): Promise { + @command('git.openHEADFile') + async openHEADFile(arg?: Resource | Uri): Promise { let resource: Resource | undefined = undefined; if (arg instanceof Resource) { @@ -382,8 +388,8 @@ export class CommandCenter { return await commands.executeCommand('vscode.open', HEAD); } - @command('git.openChange', { repository: true }) - async openChange(repository: Repository, arg?: Resource | Uri, ...resourceStates: SourceControlResourceState[]): Promise { + @command('git.openChange') + async openChange(arg?: Resource | Uri, ...resourceStates: SourceControlResourceState[]): Promise { let resources: Resource[] | undefined = undefined; if (arg instanceof Uri) { @@ -411,7 +417,7 @@ export class CommandCenter { const preview = resources.length === 1 ? undefined : false; for (const resource of resources) { - await this._openResource(repository, resource, preview); + await this._openResource(resource, preview); } }