diff --git a/shell/zsh/custom/powerline-arrow.zsh-theme b/shell/zsh/custom/powerline-arrow.zsh-theme new file mode 100644 index 0000000..cb0ecd1 --- /dev/null +++ b/shell/zsh/custom/powerline-arrow.zsh-theme @@ -0,0 +1,50 @@ +# A script to make using 256 colors in zsh less painful. +# P.C. Shyamshankar +# https://github.com/sykora/etc/blob/master/zsh/functions/spectrum/ + +typeset -Ag FX FG BG + +FX=( + reset "" + bold "" no-bold "" + italic "" no-italic "" + underline "" no-underline "" + blink "" no-blink "" + reverse "" no-reverse "" +) + +for color in {000..255}; do + FG[$color]="[38;5;${color}m" + BG[$color]="[48;5;${color}m" +done + + +# +# Powerline-Arrow theme +# + +PROMPT='%n@%m %{$FG[000]%}%{$BG[235]%}⮀%{$reset_color%}%{$BG[235]%} %~ $(check_git_prompt_info)%{$reset_color%} $ ' + +local return_code="%(?..%{$fg[cyan]%}%? ↵%{$reset_color%})" +RPROMPT="${return_code}" + +ZSH_THEME_GIT_PROMPT_PREFIX="%{$FG[236]%}%{$BG[237]%}⮀ %{$FG[014]%}" +ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}%{$FG[238]%}⮀%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_DIRTY="%{$FG[001]%}*%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_CLEAN=" " + + +# Git sometimes goes into a detached head state. git_prompt_info doesn't +# return anything in this case. So wrap it in another function and check +# for an empty string. -- Brorrowed from Soliah.zsh-theme :) +function check_git_prompt_info() { + if git rev-parse --git-dir > /dev/null 2>&1; then + if [[ -z $(git_prompt_info) ]]; then + echo "%{$fg[cyan]%}(detached%{$fg[magenta]%}*%{$fg[cyan]%})%{$reset_color%}" + else + echo "$(git_prompt_info)" + fi + else + echo "%{$reset_color%}%{$FG[236]%}⮀" + fi +}