zshrc: Adding support for darcs repositories to vcs_info()
[grml-etc-core.git] / etc / zsh / zshrc
index 6488a51..cb261bf 100644 (file)
@@ -1037,10 +1037,11 @@ fi
 
 # vcs_info() documentation: {{{
 #
-# The vcs_info () feature can be configured via zstyle:
+# The vcs_info() feature can be configured via zstyle:
 #   First, the context in which we are working:
 #       :vcs_info:<vcs-string>
-#   ...where <vcs-string> is one of: git, hg, bzr, svn or svk
+#   ...where <vcs-string> is one of:
+#       - git, git-svn, hg, darcs, bzr, svn or svk
 #
 #   You can of course use ':vcs_info:*' to match all VCSs at once.
 #
@@ -1222,6 +1223,15 @@ VCS_INFO_git_get_data () { # {{{
     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
 
@@ -1314,6 +1324,13 @@ VCS_INFO_bzr_detect() {
     return $?
 }
 
+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
@@ -1360,7 +1377,7 @@ vcs_info () { # {{{
     zstyle -T ":vcs_info:${vcs}" "enable" || return 0
     zstyle -a ":vcs_info:${vcs}" "disable" disabled
 
-    VCSs=(git hg bzr svn svk)
+    VCSs=(git hg bzr darcs svn svk)
 
     (( found = 0 ))
     for vcs in ${VCSs} ; do