# # Minimal theme # https://github.com/S1cK94/minimal # # Requires the `git-info` zmodule to be included in the .zimrc file. # Global variables function { PROMPT_CHAR='❯' ON_COLOR='%F{green}' OFF_COLOR='%f' ERR_COLOR='%F{red}' } prompt_minimal_user() { print -n '%(!.${ON_COLOR}.${OFF_COLOR})${PROMPT_CHAR}' } prompt_minimal_jobs() { print -n '%(1j.${ON_COLOR}.${OFF_COLOR})${PROMPT_CHAR}' } prompt_minimal_vimode() { local color case ${KEYMAP} in main|viins) color=${ON_COLOR} ;; *) color=${OFF_COLOR} ;; esac print -n "${color}${PROMPT_CHAR}" } prompt_minimal_status() { print -n '%(0?.${ON_COLOR}.${ERR_COLOR})${PROMPT_CHAR}' } prompt_minimal_path() { local path_color='%F{244}' print -n "${path_color}${$(short_pwd)//\//%f\/${path_color}}%f" } prompt_minimal_git() { if [[ -n ${git_info} ]]; then print -n " ${(e)git_info[color]}${(e)git_info[prompt]}" fi } function zle-line-init zle-keymap-select { zle reset-prompt zle -R } prompt_minimal_precmd() { (( ${+functions[git-info]} )) && git-info } prompt_minimal_setup() { zle -N zle-line-init zle -N zle-keymap-select autoload -Uz colors && colors autoload -Uz add-zsh-hook prompt_opts=(cr percent sp subst) add-zsh-hook precmd prompt_minimal_precmd zstyle ':zim:git-info:branch' format '%b' zstyle ':zim:git-info:commit' format '%c' zstyle ':zim:git-info:dirty' format '${ERR_COLOR}' zstyle ':zim:git-info:diverged' format '${ERR_COLOR}' zstyle ':zim:git-info:behind' format '%F{11}' zstyle ':zim:git-info:ahead' format '${OFF_COLOR}' zstyle ':zim:git-info:keys' format \ 'prompt' '%b%c' \ 'color' '$(coalesce "%D" "%V" "%B" "%A" "${ON_COLOR}")' PROMPT="$(prompt_minimal_user)$(prompt_minimal_jobs)\$(prompt_minimal_vimode)$(prompt_minimal_status)%f " RPROMPT='$(prompt_minimal_path)$(prompt_minimal_git)' } prompt_minimal_setup "$@"