zshのプロンプトにgit stash listの数を表示する

git stashしたあとにgit stash popし忘れたりすると、なんだかいろいろ面倒なことになりかねないので、いつも使ってるzshのプロンプトにgit stash listの数を表示してみることにしました。以下はその設定。あまりたいしたことやってないですが、これでpopし忘れが減るといいな。

autoload -Uz vcs_info
zstyle ':vcs_info:*' formats '(%s)-[%b]'
zstyle ':vcs_info:*' actionformats '(%s)-[%b|%a]'
precmd () {
    psvar=()

    # for vcs_info
    LANG=en_US.UTF-8 vcs_info
    [[ -n "$vcs_info_msg_0_" ]] && psvar[1]="$vcs_info_msg_0_"

    # for rvm
    [[ -e $HOME/.rvm/bin/rvm-prompt ]] && psvar[2]=$($HOME/.rvm/bin/rvm-prompt)

    # for git stash
    [[ -e $PWD/.git/refs/stash ]] && psvar[3]=" ($(git stash list 2>/dev/null | wc -l) stashed)"
}
VCS_PROMPT="%1(v|%F{green} %1v%3v%f|)"
RUBY_PROMPT="%2(v| %U%B%F{magenta}(%2v)%f%b%u|)"
PROMPT=$'%{\e[32m%}$LOGNAME@${WINDOW:+"[$WINDOW]"}%B:%b%{\e[m%}[%~]$RUBY_PROMPT$VCS_PROMPT\n%% '
 
comments powered by Disqus