Skip to content

Commit

Permalink
Move counter check to separate function
Browse files Browse the repository at this point in the history
  • Loading branch information
woefe committed Feb 24, 2024
1 parent 85d7ca4 commit e2da06d
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 49 deletions.
7 changes: 3 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ The `symbol` option prints only `ZSH_THEME_GIT_PROMPT_UPSTREAM_SYMBOL`.
Furthermore, a warning symbol can be configured through `ZSH_THEME_GIT_PROMPT_UPSTREAM_NO_TRACKING` for the case where no remote is available.
`ZSH_THEME_GIT_PROMPT_UPSTREAM_NO_TRACKING` can be set independently of `ZSH_GIT_PROMPT_SHOW_UPSTREAM`.

### Show whether there are stash entries
### Show stash entries
If `ZSH_GIT_PROMPT_SHOW_STASH` is set, the prompt will display a symbol and the number of stash entries when there are entries in the stash.
On Git versions older than 2.35.0 this will execute another Git command every time a new prompt is shown!
To enable stash entries add the following line to your `.zshrc`:
Expand All @@ -154,10 +154,9 @@ ZSH_GIT_PROMPT_SHOW_STASH=1
```

### Disable display of numbers
By default, the prompt will show counts for each item in the tracking status and local status sections.
(See [Prompt Structure](#prompt-structure) for details about these sections.)
By default, the prompt will show counts for each item in the tracking status and local status sections (see [Prompt Structure](#prompt-structure) for details about these sections).
However, you can disable the display of counts for either or both sections of the prompt using `ZSH_GIT_PROMPT_SHOW_TRACKING_COUNTS` and `ZSH_GIT_PROMPT_SHOW_LOCAL_COUNTS`.
If you set these variables to anything other than `1`, then the symbols will be shown but not the counts.
If you unset these variables or set them to `0`, then only the symbols will be shown but not the counts.
For example, a prompt such as `[master|✚2]` will become `[master|✚]` instead.

### Force blank
Expand Down
71 changes: 26 additions & 45 deletions git-prompt.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,24 @@ function _zsh_git_prompt_git_status() {
print(RC);
}
function count_element(prefix, count, show_count) {
content = "";
if (show_count) {
content = count;
}
if (count > 0) {
prompt_element(prefix, content);
}
}
function local_element(prefix, count) {
count_element(prefix, count, SHOW_LOCAL_COUNTS)
}
function tracking_element(prefix, count) {
count_element(prefix, count, SHOW_TRACKING_COUNTS)
}
$1 == "fatal:" {
fatal = 1;
}
Expand Down Expand Up @@ -207,59 +225,22 @@ function _zsh_git_prompt_git_status() {
prompt_element(UPSTREAM_PREFIX, upstream, UPSTREAM_SUFFIX);
}
if (behind < 0) {
if (SHOW_TRACKING_COUNTS == "1") {
count = behind * -1;
} else {
count = ""
}
prompt_element(BEHIND, count);
}
tracking_element(BEHIND, behind * -1);
if (ahead > 0) {
if (SHOW_TRACKING_COUNTS == "1") {
count = ahead * 1;
}
prompt_element(AHEAD, count);
}
tracking_element(AHEAD, ahead * 1);
prompt_element(SEPARATOR);
if (unmerged > 0) {
if (SHOW_LOCAL_COUNTS == "1") {
count = unmerged;
} else {
count = ""
}
prompt_element(UNMERGED, count);
}
local_element(UNMERGED, unmerged);
if (staged > 0) {
if (SHOW_LOCAL_COUNTS == "1") {
count = staged;
}
prompt_element(STAGED, count);
}
local_element(STAGED, staged);
if (unstaged > 0) {
if (SHOW_LOCAL_COUNTS == "1") {
count = unstaged;
}
prompt_element(UNSTAGED, count);
}
local_element(UNSTAGED, unstaged);
if (untracked > 0) {
if (SHOW_LOCAL_COUNTS == "1") {
count = untracked;
}
prompt_element(UNTRACKED, count);
}
local_element(UNTRACKED, untracked);
if (stashed > 0 && SHOW_STASH != "") {
if (SHOW_LOCAL_COUNTS == "1") {
count = stashed;
}
prompt_element(STASHED, count);
if (SHOW_STASH) {
local_element(STASHED, stashed);
}
if (unmerged == 0 && staged == 0 && unstaged == 0 && untracked == 0) {
Expand Down

0 comments on commit e2da06d

Please sign in to comment.