-
- VCS_INFO_adjust
- gitaction="$(VCS_INFO_git_getaction ${gitdir})"
- msg=$(VCS_INFO_format ${gitaction})
-
- gitbase=${PWD%/${$(git rev-parse --show-prefix)%/##}}
-
- zformat -f msg "${msg}" "a:${gitaction}" "b:${gitbranch}" "s:${vcs}" "r:${gitbase:t}" "R:${gitbase}"
- printf '%s' ${msg}
-}
-# }}}
-VCS_INFO_darcs_get_data () { # {{{
- local msg darcsbase
-
- darcsbase=${vcs_comm[basedir]}
- msg=$(VCS_INFO_format)
- zformat -f msg "${msg}" "a:" "b:${darcsbase:t}" "s:${vcs}" "r:${darcsbase:t}" "R:${darcsbase}"
- printf '%s' ${msg}
-}
-# }}}
-VCS_INFO_hg_get_data () { # {{{
- local msg hgbranch hgbase
-
- hgbase=${vcs_comm[basedir]}
- hgbranch=$(< ${hgbase}/.hg/branch)
- msg=$(VCS_INFO_format)
- zformat -f msg "${msg}" "a:" "b:${hgbranch}" "s:${vcs}" "r:${hgbase:t}" "R:${hgbase}"
- printf '%s' ${msg}
-}
-# }}}
-VCS_INFO_mtn_get_data () { # {{{
- local msg mtnbranch mtnbase
-
- mtnbase=${vcs_comm[basedir]}
- mtnbranch=$(mtn status | awk '/Current branch:/{ sub("Current branch: ", ""); print }')
- msg=$(VCS_INFO_format)
- zformat -f msg "${msg}" "a:" "b:${mtnbranch}" "s:${vcs}" "r:${mtnbase:t}" "R:${mtnbase}"
- printf '%s' ${msg}
-}
-# }}}
-VCS_INFO_svk_get_data () { # {{{
- local msg svkbranch svkbase
-
- svkbase=${vcs_comm[basedir]}
- svkbranch=${svkbase##*
- }
- svkbase=${svkbase%%
- *}
-
- msg=$(VCS_INFO_format)
- zformat -f msg "${msg}" "a:" "b:${svkbranch}" "s:${vcs}" "r:${svkbase:t}" "R:${svkbase}"
- printf '%s' ${msg}
-}
-# }}}
-VCS_INFO_svn_get_data () { # {{{
- local msg svnbranch svnbase
-
- 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 }')
-
- msg=$(VCS_INFO_format)
- zformat -f msg "${msg}" "a:" "b:${svnbranch}" "s:${vcs}" "r:${svnbase:t}" "R:${svnbase}"
- printf '%s' ${msg}
-}
-# }}}
-VCS_INFO_bzr_get_data () { # {{{
- local msg bzrbranch bzrbase bzrrevno i j
-
- if zstyle -t ":vcs_info:${vcs}" "use-simple" ; then
- bzrbase=${vcs_comm[basedir]}
- bzrbranch=${bzrbase:t}
- if [[ -f ${bzrbase}/.bzr/branch/last-revision ]] ; then
- bzrrevno=$(< ${bzrbase}/.bzr/branch/last-revision)
- bzrrevno=${bzrrevno%% *}
- fi
- else
- bzrbase=$(bzr info 2>/dev/null | sed -rne 's, *branch root: ,,p')
- bzrbase=$(VCS_INFO_realpath ${bzrbase})
-
- bzr version-info 2> /dev/null | while read i j; do
- case "${i}" in
- revno:)
- bzrrevno=${j} ;;
- branch-nick:)
- bzrbranch=${j} ;;
- esac
- done
- fi
-
- msg=$(VCS_INFO_format)
- zformat -f msg "${msg}" "a:" "b:${bzrbranch}:${bzrrevno}" "s:${vcs}" "r:${bzrbase:t}" "R:${bzrbase}"
- printf '%s' ${msg}
-}
-# }}}
-VCS_INFO_cvs_get_data () { # {{{
- local msg cvsbranch cvsbase basename
-
- cvsbase="."
- while [[ -d "${cvsbase}/../CVS" ]]; do
- cvsbase="${cvsbase}/.."
- done
- cvsbase=$(VCS_INFO_realpath ${cvsbase})
- cvsbranch=$(< ./CVS/Repository)
- basename=${cvsbase:t}
- cvsbranch=${cvsbranch##${basename}/}
- [[ -z ${cvsbranch} ]] && cvsbranch=${basename}
-
- msg=$(VCS_INFO_format)
- zformat -f msg "${msg}" "a:" "b:${cvsbranch}" "s:${vcs}" "r:${basename}" "R:${cvsbase}"
- printf '%s' ${msg}
-}
-# }}}
-# VCS_INFO_*_detect () {{{
-
-VCS_INFO_detect_by_dir() {
- local dirname=${1}
- local basedir="." realbasedir
-
- realbasedir=$(VCS_INFO_realpath ${basedir})
- while [[ ${realbasedir} != '/' ]]; do
- if [[ -n ${vcs_comm[detect_need_file]} ]] ; then
- [[ -d ${basedir}/${dirname} ]] && \
- [[ -f ${basedir}/${dirname}/${vcs_comm[detect_need_file]} ]] && \
- break
- else
- [[ -d ${basedir}/${dirname} ]] && break
- fi
-
- basedir=${basedir}/..
- realbasedir=$(VCS_INFO_realpath ${basedir})
- done
-
- [[ ${realbasedir} == "/" ]] && return 1
- vcs_comm[basedir]=${realbasedir}
- return 0
-}
-
-VCS_INFO_bzr_detect() {
- check_com -c bzr || return 1
- vcs_comm[detect_need_file]=branch/format
- VCS_INFO_detect_by_dir '.bzr'
- return $?
-}
-
-VCS_INFO_cvs_detect() {
- check_com -c svn || return 1
- [[ -d "CVS" ]] && return 0
- return 1
-}
-
-VCS_INFO_darcs_detect() {
- check_com -c darcs || return 1
- vcs_comm[detect_need_file]=format
- VCS_INFO_detect_by_dir '_darcs'
- return $?
-}
-
-VCS_INFO_git_detect() {
- if check_com -c git && git rev-parse --is-inside-work-tree &> /dev/null ; then
- vcs_comm[gitdir]="$(git rev-parse --git-dir 2> /dev/null)" || return 1
- [[ -d ${vcs_comm[gitdir]}/svn ]] && vcs_comm[overwrite_name]='git-svn'
- return 0
- fi
- return 1
-}
-
-VCS_INFO_hg_detect() {
- check_com -c hg || return 1
- vcs_comm[detect_need_file]=branch
- VCS_INFO_detect_by_dir '.hg'
- return $?
-}
-
-VCS_INFO_mtn_detect() {
- check_com -c mtn || return 1
- vcs_comm[detect_need_file]=revision
- VCS_INFO_detect_by_dir '_MTN'
- return $?
-}
-
-VCS_INFO_svk_detect() {
- local basedir
-
- 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}
- return 0
-}
-
-VCS_INFO_svn_detect() {
- check_com -c svn || return 1
- [[ -d ".svn" ]] && return 0
- return 1
-}
-
-# }}}
-vcs_info () { # {{{
- local string
- local -i found
- local -a VCSs disabled
- local -x vcs
- local -Ax vcs_comm
-
- vcs="init"
- zstyle -T ":vcs_info:${vcs}" "enable" || return 0
- zstyle -a ":vcs_info:${vcs}" "disable" disabled
-
- VCSs=(git hg bzr darcs mtn svn cvs svk)
-
- (( found = 0 ))
- for vcs in ${VCSs} ; do
- [[ -n ${(M)disabled:#${vcs}} ]] && continue
- vcs_comm=()
- VCS_INFO_${vcs}_detect && (( found = 1 )) && break
- done
-
- (( found == 0 )) && return 0
-
- string=$(VCS_INFO_${vcs}_get_data) || return 1
- printf '%s' ${string}
- return 0
-}
-# }}}
-
-# change vcs_info formats for the grml prompt
-if [[ "$TERM" == dumb ]] ; then
- zstyle ':vcs_info:*' promptactionformat "(%s%)-[%b|%a] "
- zstyle ':vcs_info:*' promptformat "(%s%)-[%b] "
-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}%} "
-fi
-
-# }}}
-
-# {{{ set prompt
-if zrcautoload promptinit && promptinit 2>/dev/null ; then
- promptinit # people should be able to use their favourite prompt
-else
- print 'Notice: no promptinit available :('
-fi
-
-setopt prompt_subst
-
-# precmd() => a function which is executed just before each prompt
-# use 'NOPRECMD=1' to disable the precmd + preexec commands
-
-# precmd () { setopt promptsubst; [[ -o interactive ]] && jobs -l;
-
-# make sure to use right prompt only when not running a command
-is41 && setopt transient_rprompt
-
-is4 && [[ -z $NOPRECMD ]] && precmd () {
- [[ -n $NOPRECMD ]] && return 0
- # allow manual overwriting of RPROMPT
- if [[ -n $RPROMPT ]] ; then
- [[ $TERM == screen* ]] && echo -n $'\ekzsh\e\\'
- # return 0
- fi
- # just use DONTSETRPROMPT=1 to be able to overwrite RPROMPT
- if [[ -z $DONTSETRPROMPT ]] ; then
- if [[ -n $BATTERY ]] ; then
- RPROMPT="%(?..:()% ${PERCENT}${SCREENTITLE}"
- # RPROMPT="${PERCENT}${SCREENTITLE}"
- else
- RPROMPT="%(?..:()% ${SCREENTITLE}"
- # RPROMPT="${SCREENTITLE}"