view .shell.d/99.prompt.zsh @ 77:45d7441d0cf2

Modularize .emacs
author Augie Fackler <durin42@gmail.com>
date Thu, 09 Apr 2009 13:39:20 -0500
parents 62bfb554ab85
children da329720ff18
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

if [ "$TERM" = "rxvt" ] || [ "$TERM" = "xterm" ] \
  || [ "$TERM" = "xterm-color" ] || [ "$TERM" = "screen" ]; then
	export FANCYTYPE="YES"
else
	export FANCYTYPE="NO"
	prompt='[%m:%3~] %n%# '
	RPS1=$'[%W %t]'
fi

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