zsh: replace $(which ...) with $(type ...)
[grml-etc-core.git] / etc / zsh / zshrc
index 47dfa2e..2497875 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 Okt 18 10:22:10 CEST 2007 [mika]
+# Latest change: Don Nov 22 11:13:15 CET 2007 [mika]
 ################################################################################
 # This file is sourced only for interactive shells. It
 # should contain commands to set up aliases, functions,
 # check for versions (compatibility reasons)
   if autoload is-at-least && is-at-least 2>/dev/null ; then
      is4() { is-at-least 4 }
+     is41() { is-at-least 4.1 }
      is42() { is-at-least 4.2 }
   else
     is4(){
 
 # {{{ set some variables
   #v#
-  export EDITOR=${EDITOR:-vim}
+  if type -p vim &>/dev/null ; then
+     export EDITOR=${EDITOR:-vim}
+  else
+     export EDITOR=${EDITOR:-vi}
+  fi
   #v#
+
   export MAIL=${MAIL:-/var/mail/$USER}
+
   # if we don't set $SHELL then aterm, rxvt,.. will use /bin/sh or /bin/bash :-/
   export SHELL='/bin/zsh'
-  [ -x $(which dircolors) ] && eval `dircolors -b`
 
-# Search path for the cd command
-#  cdpath=(.. ~)
+  # color setup for ls:
+  [ -x $(type dircolors) ] && eval `dircolors -b`
 
-# completion functions go to /etc/zsh/completion.d
-# function files may be put into /etc/zsh/functions.d, from where they
-# will be automatically autoloaded.
+  # set width of man pages to 80 for more convenient reading
+  # (( ${+MANWIDTH} )) || export MANWIDTH=80
+
+  # Search path for the cd command
+  #  cdpath=(.. ~)
+
+  # completion functions go to /etc/zsh/completion.d
+  # function files may be put into /etc/zsh/functions.d, from where they
+  # will be automatically autoloaded.
   if [ -n "$BROKEN_COMPLETION_DIR" ] ; then
      print 'Warning: not setting completion directories because broken files have been found.'>&2
   else
      fi
   fi
 
-# automatically remove duplicates from these arrays
+  # automatically remove duplicates from these arrays
   typeset -U path cdpath fpath manpath
 # }}}
 
@@ -450,12 +462,20 @@ fi
          done
 
 # autoload zsh modules when they are referenced
-  is4 && for opt mod in a  stat    \
-                        a  zpty    \
-                        ap zprof   \
-                        ap mapfile ; do
-             zmodload -${opt} zsh/${mod} ${mod}
-         done ; unset opt mod
+  if is4 ; then
+    tmpargs=(
+      a   stat
+      a   zpty
+      ap  zprof
+      ap  mapfile
+    )
+
+    while (( ${#tmpargs} > 0 )) ; do
+      zmodload -${tmpargs[1]} zsh/${tmpargs[2]} ${tmpargs[2]}
+      shift 2 tmpargs
+    done
+    unset tmpargs
+  fi
 
   is4 && autoload -U insert-files && \
   zle -N insert-files && \
@@ -613,7 +633,7 @@ fi
 
 # {{{ display battery status on right side of prompt via running 'BATTERY=1 zsh'
   if [ -n "$BATTERY" ] ; then
-     if [ -x $(which acpi) ] ; then
+     if [ -x $(type acpi) ] ; then
         PERCENT="${(C)${(s| |)$(acpi 2>/dev/null)}[4]}"
         [ -z "$PERCENT" ] && PERCENT='acpi not present'
         if [ "${PERCENT%%%}" -lt 20 ] ; then
@@ -698,7 +718,7 @@ fi
   # precmd () { setopt promptsubst; [[ -o interactive ]] && jobs -l;
 
   # make sure to use right prompt only when not running a command
-  is4 && setopt transient_rprompt
+  is41 && setopt transient_rprompt
 
   is4 && [[ -z $NOPRECMD ]] && precmd () {
       [[ -n $NOPRECMD ]] && return 0
@@ -920,7 +940,7 @@ ${BLUE}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< %# "
   alias top10='print -l ? ${(o)history%% *} | uniq -c | sort -nr | head -n 10'
 
 # truecrypt; use e.g. via 'truec /dev/ice /mnt/ice' or 'truec -i'
-  if [ -x $(which truecrypt) ] ; then
+  if [ -x $(type truecrypt) ] ; then
      if isutfenv ; then
         alias truec='truecrypt --mount-options "rw,sync,dirsync,users,uid=1000,gid=users,umask=077,utf8" '
      else
@@ -1032,14 +1052,14 @@ Enjoy your grml system with the zsh!$reset_color"
   fi
 
 # sort installed Debian-packages by size
-  if [ -x $(which grep-status) ] ; then
+  if [ -x $(type grep-status) ] ; then
      #a3# List installed Debian-packages sorted by size
      alias debs-by-size='grep-status -FStatus -sInstalled-Size,Package -n "install ok installed" | paste -sd "  \n" | sort -rn'
   fi
 
 # if cdrecord is a symlink (to wodim) or isn't present at all warn:
-  if [ -L /usr/bin/cdrecord -o ! -x $(which cdrecord) ] ; then
-     if [ -x $(which wodim) ] ; then
+  if [ -L /usr/bin/cdrecord -o ! -x $(type cdrecord) ] ; then
+     if [ -x $(type wodim) ] ; then
         alias cdrecord="echo 'cdrecord is not provided under its original name by Debian anymore.
 See #377109 in the BTS of Debian for more details.
 
@@ -1048,7 +1068,7 @@ Please use the wodim binary instead' ; return 1"
   fi
 
 # get_tw_cli has been renamed into get_3ware
-  if [ -x $(which get_3ware) ] ; then
+  if [ -x $(type get_3ware) ] ; then
      get_tw_cli() {
        echo 'Warning: get_tw_cli has been renamed into get_3ware. Invoking get_3ware for you.'>&2
        get_3ware
@@ -1056,7 +1076,7 @@ Please use the wodim binary instead' ; return 1"
   fi
 
 # I hate lacking backward compatibility, so provide an alternative therefore
-  if ! [ -x $(which apache2-ssl-certificate) ] ; then
+  if ! [ -x $(type apache2-ssl-certificate) ] ; then
      apache2-ssl-certificate(){
 
      print 'Debian does not ship apache2-ssl-certificate anymore (see #398520). :('
@@ -1246,19 +1266,19 @@ If you want to use xinit anyway please call \"/usr/bin/xinit\"."
     fi
   }
 
-  if [ -x $(which 915resolution) ] ; then
+  if [ -x $(type 915resolution) ] ; then
      alias 855resolution='echo -e "Please use 915resolution as resolution modify tool for Intel graphic chipset."; return -1'
   fi
 
   #a1# Output version of running grml
   alias grml-version='cat /etc/grml_version'
 
-  if [ -x $(which rebuildfstab) ] ; then
+  if [ -x $(type rebuildfstab) ] ; then
      #a1# Rebuild /etc/fstab
      alias grml-rebuildfstab='rebuildfstab -v -r -config'
   fi
 
-  if [ -x $(which grml-debootstrap) ] ; then
+  if [ -x $(type grml-debootstrap) ] ; then
      alias debian2hd='print "Installing debian to harddisk is possible via using grml-debootstrap." ; return 1'
   fi
 }
@@ -1332,7 +1352,7 @@ If you want to use xinit anyway please call \"/usr/bin/xinit\"."
      # manzsh()  { man zshall | $MYLESS -p $1 ; }
   fi
 
-  if [ -x $(which most) ] ; then
+  if [ -x $(type most) ] ; then
   #f1# View Debian's changelog of a given package
     dchange() {
       if [ -r /usr/share/doc/${1}/changelog.Debian.gz ] ; then