zshrc: Adding support for darcs repositories to vcs_info()
authorFrank Terbeck <ft@grml.org>
Fri, 29 Aug 2008 20:22:44 +0000 (22:22 +0200)
committerFrank Terbeck <ft@grml.org>
Fri, 29 Aug 2008 20:22:44 +0000 (22:22 +0200)
This is pretty basic support; but at least it detects darcs repositories
correctly. Since darcs has no concept of branches, but rather implements
them by using multiple repositories, %b expands to the same thing %r does.

debian/changelog
etc/zsh/zshrc

index b7e70e2..f4a3238 100644 (file)
@@ -8,8 +8,9 @@ grml-etc-core (0.3.53) unstable; urgency=low
     of a mercurial repository. Found by Karl Voit.
   * zshrc: Give the user the opportunity to switch the vcs_info prompt
     off for certain version control systems.
+  * zshrc: Adding support for darcs repositories to vcs_info()
 
- -- Frank Terbeck <ft@grml.org>  Fri, 29 Aug 2008 19:46:35 +0200
+ -- Frank Terbeck <ft@grml.org>  Fri, 29 Aug 2008 22:19:38 +0200
 
 grml-etc-core (0.3.52) unstable; urgency=low
 
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