X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=etc%2Fzsh%2Fzshrc;h=05c114a482e1653fa8b04efeac1657f98f84f36e;hb=66d7f9e8dc89e0bbf0631b5ba0e39b4d31378fa7;hp=a4e1931a8374fc66dc3c4243af3d0bc1be908af2;hpb=77db149d44a8b15fcb937caec992410660d6570f;p=grml-etc-core.git diff --git a/etc/zsh/zshrc b/etc/zsh/zshrc index a4e1931..05c114a 100644 --- a/etc/zsh/zshrc +++ b/etc/zsh/zshrc @@ -1052,6 +1052,10 @@ fi # promptformat - Used in most circumstances. # promptactionformat - Used if a there is a special action going on; # (like an interactive rebase or a merge conflict) +# branchformat - Some backends replace %b in the prompt*format +# styles above, not only by a branch name but also +# by a revision number. This style let's you +# modify how that string should look like. # enable - Check in the 'init' context. If set to false, # vcs_info() will do nothing. # disable - Provide a list of systems, you don't want @@ -1069,9 +1073,12 @@ fi # The default values for these in all contexts are: # promptformat " (%s)-[%b|%a]-" # promptactionformat " (%s)-[%b]-" +# branchformat "%b:%r" (for bzr, svn and svk) # enable true +# disable (empty list) +# use-simple false # -# In these formats, the following replacements are done: +# In the prompt*formats, the following replacements are done: # %s - The vcs in use (git, hg, svn etc.) # %b - Information about the current branch. # %a - An identifier, that describes the action. @@ -1080,6 +1087,10 @@ fi # %r - repository name # If %R is '/foo/bar/repoXY', %r is 'repoXY'. # +# In branchformat these replacements are done: +# %b - the branch name +# %r - the current revision number +# # Not all vcs backends may support all replacements # # Examples: @@ -1097,8 +1108,11 @@ fi # the-right-thing[tm] - thanks): # % zstyle ':vcs_info:bzr' use-simple true # -# If you want colors, make sure you enclose the color codes in %{...%}, because -# the string provided by vcs_info() is used for prompts. +# Display the revision number in yellow for bzr and svn: +# % zstyle ':vcs_info:(svn|bzr)' branchformat '%b%{'${fg[yellow]}'%}:%r' +# +# If you want colors, make sure you enclose the color codes in %{...%}, +# because the string provided by vcs_info() is used for prompts. # # Example: PROMPT='%(?..[%?]-)%3~%$(vcs_info)#' # @@ -1268,10 +1282,9 @@ VCS_INFO_svk_get_data () { # {{{ local msg svkbranch svkbase svkbase=${vcs_comm[basedir]} - svkbranch=${svkbase##* - } - svkbase=${svkbase%% - *} + + zstyle -s ":vcs_info:${vcs}" branchformat svkbranch || svkbranch="%b:%r" + zformat -f svkbranch "${svkbranch}" "b:${vcs_comm[branch]}" "r:${vcs_comm[revision]}" msg=$(VCS_INFO_format) zformat -f msg "${msg}" "a:" "b:${svkbranch}" "s:${vcs}" "r:${svkbase:t}" "R:${svkbase}" @@ -1279,14 +1292,19 @@ VCS_INFO_svk_get_data () { # {{{ } # }}} VCS_INFO_svn_get_data () { # {{{ - local msg svnbranch svnbase + setopt localoptions noksharrays + local msg svnbase svnbranch + local -a svninfo svnbase="." while [[ -d "${svnbase}/../.svn" ]]; do svnbase="${svnbase}/.." done svnbase=$(VCS_INFO_realpath ${svnbase}) - svnbranch=$(svn info "$base_dir" | awk '/^URL/ { sub(".*/","",$0); r=$0 } /^Revision/ { sub("[^0-9]*","",$0); print r":"$0 }') + svninfo=($(svn info "${svnbase}" | awk '/^URL/ { sub(".*/","",$0); r=$0 } /^Revision/ { sub("[^0-9]*","",$0); print r"\n"$0 }')) + + zstyle -s ":vcs_info:${vcs}" branchformat svnbranch || svnbranch="%b:%r" + zformat -f svnbranch "${svnbranch}" "b:${svninfo[1]}" "r:${svninfo[2]}" msg=$(VCS_INFO_format) zformat -f msg "${msg}" "a:" "b:${svnbranch}" "s:${vcs}" "r:${svnbase:t}" "R:${svnbase}" @@ -1294,7 +1312,7 @@ VCS_INFO_svn_get_data () { # {{{ } # }}} VCS_INFO_bzr_get_data () { # {{{ - local msg bzrbranch bzrbase bzrrevno i j + local msg bzrbranch bzrbase bzrrevno bzrbr i j if zstyle -t ":vcs_info:${vcs}" "use-simple" ; then bzrbase=${vcs_comm[basedir]} @@ -1317,8 +1335,11 @@ VCS_INFO_bzr_get_data () { # {{{ done fi + zstyle -s ":vcs_info:${vcs}" branchformat bzrbr || bzrbr="%b:%r" + zformat -f bzrbr "${bzrbr}" "b:${bzrbranch}" "r:${bzrrevno}" + msg=$(VCS_INFO_format) - zformat -f msg "${msg}" "a:" "b:${bzrbranch}:${bzrrevno}" "s:${vcs}" "r:${bzrbase:t}" "R:${bzrbase}" + zformat -f msg "${msg}" "a:" "b:${bzrbr}" "s:${vcs}" "r:${bzrbase:t}" "R:${bzrbase}" printf '%s' ${msg} } # }}} @@ -1409,14 +1430,35 @@ VCS_INFO_mtn_detect() { } VCS_INFO_svk_detect() { - local basedir + setopt localoptions noksharrays + local -a info check_com -c svk || return 1 [[ -f ~/.svk/config ]] || return 1 - basedir=$(awk '/: *$/ { sub(/^ */,"",$0); sub(/: *$/,"",$0); if (match("'${PWD}'", $0"(/|$)")) { print $0; d=1; } } /depotpath/ && d == 1 { sub(".*/","",$0); r=$0 } /revision/ && d == 1 { print r ":" $2; exit 1 }' ~/.svk/config) && return 1 - - vcs_comm[basedir]=${basedir} + info=( + $(awk ' + /: *$/ { + sub(/^ */,"",$0); + sub(/: *$/,"",$0); + if (match("'${PWD}'", $0"(/|$)")) { + print $0; d=1; + } + } + /depotpath/ && d == 1 { + sub(".*/","",$0); + r=$0 + } + /revision/ && d == 1 { + print r "\n" $2; + exit 1 + }' ~/.svk/config + ) + ) && return 1 + + vcs_comm[basedir]=${info[1]} + vcs_comm[branch]=${info[2]} + vcs_comm[revision]=${info[3]} return 0 } @@ -1463,6 +1505,7 @@ else # these are the same, just with a lot of colours: zstyle ':vcs_info:*' promptactionformat "${MAGENTA}(${NO_COLOUR}%s${MAGENTA})${YELLOW}-${MAGENTA}[${GREEN}%b${YELLOW}|${RED}%a${MAGENTA}]${NO_COLOUR} " zstyle ':vcs_info:*' promptformat "${MAGENTA}(${NO_COLOUR}%s${MAGENTA})${YELLOW}-${MAGENTA}[${GREEN}%b${MAGENTA}]${NO_COLOUR}%} " + zstyle ':vcs_info:(sv[nk]|bzr)' branchformat "%b${YELLOW}:%r" fi # }}}