diff --git a/src/commands/diffDirectory.ts b/src/commands/diffDirectory.ts index 10ff4ac..499e4db 100644 --- a/src/commands/diffDirectory.ts +++ b/src/commands/diffDirectory.ts @@ -1,8 +1,10 @@ 'use strict'; +import { Iterables } from '../system'; import { TextEditor, Uri, window } from 'vscode'; import { ActiveEditorCommand, Commands } from './commands'; import { GitService } from '../gitService'; import { Logger } from '../logger'; +import { CommandQuickPickItem, BranchesQuickPick } from '../quickPicks'; export class DiffDirectoryCommand extends ActiveEditorCommand { @@ -20,8 +22,18 @@ export class DiffDirectoryCommand extends ActiveEditorCommand { if (!repoPath) return window.showWarningMessage(`Unable to open directory diff`); if (!shaOrBranch1) { - //window.showQuickPick() - return undefined; + const branches = await this.git.getBranches(repoPath); + const current = Iterables.find(branches, _ => _.current); + + const pick = await BranchesQuickPick.show(branches, `Compare ${current.name} to \u2026`); + if (!pick) return undefined; + + if (pick instanceof CommandQuickPickItem) { + return pick.execute(); + } + + shaOrBranch1 = pick.branch.name; + if (!shaOrBranch1) return undefined; } this.git.openDirectoryDiff(repoPath, shaOrBranch1, shaOrBranch2); diff --git a/src/commands/diffWithBranch.ts b/src/commands/diffWithBranch.ts index 5b97b3d..c994a42 100644 --- a/src/commands/diffWithBranch.ts +++ b/src/commands/diffWithBranch.ts @@ -24,7 +24,7 @@ export class DiffWithBranchCommand extends ActiveEditorCommand { const gitUri = await GitUri.fromUri(uri, this.git); const branches = await this.git.getBranches(gitUri.repoPath); - const pick = await BranchesQuickPick.show(branches, gitUri, goBackCommand); + const pick = await BranchesQuickPick.show(branches, `Compare ${path.basename(gitUri.fsPath)} to \u2026`, goBackCommand); if (!pick) return undefined; if (pick instanceof CommandQuickPickItem) { diff --git a/src/quickPicks/branches.ts b/src/quickPicks/branches.ts index 6a17272..2686463 100644 --- a/src/quickPicks/branches.ts +++ b/src/quickPicks/branches.ts @@ -1,8 +1,7 @@ 'use strict'; import { QuickPickItem, QuickPickOptions, window } from 'vscode'; -import { GitBranch, GitUri } from '../gitService'; +import { GitBranch } from '../gitService'; import { CommandQuickPickItem, getQuickPickIgnoreFocusOut } from './quickPicks'; -import * as path from 'path'; export class BranchQuickPickItem implements QuickPickItem { @@ -18,7 +17,7 @@ export class BranchQuickPickItem implements QuickPickItem { export class BranchesQuickPick { - static async show(branches: GitBranch[], uri: GitUri, goBackCommand?: CommandQuickPickItem): Promise { + static async show(branches: GitBranch[], placeHolder: string, goBackCommand?: CommandQuickPickItem): Promise { const items = branches.map(_ => new BranchQuickPickItem(_)) as (BranchQuickPickItem | CommandQuickPickItem)[]; @@ -30,7 +29,7 @@ export class BranchesQuickPick { const pick = await window.showQuickPick(items, { - placeHolder: `Compare ${path.basename(uri.fsPath)} to \u2026`, + placeHolder: placeHolder, ignoreFocusOut: getQuickPickIgnoreFocusOut() } as QuickPickOptions); if (!pick) return undefined;