commit 5d8bd4c0732db697666f5fbb44e3ad4c6362907b parent a872b6b4020dc3b973ba6a2b0631901f90283e41 Author: dudley <root@pyratebeard.net> Date: Fri, 14 Jul 2017 20:33:24 +0100 new single line prompt with git info Diffstat:
A | zsh/.zsh/single-line-git-prompt.zsh | | | 105 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1 file changed, 105 insertions(+), 0 deletions(-)
diff --git a/zsh/.zsh/single-line-git-prompt.zsh b/zsh/.zsh/single-line-git-prompt.zsh @@ -0,0 +1,105 @@ +#ICO_DIRTY="⚡" +#ICO_DIRTY="↯" +ICO_DIRTY="*" +#ICO_AHEAD="↑" +ICO_AHEAD="🠙" +#ICO_AHEAD="▲" +#ICO_BEHIND="↓" +ICO_BEHIND="🠛" +#ICO_BEHIND="▼" +ICO_DIVERGED="⥮" +COLOR_ROOT="%F{red}" +COLOR_USER="%F{cyan}" +COLOR_NORMAL="%F{white}" +PROMPT_STYLE="classic" + + +#█▓▒░ allow functions in the prompt +setopt PROMPT_SUBST +autoload -Uz colors && colors + +#█▓▒░ colors for permissions +if [[ "$EUID" -ne "0" ]] +then # if user is not root + USER_LEVEL="${COLOR_USER}" +else # root! + USER_LEVEL="${COLOR_ROOT}" +fi + +#█▓▒░ git prompt +GIT_PROMPT() { + test=$(git rev-parse --is-inside-work-tree 2> /dev/null) + if [ ! "$test" ] + then + case "$PROMPT_STYLE" in + ascii) + echo "$reset_color%F{cyan}▒░" + ;; + arrows) + echo "$reset_color%F{cyan}" + ;; + esac + return + fi + ref=$(git name-rev --name-only HEAD | sed 's!remotes/!!' 2> /dev/null) + dirty="" && [[ $(git diff --shortstat 2> /dev/null | tail -n1) != "" ]] && dirty=$ICO_DIRTY + stat=$(git status | sed -n 2p) + case "$stat" in + *ahead*) + stat=$ICO_AHEAD + ;; + *behind*) + stat=$ICO_BEHIND + ;; + *diverged*) + stat=$ICO_DIVERGED + ;; + *) + stat="" + ;; + esac + case "$PROMPT_STYLE" in + ninja) + echo "${COLOR_NORMAL}${ref}${dirty}${stat}" + ;; + ascii) + echo "%{$bg[magenta]%}%F{cyan}▓▒░ %F{black}${ref}${dirty}${stat} $reset_color%F{magenta}▒░" + ;; + arrows) + echo "%{$bg[magenta]%}%F{cyan} %F{black}${ref}${dirty}${stat} $reset_color%F{magenta}" + ;; + *) + echo "${USER_LEVEL}─[${COLOR_NORMAL}"${ref}${dirty}${stat}"${USER_LEVEL}]" + ;; + esac +} +case "$PROMPT_STYLE" in +#█▓▒░ ascii +ascii) +PROMPT='%{$bg[cyan]%} %F{black}%~ $(GIT_PROMPT)$reset_color +%f' +;; +#█▓▒░ arrows +arrows) +PROMPT='%{$bg[cyan]%}%F{black} %~ $(GIT_PROMPT)$reset_color +%f' +;; +#█▓▒░ ninja +ninja) +PROMPT='%F{white} + ▟▙ ${USER_LEVEL}%~ %F{white}$(GIT_PROMPT) %F{white} +▟▒${USER_LEVEL}░░░░░░░%F{white}▜▙▜████████████████████████████████▛ +▜▒${USER_LEVEL}░░░░░░░%F{white}▟▛▟▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▛ + ▜▛ + %f' +;; +#█▓▒░ dual line +dual) +PROMPT='${USER_LEVEL}┌[${COLOR_NORMAL}%~${USER_LEVEL}]$(GIT_PROMPT) +${USER_LEVEL}└─ - %f' +;; +#█▓▒░ classic +*) +PROMPT='${USER_LEVEL}[${COLOR_NORMAL}%~${USER_LEVEL}]$(GIT_PROMPT)── - %f' +;; +esac