X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=zsh%2Frc;h=643d7ae8a0d30227738afa49fc54f87b90693d44;hb=e531d6fcc133cfa82c0849a1845e7cbeaeff5600;hp=94d7fe37208874c0b79a2cafb23414ce24f41568;hpb=81fe12757189bc144a22271f5bc669dd98ea2c37;p=config%2Fdotfiles.git diff --git a/zsh/rc b/zsh/rc index 94d7fe3..643d7ae 100644 --- a/zsh/rc +++ b/zsh/rc @@ -212,6 +212,45 @@ if [[ $ZSH_VERSION == (4.3.<9->|4.<4->*|<5->*) || zstyle ':vcs_info:*' unstagedstr '¹' zstyle ':vcs_info:*' stagedstr '²' + # Default to running vcs_info. If possible we prevent running it later for + # speed reasons. If set to a non empty value vcs_info is run. + FORCE_RUN_VCS_INFO=1 + + # Cache system inspired by Bart Trojanowski + # (http://jukie.net/~bart/blog/pimping-out-zsh-prompt). + #zstyle ':vcs_info:*+pre-get-data:*' hooks pre-get-data + +vi-pre-get-data() { + # Only Git and Mercurial support and need caching. Abort if any other + # VCS is used. + [[ "$vcs" != git && "$vcs" != hg ]] && return + + # If the shell just started up or we changed directories (or for other + # custom reasons) we must run vcs_info. + if [[ -n $FORCE_RUN_VCS_INFO ]]; then + FORCE_RUN_VCS_INFO= + return + fi + + # Don't run vcs_info by default to speed up the shell. + ret=1 + # If a git/hg command was run then run vcs_info as the status might + # need to be updated. + case "$(fc -ln $(($HISTCMD-1)))" in + git* | g\ *) + ret=0 + ;; + hg*) + ret=0 + ;; + esac + } + + # Must run vcs_info when changing directories. + prompt_chpwd() { + FORCE_RUN_VCS_INFO=1 + } + add-zsh-hook chpwd prompt_chpwd + # Call vcs_info as precmd before every prompt. prompt_precmd() { vcs_info @@ -539,6 +578,10 @@ source_config ~/.zsh host rc ${$(hostname)//.*/} if [[ $TERM != dumb && -z $STY ]]; then # Get running detached sessions. session=$(screen -list | grep 'Detached' | awk '{ print $1; exit }') + + # As we exec later we have to set the title here. + window_preexec "screen" + # Create a new session if none is running. if [[ -z $session ]]; then exec screen