diff --git a/helper.zsh b/helper.zsh index 1b401618..af0e3db0 100644 --- a/helper.zsh +++ b/helper.zsh @@ -17,7 +17,7 @@ function is-true() { # Prints the first non-empty string in the arguments array. function coalesce() { - for arg in "$argv[@]"; do + for arg in $argv; do print "$arg" return 0 done diff --git a/plugins/git/functions/git-info b/plugins/git/functions/git-info index d0602856..efd75b42 100644 --- a/plugins/git/functions/git-info +++ b/plugins/git/functions/git-info @@ -218,9 +218,11 @@ function git-info() { # Get commit. commit="$(git rev-parse HEAD 2>/dev/null)" - # Format commit (short). - zstyle -s ':omz:plugin:git:prompt' commit 'commit_format' - zformat -f commit_formatted "$commit_format" "c:$commit" + # Format commit. + if [[ -n "$commit" ]]; then + zstyle -s ':omz:plugin:git:prompt' commit 'commit_format' + zformat -f commit_formatted "$commit_format" "c:$commit" + fi # Stashed if [[ -f "$(_git-dir)/refs/stash" ]]; then @@ -238,6 +240,8 @@ function git-info() { if (( line_number == 1 )) && [[ "$line" == *'(no branch)'* ]]; then # Get action. action="$(_git-action)" + + # Format action. if [[ -n "$action" ]]; then zstyle -s ':omz:plugin:git:prompt' action 'action_format' zformat -f action_formatted "$action_format" "s:$action" @@ -287,11 +291,11 @@ function git-info() { done < <("${(z)status_cmd}" 2>/dev/null) # Format branch. - zstyle -s ':omz:plugin:git:prompt' branch 'branch_format' - zformat -f branch_formatted "$branch_format" "b:$branch" + if [[ -n "$branch" ]]; then + zstyle -s ':omz:plugin:git:prompt' branch 'branch_format' + zformat -f branch_formatted "$branch_format" "b:$branch" - # Format remote. - if [[ "$branch" != "$commit" ]]; then + # Format remote. if [[ -z "$remote" ]]; then remote="${$( \ git rev-parse \ diff --git a/themes/sorin/prompt_sorin_setup b/themes/sorin/prompt_sorin_setup index 9e89a67c..936fab4c 100644 --- a/themes/sorin/prompt_sorin_setup +++ b/themes/sorin/prompt_sorin_setup @@ -35,14 +35,14 @@ function prompt_sorin_setup() { zstyle ':omz:plugin:git:prompt' deleted ' %%B%F{red}✖%f%%b' zstyle ':omz:plugin:git:prompt' modified ' %%B%F{blue}✱%f%%b' zstyle ':omz:plugin:git:prompt' renamed ' %%B%F{magenta}➜%f%%b' - zstyle ':omz:plugin:git:prompt' commit '%.7c' + zstyle ':omz:plugin:git:prompt' commit ':%F{red}%.7c%f' zstyle ':omz:plugin:git:prompt' stashed ' %%B%F{cyan}✭%f%%b' zstyle ':omz:plugin:git:prompt' unmerged ' %%B%F{yellow}═%f%%b' zstyle ':omz:plugin:git:prompt' untracked ' %%B%F{white}◼%f%%b' + zstyle ':omz:plugin:git:prompt' prompt ' %F{blue}git%f$(coalesce "%b" "%c")%s' zstyle ':omz:plugin:git:prompt' rprompt '%A%B%S%a%d%m%r%U%u' - zstyle -e ':omz:plugin:git:prompt' prompt 'reply=(" %F{blue}git%f$(coalesce "%b" "%c")%s")' - PROMPT='%F{cyan}%1~%f${git_prompt_info} %(!.%B%F{red}#%f%b.%B%F{green}❯%f%b) ' + PROMPT='%F{cyan}%1~%f${(e)git_prompt_info} %(!.%B%F{red}#%f%b.%B%F{green}❯%f%b) ' RPROMPT='%(?::%F{red}⏎%f)${VIM:+" %B%F{green}V%f%b"}${git_rprompt_info}' SPROMPT='zsh: correct %F{red}%R%f to %F{green}%r%f [nyae]? ' }