view .shell.d/99.prompt.zsh @ 378:20e47bc8eea9

hgrc: disable hg-git and hgsubversion It hasn't been common for me to use either of these extensions for some time, so just drop both of them from the main hgrc. Instead I'll enable them as-needed in individual repositories.
author Augie Fackler <durin42@gmail.com>
date Thu, 09 Jun 2011 20:20:04 -0500
parents 02b635053e8f
children 0ceb8554801e
line wrap: on
line source

# Magic prompt with colors
# username in blue if not root
# username in red if root - time in pink w/
# DANGER replacing the date
# failed jobs print exit status in the RPS1 with yellow text
setopt prompt_subst

preexec () {
        currJob="`echo $3 | cut -d ' ' -f 1 | head -n 1`"
        if [[ "$TERM" == "screen" ]]; then
                hostUser="%10<...<%~%<<"
                print -Pn "\ek[$hostUser $currJob]\e\\"
        else
                if [[ "$FANCYTYPE" == "YES" ]]; then
                        hostUser="%n@%m: %2~"
                        print -Pn "\e]0;$hostUser [$currJob]\a"
                fi
        fi
}

function right_side_prompt() {
    branch=`vcs_current_branch`
    if [ $? = 0 ] ; then
        echo -n $branch
    else
        date '+%D %H:%M'
    fi
}

function precmd () {
    rps_branch=`right_side_prompt`
}

if [ "x`whoami`" = "xroot" ] ; then
        PS1=$'%{\e];%n@%m: %2~ [zsh]\a%}[%m:%3~] %{\e[31m%}%n%{\e[0m%}%# '
        if [[ "$TERM" == "screen" ]] ; then
                PS1=$'%{\ek[%2~ zsh]\e\\%}[%m:%3~] %{\e[31m%}%n%{\e[0m%}%# '
        fi
        RPS1=$'%{\e[1;35m%}[DANGER %t]%{\e[0m%}%(?..%{\e[1;33m%} %?%{\e[1;0m%})'
else
        PS1=$'%{\e];%n@%m: %2~ [zsh]\a%}[%m:%3~] %{\e[34m%}%n%{\e[0m%}%# '
        if [[ "$TERM" == "screen" ]]; then
                PS1=$'%{\ek[%2~ zsh]\e\\%}[%m:%3~] %{\e[34m%}%n%{\e[0m%}%# '
        fi
    RPS1=$'[$rps_branch]%(?..%{\e[1;33m%} %?%{\e[0m%})'
fi


export FANCYTYPE="NO"

for ok in rxvt rxvt-unicode xterm xterm-256color xterm-color screen ; do
    if [ "$TERM" = "$ok" ] ; then
        export FANCYTYPE="YES"
    fi
done

if [ $FANCYTYPE = "NO" ] ; then
    prompt='[%m:%3~] %n%# '
    RPS1=$'[%W %t]'
fi

if [[ $TERM == "dumb" ]]; then  # in emacs
    # for tramp to not hang, need the following. cf:
    # http://www.emacswiki.org/emacs/TrampMode
    unsetopt zle
    unsetopt prompt_cr
    unsetopt prompt_subst
    unfunction precmd
    unfunction preexec
fi


#nonfancy no-frills prompt - disabled (same as the "non-fancy" one above)
#prompt='[%m:%3~] %n%# '
#RPS1=$'[%W %t]'