From 938079fbcfc7f6b818911c714fcc84b3ce68666e Mon Sep 17 00:00:00 2001 From: Frank Terbeck Date: Sun, 31 Aug 2008 16:08:15 +0200 Subject: [PATCH] zshrc: Fix in svn backend of vcs_info(), doc updates ...and a new style to configure the %b replacement in formats for svn and bzr. --- debian/changelog | 4 +++- etc/zsh/zshrc | 37 ++++++++++++++++++++++++++++++------- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/debian/changelog b/debian/changelog index f0fcba0..b0f8311 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,8 +3,10 @@ grml-etc-core (0.3.54) unstable; urgency=low * zshrc: Adding support for cvs repositories to vcs_info() * zshrc: Add an experimental bzr backend, that works without calling bzr itself; it is disabled by default. + * zshrc: Fix in svn backend of vcs_info(), doc updates and a new + style to configure the %b replacement in formats for svn and bzr - -- Frank Terbeck Sun, 31 Aug 2008 13:02:18 +0200 + -- Frank Terbeck Sun, 31 Aug 2008 16:04:47 +0200 grml-etc-core (0.3.53) unstable; urgency=low diff --git a/etc/zsh/zshrc b/etc/zsh/zshrc index a4e1931..bc2616f 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 and svn) # 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)#' # @@ -1279,14 +1293,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 +1313,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 +1336,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} } # }}} @@ -1463,6 +1485,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:(svn|bzr)' branchformat "%b${YELLOW]}:%r" fi # }}} -- 2.1.4