Skip to content
This repository has been archived by the owner on May 21, 2019. It is now read-only.

Commit

Permalink
Complete git status (#797)
Browse files Browse the repository at this point in the history
* Complete Git status codes

* Remove extra code

* Fix lint
  • Loading branch information
drew-gross authored Oct 3, 2016
1 parent db270a5 commit 9d80968
Show file tree
Hide file tree
Showing 2 changed files with 93 additions and 45 deletions.
44 changes: 32 additions & 12 deletions src/plugins/autocompletion_utils/Common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -260,26 +260,46 @@ export function mk(provider: AutocompletionProvider) {

export const emptyProvider = mk(async() => []);



function gitStatusCodeColor(statusCode: StatusCode) {
switch (statusCode) {
case StatusCode.Added:
case StatusCode.StagedModified:
case StatusCode.StagedAdded:
case StatusCode.StagedDeleted:
case StatusCode.StagedRenamed:
case StatusCode.StagedCopied:
return colors.green;
case StatusCode.Copied:

case StatusCode.StagedCopiedUnstagedModified:
case StatusCode.StagedCopiedUnstagedDeleted:
case StatusCode.StagedRenamedUnstagedModified:
case StatusCode.StagedRenamedUnstagedDeleted:
case StatusCode.StagedDeletedUnstagedModified:
case StatusCode.StagedAddedUnstagedModified:
case StatusCode.StagedAddedUnstagedDeleted:
case StatusCode.StagedModifiedUnstagedModified:
case StatusCode.StagedModifiedUnstagedDeleted:
return colors.blue;
case StatusCode.Deleted:

case StatusCode.UnstagedDeleted:
case StatusCode.UnmergedBothDeleted:
case StatusCode.UnmergedAddedByUs:
case StatusCode.UnmergedDeletedByThem:
case StatusCode.UnmergedAddedByThem:
case StatusCode.UnmergedDeletedByUs:
case StatusCode.UnmergedBothAdded:
case StatusCode.UnmergedBothModified:
case StatusCode.Untracked:
case StatusCode.Ignored:
case StatusCode.Invalid:
return colors.red;
case StatusCode.Modified:
return colors.blue;
case StatusCode.Renamed:
return colors.blue;

case StatusCode.Unmodified:
return colors.white;
case StatusCode.Untracked:
return colors.red;
case StatusCode.UpdatedButUnmerged:
return colors.blue;
default:
throw "Should never happen.";
console.error(`Unhandled git status code: ${statusCode}`);
return colors.white;
}
}

Expand Down
94 changes: 61 additions & 33 deletions src/utils/Git.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,44 +22,72 @@ export interface ConfigVariable {
}

export enum StatusCode {
Untracked,
Unmodified,
Modified,
Added,
Deleted,
Renamed,
Copied,
UpdatedButUnmerged,
StagedChanges,
StagedAndUnstagedChanges

UnstagedModified,
UnstagedDeleted,
StagedModified,
StagedModifiedUnstagedModified,
StagedModifiedUnstagedDeleted,
StagedAdded,
StagedAddedUnstagedModified,
StagedAddedUnstagedDeleted,
StagedDeleted,
StagedDeletedUnstagedModified,
StagedRenamed,
StagedRenamedUnstagedModified,
StagedRenamedUnstagedDeleted,
StagedCopied,
StagedCopiedUnstagedModified,
StagedCopiedUnstagedDeleted,

UnmergedBothDeleted,
UnmergedAddedByUs,
UnmergedDeletedByThem,
UnmergedAddedByThem,
UnmergedDeletedByUs,
UnmergedBothAdded,
UnmergedBothModified,

Untracked,
Ignored,

Invalid,
}

function lettersToStatusCode(letters: string): StatusCode {
switch (letters) {
case "??":
return StatusCode.Untracked;
case " ":
return StatusCode.Unmodified;
case "M ":
return StatusCode.StagedChanges;
case " M":
return StatusCode.Modified;
case "AM":
return StatusCode.Added;
case " A":
return StatusCode.Added;
case " D":
return StatusCode.Deleted;
case " R":
return StatusCode.Renamed;
case " C":
return StatusCode.Copied;
case " U":
return StatusCode.UpdatedButUnmerged;
case "MM":
return StatusCode.StagedAndUnstagedChanges;
default:
throw `Unknown Git status code: ${letters}`;
case " ": return StatusCode.Unmodified;

case " M": return StatusCode.UnstagedModified;
case " D": return StatusCode.UnstagedDeleted;
case "M ": return StatusCode.StagedModified;
case "MM": return StatusCode.StagedModifiedUnstagedModified;
case "MD": return StatusCode.StagedModifiedUnstagedDeleted;
case "A ": return StatusCode.StagedAdded;
case "AM": return StatusCode.StagedAddedUnstagedModified;
case "AD": return StatusCode.StagedAddedUnstagedDeleted;
case "D ": return StatusCode.StagedDeleted;
case "DM": return StatusCode.StagedDeletedUnstagedModified;
case "R ": return StatusCode.StagedRenamed;
case "RM": return StatusCode.StagedRenamedUnstagedModified;
case "RD": return StatusCode.StagedRenamedUnstagedDeleted;
case "C ": return StatusCode.StagedCopied;
case "CM": return StatusCode.StagedCopiedUnstagedModified;
case "CD": return StatusCode.StagedCopiedUnstagedDeleted;

case "DD": return StatusCode.UnmergedBothDeleted;
case "AU": return StatusCode.UnmergedAddedByUs;
case "UD": return StatusCode.UnmergedDeletedByThem;
case "UA": return StatusCode.UnmergedAddedByThem;
case "DU": return StatusCode.UnmergedDeletedByUs;
case "AA": return StatusCode.UnmergedBothAdded;
case "UU": return StatusCode.UnmergedBothModified;

case "??": return StatusCode.Untracked;
case "!!": return StatusCode.Ignored;

default: return StatusCode.Invalid;
}
}

Expand Down

0 comments on commit 9d80968

Please sign in to comment.