X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=zsh%2Frc;h=80178e0cdc57194f6c66d6db910b97055ec68e04;hb=acfeea45e718eeecec36fea55f0ea8037ee6aef5;hp=e29219af05bfa5d838054800abf923e1b9634b44;hpb=31833e1b31ba6a81947aca55f17581f107ee1e9f;p=config%2Fdotfiles.git diff --git a/zsh/rc b/zsh/rc index e29219a..80178e0 100644 --- a/zsh/rc +++ b/zsh/rc @@ -165,9 +165,6 @@ if [[ $ZSH_VERSION == (4.3.<9->|4.<4->*|<5->*) || $fpath) fi - # Allow substitutions and expansions in the prompt, necessary for - # vcs_info. - setopt promptsubst # Load vcs_info to display information about version control repositories. autoload -Uz vcs_info # Only look for git and mercurial repositories; the only I use. @@ -241,21 +238,10 @@ if [[ $ZSH_VERSION == (4.3.<9->|4.<4->*|<5->*) || } add-zsh-hook chpwd prompt_chpwd - # Call vcs_info as precmd before every prompt. - prompt_precmd() { - vcs_info - } - add-zsh-hook precmd prompt_precmd - - # Display the VCS information in the right prompt. - if [[ $ZSH_VERSION == (4.3.<9->|4.<4->*|<5->*) ]]; then - RPROMPT='${vcs_info_msg_0_}' - # There is a bug in Zsh below 4.3.9 which displays a wrong symbol when - # ${vcs_info_msg_0_} is empty. Provide a workaround for those versions, - # thanks to Frank Terbeck for it. - else - RPROMPT='${vcs_info_msg_0_:- }' - fi + # Used by prompt code below to determine if vcs_info should be run. + RUN_VCS_INFO=1 +else + RUN_VCS_INFO= fi # Set the default prompt. The current host and working directory is displayed, @@ -264,11 +250,28 @@ fi # # The prompt is in green and blue to make easily detectable, the error exit # code in red and bold and the job count in yellow. -PROMPT="$green%B%m%b$default:$blue%B%~%b$default \ +prompt_precmd() { + # Call vcs_info before every prompt. + if [[ -n $RUN_VCS_INFO ]]; then + vcs_info + + # Display the VCS information in the right prompt. + if [[ $ZSH_VERSION == (4.3.<9->|4.<4->*|<5->*) ]]; then + RPROMPT="${vcs_info_msg_0_}" + # There is a bug in Zsh below 4.3.9 which displays a wrong symbol when + # ${vcs_info_msg_0_} is empty. Provide a workaround for those + # versions, thanks to Frank Terbeck for it. + else + RPROMPT="${vcs_info_msg_0_:- }" + fi + fi + + PROMPT="$green%B%m%b$default:$blue%B%~%b$default \ %(1j.$yellow%j$default.)%# \ %(?..($red%B%?%b$default%) )" +} +add-zsh-hook precmd prompt_precmd -unset red blue green yellow default # When screen, xterm or rxvt is used set the name of the window to the # currently running program.