improve chpwd handling for builtin dirs command
[grml-etc-core.git] / etc / zsh / zshrc
index e9d02a6..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
@@ -559,7 +571,7 @@ Main configuration of zsh happens in /etc/zsh/zshrc (global)
 and /etc/skel/.zshrc which is copied to \$HOME/.zshrc once.
 The files are part of the package grml-etc-core, if you want to
 use them on a non-grml-system just get the tar.gz from
-http://grml.org/repos/ or get the files from the mercurial
+http://deb.grml.org/ or get the files from the mercurial
 repository:
 
   http://hg.grml.org/grml-etc-core/raw-file/tip/etc/skel/.zshrc
@@ -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 ''
@@ -833,9 +843,15 @@ If you want to use xinit anyway please call \"/usr/bin/xinit\"."
 # shell functions {{{
   setenv()  { typeset -x "${1}${1:+=}${(@)argv[2,$#]}" }  # csh compatibility
   freload() { while (( $# )); do; unfunction $1; autoload -U $1; shift; done }
-  manzsh()  {  /usr/bin/man zshall |  vim -c "se ft=man| se hlsearch" +/"$1" - ; }
-#  manzsh()  { /usr/bin/man zshall |  most +/"$1" ; }
-#  manzsh()  { man zshall | $MYLESS -p $1 ; }
+
+  # fast manual access
+  if type -p qma &>/dev/null ; then
+     manzsh()  { qma zshall "$1" }
+  else
+     manzsh()  { /usr/bin/man zshall |  vim -c "se ft=man| se hlsearch" +/"$1" - ; }
+     # manzsh()  { /usr/bin/man zshall |  most +/"$1" ; }
+     # manzsh()  { man zshall | $MYLESS -p $1 ; }
+  fi
 
 # use "dchange <package-name>" to view Debian's changelog of the package:
   dchange() {
@@ -927,7 +943,7 @@ If you want to use xinit anyway please call \"/usr/bin/xinit\"."
   }
   alias help-zshglob=H-Glob
 
-  type -p fma &>/dev/null && alias ?='fma zshall'
+  type -p qma &>/dev/null && alias ?='qma zshall'
 
   # grep for running process, like: 'any vim'
   any() {