improve chpwd handling for builtin dirs command
[grml-etc-core.git] / etc / zsh / zshrc
index 75013ea..5466b63 100644 (file)
@@ -3,7 +3,7 @@
 # Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
 # Bug-Reports:   see http://grml.org/bugs/
 # License:       This file is licensed under the GPL v2.
-# Latest change: Don Nov 30 16:15:06 CET 2006 [mika]
+# Latest change: Son Dez 17 13:52:04 CET 2006 [mika]
 ################################################################################
 # This file is sourced only for interactive shells. It
 # should contain commands to set up aliases, functions,
@@ -239,8 +239,8 @@ fi
   autoload run-help # use via 'esc-h'
 
 # completion system
-  if autoload -U compinit && [ -f "/usr/share/zsh/$ZSH_VERSION/functions/Completion/compinit" ] && compinit 2>/dev/null ; then
-    compinit
+  if autoload -U compinit && compinit 2>/dev/null ; then
+     compinit 2>/dev/null || print 'Notice: no compinit available :('
    else
      print 'Notice: no compinit available :('
      function zstyle { }
@@ -250,7 +250,7 @@ fi
   is4 && autoload -U zed                  # use ZLE editor to edit a file or function
 
   is4 && for mod in complist deltochar mathfunc ; do
-             zmodload -i zsh/${mod}
+             zmodload -i zsh/${mod} 2>/dev/null || print "Notice: no ${mod} available :("
          done
 
 # autoload zsh modules when they are referenced
@@ -372,6 +372,18 @@ fi
   isgrmlcd && SAVEHIST=1000 || SAVEHIST=10000 # useful for setopt append_history
 # }}}
 
+# dirstack handling {{{
+  DIRSTACKSIZE=20
+  if [[ -f ~/.zdirs ]] && [[ ${#dirstack[*]} -eq 0 ]]; then
+     dirstack=( ${(uf)"$(< ~/.zdirs)"} )
+     # "cd -" won't work after login by just setting $OLDPWD, so
+     cd $dirstack[0] && cd $OLDPWD
+  fi
+  chpwd() {
+    builtin dirs -pl >! ~/.zdirs
+  }
+# }}}
+
 # {{{ display battery status on right side of prompt via running 'BATTERY=1 zsh'
   if [ -n "$BATTERY" ] ; then
      if [ -x =acpi ] ; then
@@ -396,8 +408,8 @@ fi
 
   # precmd () { setopt promptsubst; [[ -o interactive ]] && jobs -l;
 
-  is4 && ! [[ -n "$NOPRECMD" ]] && precmd () {
-      (( NOPRECMD > 0 )) && return 0
+  is4 && [[ -z $NOPRECMD ]] && precmd () {
+      [[ -n $NOPRECMD ]] && return 0
       # just use DONTSETRPROMPT=1 to be able to overwrite RPROMPT
       if [[ -z ${DONTSETRPROMPT} ]] ; then
         if [ -n "$BATTERY" ] ; then
@@ -419,8 +431,8 @@ fi
 # chpwd () => a function which is executed whenever the directory is changed
 
 # preexec() => a function running before every command
-  is4 && ! [[ -n "$NOPRECMD" ]] && preexec () {
-      (( NOPRECMD > 0 )) && return 0
+  is4 && [[ -z $NOPRECMD ]] && preexec () {
+      [[ -n $NOPRECMD ]] && return 0
   # set hostname if not running on host with name 'grml'
       local HOSTNAME=$(hostname)
       if [[ "$HOSTNAME" != grml ]] ; then
@@ -680,8 +692,6 @@ grmlcomp() {
   zstyle ':completion:*:history-words'   menu yes                            # activate menu
   zstyle ':completion:*:history-words'   remove-all-dups yes                 # ignore duplicate entries
   zstyle ':completion:*:history-words'   stop yes                            #
-  zstyle ':completion:*:*:linda:*'       file-patterns '*.deb'               # complete debian packages for command 'linda'
-  zstyle ':completion:*:*:lintian:*'     file-patterns '*.deb'               # complete debian packages for command 'lintian'
   zstyle ':completion:*'                 matcher-list 'm:{a-z}={A-Z}'        # match uppercase from lowercase
   zstyle ':completion:*:matches'         group 'yes'                         # separate matches into groups
   zstyle ':completion:*'                 group-name ''