diff --git a/src/commands.ts b/src/commands.ts index 8565cc7..ed6b026 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -1,10 +1,8 @@ 'use strict'; -import { commands } from 'vscode'; -import { BuiltInCommands } from './constants'; +export * from './commands/common'; export * from './commands/keyboard'; -export * from './commands/commands'; export * from './commands/closeUnchangedFiles'; export * from './commands/copyMessageToClipboard'; export * from './commands/copyShaToClipboard'; @@ -30,18 +28,4 @@ export * from './commands/showQuickBranchHistory'; export * from './commands/showQuickCurrentBranchHistory'; export * from './commands/showQuickRepoStatus'; export * from './commands/toggleBlame'; -export * from './commands/toggleCodeLens'; - -export type CommandContext = 'gitlens:canToggleCodeLens' | 'gitlens:enabled' | 'gitlens:isBlameable' | 'gitlens:key'; -export const CommandContext = { - CanToggleCodeLens: 'gitlens:canToggleCodeLens' as CommandContext, - Enabled: 'gitlens:enabled' as CommandContext, - HasRemotes: 'gitlens:hasRemotes' as CommandContext, - IsBlameable: 'gitlens:isBlameable' as CommandContext, - Key: 'gitlens:key' as CommandContext -}; - - -export function setCommandContext(key: CommandContext | string, value: any) { - return commands.executeCommand(BuiltInCommands.SetContext, key, value); -} \ No newline at end of file +export * from './commands/toggleCodeLens'; \ No newline at end of file diff --git a/src/commands/closeUnchangedFiles.ts b/src/commands/closeUnchangedFiles.ts index 166cf36..c7df8ec 100644 --- a/src/commands/closeUnchangedFiles.ts +++ b/src/commands/closeUnchangedFiles.ts @@ -1,7 +1,7 @@ 'use strict'; import { TextEditor, Uri, window } from 'vscode'; import { ActiveEditorTracker } from '../activeEditorTracker'; -import { ActiveEditorCommand, Commands } from './commands'; +import { ActiveEditorCommand, Commands } from './common'; import { TextEditorComparer, UriComparer } from '../comparers'; import { GitService } from '../gitService'; import { Logger } from '../logger'; diff --git a/src/commands/commands.ts b/src/commands/common.ts similarity index 89% rename from src/commands/commands.ts rename to src/commands/common.ts index 6417a3c..eb46d81 100644 --- a/src/commands/commands.ts +++ b/src/commands/common.ts @@ -41,6 +41,20 @@ export const Commands = { ToggleCodeLens: 'gitlens.toggleCodeLens' as Commands }; +export type CommandContext = 'gitlens:canToggleCodeLens' | 'gitlens:enabled' | 'gitlens:isBlameable' | 'gitlens:key'; +export const CommandContext = { + CanToggleCodeLens: 'gitlens:canToggleCodeLens' as CommandContext, + Enabled: 'gitlens:enabled' as CommandContext, + HasRemotes: 'gitlens:hasRemotes' as CommandContext, + IsBlameable: 'gitlens:isBlameable' as CommandContext, + Key: 'gitlens:key' as CommandContext +}; + + +export function setCommandContext(key: CommandContext | string, value: any) { + return commands.executeCommand(BuiltInCommands.SetContext, key, value); +} + export abstract class Command extends Disposable { private _disposable: Disposable; diff --git a/src/commands/copyMessageToClipboard.ts b/src/commands/copyMessageToClipboard.ts index cfc20fb..8e8bcb7 100644 --- a/src/commands/copyMessageToClipboard.ts +++ b/src/commands/copyMessageToClipboard.ts @@ -1,7 +1,7 @@ 'use strict'; import { Iterables } from '../system'; import { TextEditor, Uri, window } from 'vscode'; -import { ActiveEditorCommand, Commands } from './commands'; +import { ActiveEditorCommand, Commands } from './common'; import { GitService, GitUri } from '../gitService'; import { Logger } from '../logger'; import { copy } from 'copy-paste'; diff --git a/src/commands/copyShaToClipboard.ts b/src/commands/copyShaToClipboard.ts index d688198..01ce8c7 100644 --- a/src/commands/copyShaToClipboard.ts +++ b/src/commands/copyShaToClipboard.ts @@ -1,7 +1,7 @@ 'use strict'; import { Iterables } from '../system'; import { TextEditor, Uri, window } from 'vscode'; -import { ActiveEditorCommand, Commands } from './commands'; +import { ActiveEditorCommand, Commands } from './common'; import { GitService, GitUri } from '../gitService'; import { Logger } from '../logger'; import { copy } from 'copy-paste'; diff --git a/src/commands/diffDirectory.ts b/src/commands/diffDirectory.ts index a7ef2f1..8246916 100644 --- a/src/commands/diffDirectory.ts +++ b/src/commands/diffDirectory.ts @@ -1,7 +1,7 @@ 'use strict'; import { Iterables } from '../system'; import { TextEditor, Uri, window } from 'vscode'; -import { ActiveEditorCommand, Commands } from './commands'; +import { ActiveEditorCommand, Commands } from './common'; import { GitService } from '../gitService'; import { Logger } from '../logger'; import { CommandQuickPickItem, BranchesQuickPick } from '../quickPicks'; diff --git a/src/commands/diffLineWithPrevious.ts b/src/commands/diffLineWithPrevious.ts index dc25e74..a5b5650 100644 --- a/src/commands/diffLineWithPrevious.ts +++ b/src/commands/diffLineWithPrevious.ts @@ -1,6 +1,6 @@ 'use strict'; import { commands, TextEditor, Uri, window } from 'vscode'; -import { ActiveEditorCommand, Commands } from './commands'; +import { ActiveEditorCommand, Commands } from './common'; import { BuiltInCommands } from '../constants'; import { GitCommit, GitService, GitUri } from '../gitService'; import { Logger } from '../logger'; diff --git a/src/commands/diffLineWithWorking.ts b/src/commands/diffLineWithWorking.ts index d9a970c..5b696b6 100644 --- a/src/commands/diffLineWithWorking.ts +++ b/src/commands/diffLineWithWorking.ts @@ -1,6 +1,6 @@ 'use strict'; import { commands, TextEditor, Uri, window } from 'vscode'; -import { ActiveEditorCommand, Commands } from './commands'; +import { ActiveEditorCommand, Commands } from './common'; import { GitCommit, GitService, GitUri } from '../gitService'; import { Logger } from '../logger'; diff --git a/src/commands/diffWithBranch.ts b/src/commands/diffWithBranch.ts index 7606933..6137766 100644 --- a/src/commands/diffWithBranch.ts +++ b/src/commands/diffWithBranch.ts @@ -1,6 +1,6 @@ 'use strict'; import { commands, TextEditor, Uri, window } from 'vscode'; -import { ActiveEditorCommand, Commands } from './commands'; +import { ActiveEditorCommand, Commands } from './common'; import { BuiltInCommands } from '../constants'; import { GitService, GitUri } from '../gitService'; import { Logger } from '../logger'; diff --git a/src/commands/diffWithNext.ts b/src/commands/diffWithNext.ts index e4d4a8e..14ecad4 100644 --- a/src/commands/diffWithNext.ts +++ b/src/commands/diffWithNext.ts @@ -1,7 +1,7 @@ 'use strict'; import { Iterables } from '../system'; import { commands, Range, TextEditor, Uri, window } from 'vscode'; -import { ActiveEditorCommand, Commands } from './commands'; +import { ActiveEditorCommand, Commands } from './common'; import { BuiltInCommands } from '../constants'; import { GitLogCommit, GitService, GitUri } from '../gitService'; import { Logger } from '../logger'; diff --git a/src/commands/diffWithPrevious.ts b/src/commands/diffWithPrevious.ts index 108619e..3bd774b 100644 --- a/src/commands/diffWithPrevious.ts +++ b/src/commands/diffWithPrevious.ts @@ -1,7 +1,7 @@ 'use strict'; import { Iterables } from '../system'; import { commands, Range, TextEditor, Uri, window } from 'vscode'; -import { ActiveEditorCommand, Commands } from './commands'; +import { ActiveEditorCommand, Commands } from './common'; import { BuiltInCommands } from '../constants'; import { GitCommit, GitService, GitUri } from '../gitService'; import { Logger } from '../logger'; diff --git a/src/commands/diffWithWorking.ts b/src/commands/diffWithWorking.ts index 68a3d9a..7d9cd40 100644 --- a/src/commands/diffWithWorking.ts +++ b/src/commands/diffWithWorking.ts @@ -1,7 +1,7 @@ 'use strict'; // import { Iterables } from '../system'; import { commands, TextEditor, Uri, window } from 'vscode'; -import { ActiveEditorCommand, Commands } from './commands'; +import { ActiveEditorCommand, Commands } from './common'; import { BuiltInCommands } from '../constants'; import { GitCommit, GitService, GitUri } from '../gitService'; import { Logger } from '../logger'; diff --git a/src/commands/keyboard.ts b/src/commands/keyboard.ts index 961ed54..09f4c14 100644 --- a/src/commands/keyboard.ts +++ b/src/commands/keyboard.ts @@ -1,7 +1,7 @@ 'use strict'; import { commands, Disposable, QuickPickItem } from 'vscode'; -import { CommandContext, setCommandContext } from '../commands'; -import { CommandQuickPickItem, OpenFileCommandQuickPickItem } from '../quickPicks/quickPicks'; +import { CommandContext, setCommandContext } from './common'; +import { CommandQuickPickItem, OpenFileCommandQuickPickItem } from '../quickPicks'; import { Logger } from '../logger'; const keyNoopCommand = Object.create(null) as QuickPickItem; diff --git a/src/commands/openChangedFiles.ts b/src/commands/openChangedFiles.ts index bd43c11..3a08fda 100644 --- a/src/commands/openChangedFiles.ts +++ b/src/commands/openChangedFiles.ts @@ -1,6 +1,6 @@ 'use strict'; import { TextEditor, Uri, window } from 'vscode'; -import { ActiveEditorCommand, Commands, openEditor } from './commands'; +import { ActiveEditorCommand, Commands, openEditor } from './common'; import { GitService } from '../gitService'; import { Logger } from '../logger'; import * as path from 'path'; diff --git a/src/commands/openCommitInRemote.ts b/src/commands/openCommitInRemote.ts index 21fc02a..53cdf31 100644 --- a/src/commands/openCommitInRemote.ts +++ b/src/commands/openCommitInRemote.ts @@ -1,7 +1,7 @@ 'use strict'; import { Arrays } from '../system'; import { commands, TextEditor, TextEditorEdit, Uri, window } from 'vscode'; -import { ActiveEditorCommand, Commands } from './commands'; +import { ActiveEditorCommand, Commands } from './common'; import { GitCommit, GitService, GitUri } from '../gitService'; import { Logger } from '../logger'; diff --git a/src/commands/openFileInRemote.ts b/src/commands/openFileInRemote.ts index 875bb2e..aafb83c 100644 --- a/src/commands/openFileInRemote.ts +++ b/src/commands/openFileInRemote.ts @@ -1,7 +1,7 @@ 'use strict'; import { Arrays } from '../system'; import { commands, Range, TextEditor, TextEditorEdit, Uri, window } from 'vscode'; -import { ActiveEditorCommand, Commands } from './commands'; +import { ActiveEditorCommand, Commands } from './common'; import { GitService, GitUri } from '../gitService'; import { Logger } from '../logger'; diff --git a/src/commands/openInRemote.ts b/src/commands/openInRemote.ts index caf5fe6..2dde646 100644 --- a/src/commands/openInRemote.ts +++ b/src/commands/openInRemote.ts @@ -1,6 +1,6 @@ 'use strict'; import { TextEditor, Uri, window } from 'vscode'; -import { ActiveEditorCommand, Commands } from './commands'; +import { ActiveEditorCommand, Commands } from './common'; import { GitRemote, RemoteOpenType } from '../gitService'; import { Logger } from '../logger'; import { CommandQuickPickItem, OpenRemoteCommandQuickPickItem, RemotesQuickPick } from '../quickPicks'; diff --git a/src/commands/showBlame.ts b/src/commands/showBlame.ts index 327eef9..b1c6875 100644 --- a/src/commands/showBlame.ts +++ b/src/commands/showBlame.ts @@ -1,7 +1,7 @@ 'use strict'; import { TextEditor, TextEditorEdit, Uri, window } from 'vscode'; import { BlameAnnotationController } from '../blameAnnotationController'; -import { Commands, EditorCommand } from './commands'; +import { Commands, EditorCommand } from './common'; import { Logger } from '../logger'; export class ShowBlameCommand extends EditorCommand { diff --git a/src/commands/showBlameHistory.ts b/src/commands/showBlameHistory.ts index fa9a2ea..e9cb0cd 100644 --- a/src/commands/showBlameHistory.ts +++ b/src/commands/showBlameHistory.ts @@ -1,6 +1,6 @@ 'use strict'; import { commands, Position, Range, TextEditor, TextEditorEdit, Uri, window } from 'vscode'; -import { Commands, EditorCommand } from './commands'; +import { Commands, EditorCommand } from './common'; import { BuiltInCommands } from '../constants'; import { GitService, GitUri } from '../gitService'; import { Logger } from '../logger'; diff --git a/src/commands/showFileHistory.ts b/src/commands/showFileHistory.ts index 55a0b05..60412a2 100644 --- a/src/commands/showFileHistory.ts +++ b/src/commands/showFileHistory.ts @@ -1,6 +1,6 @@ 'use strict'; import { commands, Position, Range, TextEditor, TextEditorEdit, Uri, window } from 'vscode'; -import { Commands, EditorCommand } from './commands'; +import { Commands, EditorCommand } from './common'; import { BuiltInCommands } from '../constants'; import { GitService, GitUri } from '../gitService'; import { Logger } from '../logger'; diff --git a/src/commands/showLastQuickPick.ts b/src/commands/showLastQuickPick.ts index 2607067..43ea723 100644 --- a/src/commands/showLastQuickPick.ts +++ b/src/commands/showLastQuickPick.ts @@ -1,6 +1,6 @@ 'use strict'; import { commands, window } from 'vscode'; -import { Command, Commands, getLastCommand } from './commands'; +import { Command, Commands, getLastCommand } from './common'; import { Logger } from '../logger'; export class ShowLastQuickPickCommand extends Command { diff --git a/src/commands/showQuickBranchHistory.ts b/src/commands/showQuickBranchHistory.ts index a3e0166..e7c4af2 100644 --- a/src/commands/showQuickBranchHistory.ts +++ b/src/commands/showQuickBranchHistory.ts @@ -1,6 +1,6 @@ 'use strict'; import { commands, TextEditor, Uri, window } from 'vscode'; -import { ActiveEditorCachedCommand, Commands } from '../commands'; +import { ActiveEditorCachedCommand, Commands } from './common'; import { GitService, GitUri, IGitLog } from '../gitService'; import { Logger } from '../logger'; import { BranchesQuickPick, BranchHistoryQuickPick, CommandQuickPickItem } from '../quickPicks'; diff --git a/src/commands/showQuickCommitDetails.ts b/src/commands/showQuickCommitDetails.ts index 6b9b2ba..d91d670 100644 --- a/src/commands/showQuickCommitDetails.ts +++ b/src/commands/showQuickCommitDetails.ts @@ -1,6 +1,6 @@ 'use strict'; import { commands, TextEditor, Uri, window } from 'vscode'; -import { ActiveEditorCachedCommand, Commands } from './commands'; +import { ActiveEditorCachedCommand, Commands } from './common'; import { GitCommit, GitLogCommit, GitService, GitUri, IGitLog } from '../gitService'; import { Logger } from '../logger'; import { CommandQuickPickItem, CommitDetailsQuickPick, CommitWithFileStatusQuickPickItem } from '../quickPicks'; diff --git a/src/commands/showQuickCommitFileDetails.ts b/src/commands/showQuickCommitFileDetails.ts index 9c0516d..8c12db2 100644 --- a/src/commands/showQuickCommitFileDetails.ts +++ b/src/commands/showQuickCommitFileDetails.ts @@ -1,6 +1,6 @@ 'use strict'; import { TextEditor, Uri, window } from 'vscode'; -import { ActiveEditorCachedCommand, Commands } from './commands'; +import { ActiveEditorCachedCommand, Commands } from './common'; import { GitCommit, GitLogCommit, GitService, GitUri, IGitLog } from '../gitService'; import { Logger } from '../logger'; import { CommandQuickPickItem, CommitFileDetailsQuickPick } from '../quickPicks'; diff --git a/src/commands/showQuickCurrentBranchHistory.ts b/src/commands/showQuickCurrentBranchHistory.ts index d69c843..e55da0f 100644 --- a/src/commands/showQuickCurrentBranchHistory.ts +++ b/src/commands/showQuickCurrentBranchHistory.ts @@ -1,6 +1,6 @@ 'use strict'; import { commands, TextEditor, Uri, window } from 'vscode'; -import { ActiveEditorCachedCommand, Commands } from '../commands'; +import { ActiveEditorCachedCommand, Commands } from './common'; import { GitService } from '../gitService'; import { Logger } from '../logger'; import { CommandQuickPickItem } from '../quickPicks'; diff --git a/src/commands/showQuickFileHistory.ts b/src/commands/showQuickFileHistory.ts index 59cbb72..85dc66f 100644 --- a/src/commands/showQuickFileHistory.ts +++ b/src/commands/showQuickFileHistory.ts @@ -1,6 +1,6 @@ 'use strict'; import { commands, Range, TextEditor, Uri, window } from 'vscode'; -import { ActiveEditorCachedCommand, Commands } from '../commands'; +import { ActiveEditorCachedCommand, Commands } from './common'; import { GitService, GitUri, IGitLog } from '../gitService'; import { Logger } from '../logger'; import { CommandQuickPickItem, FileHistoryQuickPick } from '../quickPicks'; diff --git a/src/commands/showQuickRepoStatus.ts b/src/commands/showQuickRepoStatus.ts index e662595..305f0a3 100644 --- a/src/commands/showQuickRepoStatus.ts +++ b/src/commands/showQuickRepoStatus.ts @@ -1,6 +1,6 @@ 'use strict'; import { TextEditor, Uri, window } from 'vscode'; -import { ActiveEditorCachedCommand, Commands } from './commands'; +import { ActiveEditorCachedCommand, Commands } from './common'; import { GitService } from '../gitService'; import { Logger } from '../logger'; import { CommandQuickPickItem, RepoStatusQuickPick } from '../quickPicks'; diff --git a/src/commands/toggleBlame.ts b/src/commands/toggleBlame.ts index dbf76c8..5d18fe2 100644 --- a/src/commands/toggleBlame.ts +++ b/src/commands/toggleBlame.ts @@ -1,7 +1,7 @@ 'use strict'; import { TextEditor, TextEditorEdit, Uri, window } from 'vscode'; import { BlameAnnotationController } from '../blameAnnotationController'; -import { Commands, EditorCommand } from './commands'; +import { Commands, EditorCommand } from './common'; import { Logger } from '../logger'; export class ToggleBlameCommand extends EditorCommand { diff --git a/src/commands/toggleCodeLens.ts b/src/commands/toggleCodeLens.ts index 6e36344..b7294fb 100644 --- a/src/commands/toggleCodeLens.ts +++ b/src/commands/toggleCodeLens.ts @@ -1,6 +1,6 @@ 'use strict'; import { TextEditor, TextEditorEdit } from 'vscode'; -import { Commands, EditorCommand } from './commands'; +import { Commands, EditorCommand } from './common'; import { GitService } from '../gitService'; export class ToggleCodeLensCommand extends EditorCommand { diff --git a/src/git/remotes/provider.ts b/src/git/remotes/provider.ts index 422101f..787b106 100644 --- a/src/git/remotes/provider.ts +++ b/src/git/remotes/provider.ts @@ -4,6 +4,16 @@ import { BuiltInCommands } from '../../constants'; export type RemoteOpenType = 'branch' | 'commit' | 'file' | 'working-file'; +export function getNameFromRemoteOpenType(type: RemoteOpenType) { + switch (type) { + case 'branch': return 'Branch'; + case 'commit': return 'Commit'; + case 'file': return 'File'; + case 'working-file': return 'Working File'; + default: return ''; + } +} + export abstract class RemoteProvider { constructor(public domain: string, public path: string) { } diff --git a/src/quickPicks.ts b/src/quickPicks.ts index 461b6d8..99afc01 100644 --- a/src/quickPicks.ts +++ b/src/quickPicks.ts @@ -1,7 +1,7 @@ 'use strict'; +export * from './quickPicks/common'; + export * from './quickPicks/branches'; -export * from './quickPicks/quickPicks'; -export * from './quickPicks/gitQuickPicks'; export * from './quickPicks/commitDetails'; export * from './quickPicks/commitFileDetails'; export * from './quickPicks/branchHistory'; diff --git a/src/quickPicks/branchHistory.ts b/src/quickPicks/branchHistory.ts index 6cda347..44fa952 100644 --- a/src/quickPicks/branchHistory.ts +++ b/src/quickPicks/branchHistory.ts @@ -2,8 +2,9 @@ import { Arrays, Iterables } from '../system'; import { CancellationTokenSource, QuickPickOptions, Uri, window } from 'vscode'; import { Commands, Keyboard, KeyNoopCommand } from '../commands'; +import { CommandQuickPickItem, CommitQuickPickItem, getQuickPickIgnoreFocusOut, showQuickPickProgress } from './common'; import { GitService, GitUri, IGitLog } from '../gitService'; -import { CommandQuickPickItem, CommitQuickPickItem, getQuickPickIgnoreFocusOut, OpenRemotesCommandQuickPickItem, showQuickPickProgress } from '../quickPicks'; +import { OpenRemotesCommandQuickPickItem } from './remotes'; export class BranchHistoryQuickPick { diff --git a/src/quickPicks/branches.ts b/src/quickPicks/branches.ts index 2686463..02f45e8 100644 --- a/src/quickPicks/branches.ts +++ b/src/quickPicks/branches.ts @@ -1,7 +1,7 @@ 'use strict'; import { QuickPickItem, QuickPickOptions, window } from 'vscode'; import { GitBranch } from '../gitService'; -import { CommandQuickPickItem, getQuickPickIgnoreFocusOut } from './quickPicks'; +import { CommandQuickPickItem, getQuickPickIgnoreFocusOut } from './common'; export class BranchQuickPickItem implements QuickPickItem { diff --git a/src/quickPicks/commitDetails.ts b/src/quickPicks/commitDetails.ts index 3d569a0..077aa9a 100644 --- a/src/quickPicks/commitDetails.ts +++ b/src/quickPicks/commitDetails.ts @@ -2,11 +2,45 @@ import { Arrays, Iterables } from '../system'; import { QuickPickItem, QuickPickOptions, Uri, window } from 'vscode'; import { Commands, Keyboard, KeyNoopCommand } from '../commands'; -import { GitLogCommit, GitService, IGitLog } from '../gitService'; -import { CommandQuickPickItem, CommitWithFileStatusQuickPickItem, getQuickPickIgnoreFocusOut, KeyCommandQuickPickItem, OpenFilesCommandQuickPickItem, OpenRemotesCommandQuickPickItem } from '../quickPicks'; +import { CommandQuickPickItem, getQuickPickIgnoreFocusOut, KeyCommandQuickPickItem, OpenFileCommandQuickPickItem, OpenFilesCommandQuickPickItem } from './common'; +import { getGitStatusIcon, Git, GitCommit, GitLogCommit, GitService, GitStatusFileStatus, GitUri, IGitLog, IGitStatusFile } from '../gitService'; +import { OpenRemotesCommandQuickPickItem } from './remotes'; import * as moment from 'moment'; import * as path from 'path'; +export class CommitWithFileStatusQuickPickItem extends OpenFileCommandQuickPickItem { + + fileName: string; + gitUri: GitUri; + sha: string; + shortSha: string; + status: GitStatusFileStatus; + + constructor(commit: GitCommit, status: IGitStatusFile) { + const icon = getGitStatusIcon(status.status); + + let directory = Git.normalizePath(path.dirname(status.fileName)); + if (!directory || directory === '.') { + directory = undefined; + } + + let description = (status.status === 'R' && status.originalFileName) + ? `${directory || ''} \u00a0\u2190\u00a0 ${status.originalFileName}` + : directory; + + super(GitService.toGitContentUri(commit.sha, status.fileName, commit.repoPath, commit.originalFileName), { + label: `\u00a0\u00a0\u00a0\u00a0${icon}\u00a0\u00a0 ${path.basename(status.fileName)}`, + description: description + }); + + this.fileName = status.fileName; + this.gitUri = new GitUri(Uri.file(path.resolve(commit.repoPath, status.fileName))); + this.sha = commit.sha; + this.shortSha = commit.shortSha; + this.status = status.status; + } +} + export class OpenCommitFilesCommandQuickPickItem extends OpenFilesCommandQuickPickItem { constructor(commit: GitLogCommit, item?: QuickPickItem) { diff --git a/src/quickPicks/commitFileDetails.ts b/src/quickPicks/commitFileDetails.ts index 3cc64d5..6dde680 100644 --- a/src/quickPicks/commitFileDetails.ts +++ b/src/quickPicks/commitFileDetails.ts @@ -2,8 +2,9 @@ import { Arrays, Iterables } from '../system'; import { QuickPickItem, QuickPickOptions, Uri, window } from 'vscode'; import { Commands, Keyboard, KeyNoopCommand } from '../commands'; +import { CommandQuickPickItem, getQuickPickIgnoreFocusOut, KeyCommandQuickPickItem, OpenFileCommandQuickPickItem } from './common'; import { GitCommit, GitLogCommit, GitService, GitUri, IGitLog } from '../gitService'; -import { CommandQuickPickItem, getQuickPickIgnoreFocusOut, KeyCommandQuickPickItem, OpenFileCommandQuickPickItem, OpenRemotesCommandQuickPickItem } from '../quickPicks'; +import { OpenRemotesCommandQuickPickItem } from './remotes'; import * as moment from 'moment'; import * as path from 'path'; diff --git a/src/quickPicks/quickPicks.ts b/src/quickPicks/common.ts similarity index 87% rename from src/quickPicks/quickPicks.ts rename to src/quickPicks/common.ts index b0041a1..8247591 100644 --- a/src/quickPicks/quickPicks.ts +++ b/src/quickPicks/common.ts @@ -2,7 +2,9 @@ import { CancellationTokenSource, commands, Disposable, QuickPickItem, QuickPickOptions, TextEditor, Uri, window, workspace } from 'vscode'; import { Commands, Keyboard, KeyboardScope, KeyMapping, openEditor } from '../commands'; import { IAdvancedConfig } from '../configuration'; +import { GitCommit } from '../gitService'; // import { Logger } from '../logger'; +import * as moment from 'moment'; export function getQuickPickIgnoreFocusOut() { return !workspace.getConfiguration('gitlens').get('advanced').quickPick.closeOnFocusOut; @@ -106,4 +108,17 @@ export class OpenFilesCommandQuickPickItem extends CommandQuickPickItem { } return undefined; } +} + +export class CommitQuickPickItem implements QuickPickItem { + + label: string; + description: string; + detail: string; + + constructor(public commit: GitCommit, descriptionSuffix: string = '') { + this.label = `${commit.author}, ${moment(commit.date).fromNow()}`; + this.description = `\u00a0 \u2014 \u00a0\u00a0 $(git-commit) ${commit.shortSha}${descriptionSuffix}`; + this.detail = commit.message; + } } \ No newline at end of file diff --git a/src/quickPicks/fileHistory.ts b/src/quickPicks/fileHistory.ts index 11a736b..35fd0c3 100644 --- a/src/quickPicks/fileHistory.ts +++ b/src/quickPicks/fileHistory.ts @@ -2,8 +2,9 @@ import { Arrays, Iterables } from '../system'; import { CancellationTokenSource, QuickPickOptions, Uri, window } from 'vscode'; import { Commands, Keyboard, KeyNoopCommand } from '../commands'; +import { CommandQuickPickItem, CommitQuickPickItem, getQuickPickIgnoreFocusOut, showQuickPickProgress } from './common'; import { GitService, GitUri, IGitLog } from '../gitService'; -import { CommandQuickPickItem, CommitQuickPickItem, getQuickPickIgnoreFocusOut, OpenRemotesCommandQuickPickItem, showQuickPickProgress } from '../quickPicks'; +import { OpenRemotesCommandQuickPickItem } from './remotes'; import * as path from 'path'; export class FileHistoryQuickPick { diff --git a/src/quickPicks/gitQuickPicks.ts b/src/quickPicks/gitQuickPicks.ts deleted file mode 100644 index 70294d4..0000000 --- a/src/quickPicks/gitQuickPicks.ts +++ /dev/null @@ -1,52 +0,0 @@ -'use strict'; -import { QuickPickItem, Uri } from 'vscode'; -import { getGitStatusIcon, Git, GitCommit, GitStatusFileStatus, GitService, GitUri, IGitStatusFile } from '../gitService'; -import { OpenFileCommandQuickPickItem } from './quickPicks'; -import * as moment from 'moment'; -import * as path from 'path'; - -export class CommitQuickPickItem implements QuickPickItem { - - label: string; - description: string; - detail: string; - - constructor(public commit: GitCommit, descriptionSuffix: string = '') { - this.label = `${commit.author}, ${moment(commit.date).fromNow()}`; - this.description = `\u00a0 \u2014 \u00a0\u00a0 $(git-commit) ${commit.shortSha}${descriptionSuffix}`; - this.detail = commit.message; - } -} - -export class CommitWithFileStatusQuickPickItem extends OpenFileCommandQuickPickItem { - - fileName: string; - gitUri: GitUri; - sha: string; - shortSha: string; - status: GitStatusFileStatus; - - constructor(commit: GitCommit, status: IGitStatusFile) { - const icon = getGitStatusIcon(status.status); - - let directory = Git.normalizePath(path.dirname(status.fileName)); - if (!directory || directory === '.') { - directory = undefined; - } - - let description = (status.status === 'R' && status.originalFileName) - ? `${directory || ''} \u00a0\u2190\u00a0 ${status.originalFileName}` - : directory; - - super(GitService.toGitContentUri(commit.sha, status.fileName, commit.repoPath, commit.originalFileName), { - label: `\u00a0\u00a0\u00a0\u00a0${icon}\u00a0\u00a0 ${path.basename(status.fileName)}`, - description: description - }); - - this.fileName = status.fileName; - this.gitUri = new GitUri(Uri.file(path.resolve(commit.repoPath, status.fileName))); - this.sha = commit.sha; - this.shortSha = commit.shortSha; - this.status = status.status; - } -} \ No newline at end of file diff --git a/src/quickPicks/remotes.ts b/src/quickPicks/remotes.ts index 86261f4..82ff745 100644 --- a/src/quickPicks/remotes.ts +++ b/src/quickPicks/remotes.ts @@ -1,20 +1,10 @@ 'use strict'; import { QuickPickOptions, window } from 'vscode'; import { Commands } from '../commands'; -import { GitRemote, RemoteOpenType } from '../gitService'; -import { CommandQuickPickItem, getQuickPickIgnoreFocusOut } from './quickPicks'; +import { CommandQuickPickItem, getQuickPickIgnoreFocusOut } from './common'; +import { getNameFromRemoteOpenType, GitRemote, RemoteOpenType } from '../gitService'; import * as path from 'path'; -function getNameFromRemoteOpenType(type: RemoteOpenType) { - switch (type) { - case 'branch': return 'Branch'; - case 'commit': return 'Commit'; - case 'file': return 'File'; - case 'working-file': return 'Working File'; - default: return ''; - } -} - export class OpenRemoteCommandQuickPickItem extends CommandQuickPickItem { private remote: GitRemote; diff --git a/src/quickPicks/repoStatus.ts b/src/quickPicks/repoStatus.ts index ba0d3be..22d7254 100644 --- a/src/quickPicks/repoStatus.ts +++ b/src/quickPicks/repoStatus.ts @@ -2,8 +2,8 @@ import { Iterables } from '../system'; import { QuickPickItem, QuickPickOptions, Uri, window } from 'vscode'; import { Commands, Keyboard } from '../commands'; +import { CommandQuickPickItem, getQuickPickIgnoreFocusOut, OpenFileCommandQuickPickItem } from './common'; import { Git, GitStatusFile, GitUri, IGitStatus } from '../gitService'; -import { CommandQuickPickItem, getQuickPickIgnoreFocusOut, OpenFileCommandQuickPickItem } from '../quickPicks'; import * as path from 'path'; export class OpenStatusFileCommandQuickPickItem extends OpenFileCommandQuickPickItem {