# git part(s) of the prompt __git_prompt() { PR_GITBRANCH= local g=$(git rev-parse --git-dir 2>/dev/null) local cy="%{%}" local cc="%{%}" local cR="%{%}" if [[ -n $g ]]; then local r local b=HEAD if [[ -d "$g/../.dotest" ]]; then r="${cy}rebase/am " elif [[ -d "$g/../.dotest-merge" ]]; then b="$(cat $g/.dotest-merge/head-name)" if [ -f "$g/../.dotest-merge/interactive" ]; then r="${cy}rebase-i " else r="${cy}rebase-m " fi elif [[ -f "$g/MERGE_HEAD" ]]; then r="${cy}merge " else if [[ -f $g/BISECT_LOG ]]; then r="${cy}bisect " fi fi b=$(git name-rev --name-only $b 2>/dev/null) PR_GITBRANCH="%{%}::$r$cc%20>..>$b%>>$cR" fi } # this updates the ACPI status precmd() { local e=$'\e' local g=$'\007' PR_TITLEBAR="%(!.[ROOT] .)%n@%m:%~ | ${COLUMNS}x${LINES}" __git_prompt case $TERM in screen) PR_TITLEBAR="%{${e}_$PR_TITLEBAR$e\\${e}ksh$e\\%}" ;; xterm*|rxvt|eterm|screen*) PR_TITLEBAR="%{$e]0;$PR_TITLEBAR$g%}" ;; *) PR_TITLEBAR= esac } # mess with the window title in screen preexec() { if [[ "$TERM" == "screen" ]] { local CMD=${1[(wr)^(*=*|sudo|-*)]} echo -n "\ek${CMD##*/}\e\\" } } # guess what. setprompt() { autoload colors zsh/terminfo if [[ "$terminfo[colors]" -ge 8 ]]; then colors fi for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE; do eval local PR_$color='%{$terminfo[bold]$fg[${(L)color}]%}' eval local PR_LIGHT_$color='%{$fg[${(L)color}]%}' (( count = $count + 1 )) done local PR_NO_COLOUR="%{$terminfo[sgr0]%}" local PR_BOLD="%{$terminfo[bold]%}" local PR_ESC=$'\e' PROMPT="%(!.$PR_LIGHT_RED.$PR_LIGHT_GREEN)%n@$PR_BOLD%m $PR_BLUE%(?..%?)%#$PR_NO_COLOUR \$PR_TITLEBAR" RPROMPT="$PR_LIGHT_BLUE| $PR_BOLD%D{%m%d_%H%M.%S}$PR_LIGHT_BLUE | $PR_BOLD%~\$PR_GITBRANCH$PR_NO_COLOUR" PS2="$PR_GREEN%_$PR_BLUE> $PR_NO_COLOUR" } setprompt