zshrc: 'limit stack' needs zsh 4.2.5 or newer (not just 4.*)
[grml-etc-core.git] / etc / zsh / zshrc
index bc2616f..6fdb081 100644 (file)
@@ -109,6 +109,11 @@ is42(){
     return 1
 }
 
+is425(){
+    [[ $ZSH_VERSION == 4.2.<5->* || $ZSH_VERSION == 4.<3->* || $ZSH_VERSION == <5->* ]] && return 0
+    return 1
+}
+
 is43(){
     [[ $ZSH_VERSION == 4.<3->* || $ZSH_VERSION == <5->* ]] && return 0
     return 1
@@ -1073,7 +1078,7 @@ fi
 # The default values for these in all contexts are:
 #   promptformat        " (%s)-[%b|%a]-"
 #   promptactionformat  " (%s)-[%b]-"
-#   branchformat        "%b:%r" (for bzr and svn)
+#   branchformat        "%b:%r" (for bzr, svn and svk)
 #   enable              true
 #   disable             (empty list)
 #   use-simple          false
@@ -1282,10 +1287,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}"
@@ -1431,14 +1435,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
 }
 
@@ -1485,7 +1510,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"
+    zstyle ':vcs_info:(sv[nk]|bzr)' branchformat "%b${YELLOW}:%r"
 fi
 
 # }}}
@@ -1879,7 +1904,7 @@ fi
 
 # {{{ Use hard limits, except for a smaller stack and no core dumps
 unlimit
-is4 && limit stack 8192
+is425 && limit stack 8192
 isgrmlcd && limit core 0 # important for a live-cd-system
 limit -s
 # }}}