1
0
mirror of https://github.com/frebib/dotfiles.git synced 2024-06-14 12:57:23 +00:00

zsh: recolour/restyle git-rprompt

This commit is contained in:
Joe Groocock 2018-10-31 21:48:57 +00:00
parent 944d64a5e6
commit 60b52ffc29
Signed by: frebib
GPG Key ID: E0B16BEACFBB6A86

View File

@ -7,46 +7,49 @@ git_prompt_info() {
git_prompt_status() { git_prompt_status() {
# Get the status of the working tree # Get the status of the working tree
INDEX=$(command git status --porcelain -b 2> /dev/null) INDEX=$(command git status --porcelain -b 2> /dev/null)
RESET='%f'
STATUS="" STATUS=""
if $(echo "$INDEX" | grep -E '^\?\? ' &> /dev/null); then if $(echo "$INDEX" | grep -E '^\?\? ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_UNTRACKED$STATUS" STATUS="$ZSH_THEME_GIT_PROMPT_UNTRACKED$RESET$STATUS"
fi fi
if $(echo "$INDEX" | grep '^A ' &> /dev/null); then if $(echo "$INDEX" | grep '^A ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$STATUS" STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$RESET$STATUS"
elif $(echo "$INDEX" | grep '^M ' &> /dev/null); then elif $(echo "$INDEX" | grep '^M ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$STATUS" STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$RESET$STATUS"
fi fi
if $(echo "$INDEX" | grep '^ M ' &> /dev/null); then if $(echo "$INDEX" | grep '^ M ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$RESET$STATUS"
elif $(echo "$INDEX" | grep '^AM ' &> /dev/null); then elif $(echo "$INDEX" | grep '^AM ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$RESET$STATUS"
elif $(echo "$INDEX" | grep '^ T ' &> /dev/null); then elif $(echo "$INDEX" | grep '^ T ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$RESET$STATUS"
fi fi
if $(echo "$INDEX" | grep '^R ' &> /dev/null); then if $(echo "$INDEX" | grep '^R ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_RENAMED$STATUS" STATUS="$ZSH_THEME_GIT_PROMPT_RENAMED$RESET$STATUS"
fi fi
if $(echo "$INDEX" | grep '^ D ' &> /dev/null); then if $(echo "$INDEX" | grep '^ D ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS" STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$RESET$STATUS"
elif $(echo "$INDEX" | grep '^D ' &> /dev/null); then elif $(echo "$INDEX" | grep '^D ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS" STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$RESET$STATUS"
elif $(echo "$INDEX" | grep '^AD ' &> /dev/null); then elif $(echo "$INDEX" | grep '^AD ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS" STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$RESET$STATUS"
fi fi
if $(command git rev-parse --verify refs/stash >/dev/null 2>&1); then if $(command git rev-parse --verify refs/stash >/dev/null 2>&1); then
STATUS="$ZSH_THEME_GIT_PROMPT_STASHED$STATUS" STATUS="$ZSH_THEME_GIT_PROMPT_STASHED$RESET$STATUS"
fi fi
if $(echo "$INDEX" | grep '^UU ' &> /dev/null); then if $(echo "$INDEX" | grep '^UU ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_UNMERGED$STATUS" STATUS="$ZSH_THEME_GIT_PROMPT_UNMERGED$RESET$STATUS"
fi fi
if $(echo "$INDEX" | grep '^## .*ahead' &> /dev/null); then if $(echo "$INDEX" | grep '^## .*ahead' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_AHEAD$STATUS" AHEAD=$(echo "$INDEX" | sed -nE 's/.*ahead\s([0-9]*).*/\1/p')
STATUS="$ZSH_THEME_GIT_PROMPT_AHEAD$AHEAD$RESET$STATUS"
fi fi
if $(echo "$INDEX" | grep '^## .*behind' &> /dev/null); then if $(echo "$INDEX" | grep '^## .*behind' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_BEHIND$STATUS" BEHIND=$(echo "$INDEX" | sed -nE 's/.*behind\s([0-9]*).*/\1/p')
STATUS="$ZSH_THEME_GIT_PROMPT_BEHIND$BEHIND$RESET$STATUS"
fi fi
if $(echo "$INDEX" | grep '^## .*diverged' &> /dev/null); then if $(echo "$INDEX" | grep '^## .*diverged' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_DIVERGED$STATUS" STATUS="$ZSH_THEME_GIT_PROMPT_DIVERGED$RESET$STATUS"
fi fi
echo $STATUS echo $STATUS
} }
@ -54,16 +57,18 @@ git_prompt_status() {
# Required for dynamic prompt # Required for dynamic prompt
setopt prompt_subst setopt prompt_subst
RPROMPT="$RPROMPT"'$(git_prompt_info)$(git_prompt_status)%{$reset_color%}'
ZSH_THEME_GIT_PROMPT_PREFIX=" " ZSH_THEME_GIT_PROMPT_PREFIX=" "
ZSH_THEME_GIT_PROMPT_SUFFIX="" ZSH_THEME_GIT_PROMPT_SUFFIX=""
ZSH_THEME_GIT_PROMPT_DIRTY="" ZSH_THEME_GIT_PROMPT_DIRTY=""
ZSH_THEME_GIT_PROMPT_CLEAN="" ZSH_THEME_GIT_PROMPT_CLEAN=""
ZSH_THEME_GIT_PROMPT_AHEAD="%F{green}↑"
ZSH_THEME_GIT_PROMPT_BEHIND="%F{red}↓"
ZSH_THEME_GIT_PROMPT_ADDED="%{$fg_bold[green]%}+" ZSH_THEME_GIT_PROMPT_ADDED="%F{green}+"
ZSH_THEME_GIT_PROMPT_MODIFIED="%{$fg_bold[blue]%}!" ZSH_THEME_GIT_PROMPT_MODIFIED="%F{blue}~"
ZSH_THEME_GIT_PROMPT_DELETED="%{$fg_bold[red]%}-" ZSH_THEME_GIT_PROMPT_DELETED="%F{red}-"
ZSH_THEME_GIT_PROMPT_RENAMED="%{$fg_bold[magenta]%}>" ZSH_THEME_GIT_PROMPT_RENAMED="%F{magenta}>"
ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg_bold[yellow]%}#" ZSH_THEME_GIT_PROMPT_UNMERGED="%F{yellow}#"
ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg_bold[cyan]%}?" ZSH_THEME_GIT_PROMPT_UNTRACKED="%F{cyan}?"
RPROMPT="\$(git_prompt_info)\$(git_prompt_status)%{\$reset_color%}$RPROMPT"