# -*-mode: sh-*- # My mess of various themes setopt PROMPT_SUBST #allows prompt substitutions if [[ $(locale charmap) != UTF-8 || "$TERM" == linux ]] then ERROR_CHAR='' GIT_DIRTY_CHAR='+-' PREFIX='$' LCOLOR="" else ERROR_CHAR='⏎' GIT_DIRTY_CHAR="±" PREFIX="❱" # U+2771 LCOLOR="$fg_bold[black]" fi prompt_context() { if [ -n "$SSH_CLIENT" ] then host=%B%F{blue}%m%f%b else host=%B%F{green}%m%f%b fi print "%B%(!.%F{red}.%F{green})%n@${host}" } rprompt_git() { ref=${vcs_info_msg_0_} if [[ -n ${ref} ]]; then if test -n "$(git status --porcelain --ignore-submodules)"; then print '%F{yellow}'$GIT_DIRTY_CHAR'%f' fi fi } # Git: branch/detached head, dirty status prompt_git() { local color ref is_dirty() { test -n "$(git status --porcelain --ignore-submodules)" } ref=${vcs_info_msg_0_} if [[ -n ${ref} ]]; then if is_dirty; then color=yellow else color=green fi print -n " %F{${color}}${ref}" fi } prompt_prefix() { print "%(!. %B%F{red}#%f%b.)%B%F{cyan}${PREFIX}%f%b " } function prompt_fred_precmd { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS (( PWDWIDTH = ($COLUMNS-20) * 1/4 )) vcs_info #Terminal Title print -Pn "\e]0;%~:zsh\a" } function prompt_fred_preexec { #Terminal Title print -Pn '\e]0;%~:${1}\a' } function prompt_fred_setup { setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS prompt_opts=(cr percent subst) # Load required functions. autoload -Uz add-zsh-hook autoload -Uz vcs_info zstyle ':vcs_info:*' enable git zstyle ':vcs_info:*' check-for-changes false zstyle ':vcs_info:git*' formats "%b%f" zstyle ':vcs_info:git*' actionformats "%b%f:%F{yellow}%B%a" # Add hook for calling precmd before each command. add-zsh-hook precmd prompt_fred_precmd add-zsh-hook preexec prompt_fred_preexec # Define prompts. PROMPT='$(prompt_context)%F{cyan} %${PWDWIDTH}<..<%~%f$(prompt_git)$(prompt_prefix)' RPROMPT='${editor_info[overwrite]}%(?:: %F{red}%?'$ERROR_CHAR'%f) $(rprompt_git)' SPROMPT='zsh: correct %F{red}%R%f to %F{green}%r%f [nyae]? ' } prompt_fred_setup "$@"