123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- # vim:ft=zsh ts=2 sw=2 sts=2 et
- #
- # Faster alternative to the current SVN plugin implementation.
- #
- # Works with svn 1.6, 1.7, 1.8.
- # Use `svn_prompt_info` method to enquire the svn data.
- # It's faster because his efficient use of svn (single svn call) done in the `parse_svn` function
- # Also changed prompt suffix *after* the svn dirty marker
- #
- # *** IMPORTANT *** DO NO USE with the simple svn plugin, this plugin acts as a replacement of it.
- function svn_prompt_info() {
- local info
- info=$(svn info 2>&1) || return 1; # capture stdout and stderr
- local repo_need_upgrade=$(svn_repo_need_upgrade $info)
- if [ -n $repo_need_upgrade ]; then
- printf '%s%s%s%s%s%s%s\n' \
- $ZSH_PROMPT_BASE_COLOR \
- $ZSH_THEME_SVN_PROMPT_PREFIX \
- $ZSH_PROMPT_BASE_COLOR \
- $repo_need_upgrade \
- $ZSH_PROMPT_BASE_COLOR \
- $ZSH_THEME_SVN_PROMPT_SUFFIX \
- $ZSH_PROMPT_BASE_COLOR \
- else
- # something left for you to fix -
- # repo name and rev aren't used here, did you forget them?
- # especially since you set a repo name color
- # if the prompt is alright this way, leave it as is and just
- # delete the comment. The functions itself could stay imo,
- # gives others the chance to use them.
- printf '%s%s%s%s%s%s%s%s%s\n' \
- $ZSH_PROMPT_BASE_COLOR \
- $ZSH_THEME_SVN_PROMPT_PREFIX \
- $ZSH_THEME_REPO_NAME_COLOR \
- $(svn_get_branch_name $info)
- ${svn_branch_name}\
- $ZSH_PROMPT_BASE_COLOR
- $(svn_dirty_choose $info)
- $ZSH_PROMPT_BASE_COLOR
- $ZSH_THEME_SVN_PROMPT_SUFFIX\
- $ZSH_PROMPT_BASE_COLOR
- fi
- }
- function svn_repo_need_upgrade() {
- grep -q "E155036" <<< ${1:-$(svn info 2> /dev/null)} && \
- echo "E155036: upgrade repo with svn upgrade"
- }
- function svn_get_branch_name() {
- echo ${1:-$(svn info 2> /dev/null)} |\
- grep '^URL:' | egrep -o '(tags|branches)/[^/]+|trunk' |\
- egrep -o '[^/]+$'
- }
- function svn_get_repo_name() {
- # I think this can be further cleaned up as well, not sure how,
- # as I can't test it
- local svn_root
- local info=${1:-$(svn info 2> /dev/null)}
- echo $info | sed 's/Repository\ Root:\ .*\///p' | read svn_root
- echo $info | sed "s/URL:\ .*$svn_root\///p"
- }
- function svn_get_revision() {
- # does this work as it should?
- echo ${1:-$(svn info 2> /dev/null)} | sed 's/Revision: //p'
- }
- function svn_dirty_choose() {
- if svn status | grep -E '^\s*[ACDIM!?L]' &> /dev/null; then
- echo $ZSH_THEME_SVN_PROMPT_DIRTY
- else
- echo $ZSH_THEME_SVN_PROMPT_CLEAN
- fi
- }
|