/etc/zsh/zshrc: check for $SUDO and do not use it when running as root
[grml-etc-core.git] / etc / zsh / zshrc
index 153f61d..d6b9938 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: Sam Mär 17 20:12:26 CET 2007 [mika]
+# Latest change: Son Apr 29 13:16:44 CEST 2007 [mika]
 ################################################################################
 # This file is sourced only for interactive shells. It
 # should contain commands to set up aliases, functions,
 # Search path for the cd comman
 #  cdpath=(.. ~)
 
-# Support our own site-functions
-  [ -d /etc/zsh/site-functions ] && FPATH=/etc/zsh/site-functions:$FPATH
+# 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.
+  [[ -d /etc/zsh/completion.d ]] && fpath+=( /etc/zsh/completion.d )
+  if [[ -d /etc/zsh/functions.d ]] ; then
+    fpath+=( /etc/zsh/functions.d )
+    for func in /etc/zsh/functions.d/[^_]*[^~] ; do
+      autoload -U ${func:t}
+    done
+  fi
 
 # automatically remove duplicates from these arrays
   typeset -U path cdpath fpath manpath
@@ -227,6 +235,7 @@ fi
    'fbmplayer' 'mplayer -vo -fs -zoom fbdev'
    'fblinks' 'links2 -driver fb'
    'insecssh' 'ssh -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null"'
+   'insecscp' 'scp -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null"'
    'fori' 'for i ({..}) { }'
    'cx' 'chmod +x'
    'e'  'print -l'
@@ -255,11 +264,13 @@ fi
   autoload history-search-end
 
   # we don't want to quote/espace URLs on our own...
-  if autoload -U url-quote-magic ; then
-     zle -N self-insert url-quote-magic
-  else
-     print 'Notice: no url-quote-magic available :('
-  fi
+  # if autoload -U url-quote-magic ; then
+  #    zle -N self-insert url-quote-magic
+  #    zstyle ':url-quote-magic:*' url-metas '*?[]^()~#{}='
+  # else
+  #    print 'Notice: no url-quote-magic available :('
+  # fi
+  alias url-quote='autoload -U url-quote-magic ; zle -N self-insert url-quote-magic'
 
   alias run-help >&/dev/null && unalias run-help
   autoload run-help # use via 'esc-h'
@@ -433,17 +444,25 @@ fi
 
   # precmd () { setopt promptsubst; [[ -o interactive ]] && jobs -l;
 
+  # make sure to use right prompt only when not running a command
+  is4 && setopt transient_rprompt
+
   is4 && [[ -z $NOPRECMD ]] && precmd () {
       [[ -n $NOPRECMD ]] && return 0
+      # allow manual overwriting of RPROMPT
+      if [[ -n $RPROMPT ]] ; then
+         [[ $TERM == screen* ]] && echo -n $'\ekzsh\e\\'
+         return 0
+      fi
       # just use DONTSETRPROMPT=1 to be able to overwrite RPROMPT
-      if [[ -z ${DONTSETRPROMPT} ]] ; then
-        if [ -n "$BATTERY" ] ; then
-          # RPROMPT="%(?..:()% ${PERCENT}${SCREENTITLE}"
-          RPROMPT="${PERCENT}${SCREENTITLE}"
-        else
-          # RPROMPT="%(?..:()% ${SCREENTITLE}"
-          RPROMPT="${SCREENTITLE}"
-        fi
+      if [[ -z $DONTSETRPROMPT ]] ; then
+         if [[ -n $BATTERY ]] ; then
+            RPROMPT="%(?..:()% ${PERCENT}${SCREENTITLE}"
+            # RPROMPT="${PERCENT}${SCREENTITLE}"
+         else
+            RPROMPT="%(?..:()% ${SCREENTITLE}"
+            # RPROMPT="${SCREENTITLE}"
+         fi
       fi
       # adjust title of xterm
       # see http://www.faqs.org/docs/Linux-mini/Xterm-Title.html
@@ -466,15 +485,15 @@ fi
   # get the name of the program currently running and hostname of local machine
   # set screen window title if running in a screen
       if [[ "$TERM" == screen* ]]; then
-          # local CMD=${1[(wr)^(*=*|sudo|ssh|-*)]}       # dont't use hostname
-          local CMD="${1[(wr)^(*=*|sudo|ssh|-*)]}$NAME" # use hostname
-          echo -ne "\ek$CMD\e\\"
+         # local CMD=${1[(wr)^(*=*|sudo|ssh|-*)]}       # dont't use hostname
+         local CMD="${1[(wr)^(*=*|sudo|ssh|-*)]}$NAME" # use hostname
+         echo -ne "\ek$CMD\e\\"
       fi
   # set the screen title to "zsh" when sitting at the command prompt:
       if [[ "$TERM" == screen* ]]; then
-           SCREENTITLE=$'%{\ekzsh\e\\%}'
+         SCREENTITLE=$'%{\ekzsh\e\\%}'
       else
-           SCREENTITLE=''
+         SCREENTITLE=''
       fi
   # adjust title of xterm
       case $TERM in (xterm*|rxvt)
@@ -512,11 +531,11 @@ fi
 
   # don't use colors on dumb terminals (like emacs):
   if [[ "$TERM" == dumb ]] ; then
-    PROMPT="${EXITCODE}${debian_chroot:+($debian_chroot)}%n@%m %40<...<%B%~%b%<< %# "
+     PROMPT="${EXITCODE}${debian_chroot:+($debian_chroot)}%n@%m %40<...<%B%~%b%<< %# "
   else
     # only if $GRMLPROMPT is set (e.g. via 'GRMLPROMPT=1 zsh') use the extended prompt
     # set variable identifying the chroot you work in (used in the prompt below)
-    if [[ -n "$GRMLPROMPT" ]]; then
+    if [[ -n $GRMLPROMPT ]]; then
       PROMPT="${RED}${EXITCODE}${CYAN}[%j running job(s)] ${GREEN}{history#%!} ${RED}%(3L.+.) ${BLUE}%* %D
 ${BLUE}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< %# "
     else
@@ -606,6 +625,7 @@ ${BLUE}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< %# "
        unsetopt prompt_cr
        export PS1="%m%# "
        nice -n -20 speechd-up
+       sleep 2
        flite -o play -t "Finished setting up software synthesizer"
     fi
   '
@@ -676,12 +696,12 @@ Enjoy your grml system with the zsh!$reset_color"
     alias acs='apt-cache search'
     alias acsh='apt-cache show'
     alias acp='apt-cache policy'
-    alias adg="$SUDO apt-get dist-upgrade"
-    alias agi="$SUDO apt-get install"
-    alias ati="$SUDO aptitude install"
-    alias ag="$SUDO apt-get upgrade"
-    alias au="$SUDO apt-get update"
-    alias up="$SUDO aptitude update ; $SUDO aptitude upgrade"
+    [ -n "$SUDO" ] && alias adg="$SUDO apt-get dist-upgrade" || alias adg="apt-get dist-upgrade"
+    [ -n "$SUDO" ] && alias agi="$SUDO apt-get install"      || alias agi="apt-get install"
+    [ -n "$SUDO" ] && alias ati="$SUDO aptitude install"     || alias ati="aptitude install"
+    [ -n "$SUDO" ] && alias ag="$SUDO apt-get upgrade"       || alias ag="apt-get upgrade"
+    [ -n "$SUDO" ] && alias au="$SUDO apt-get update"        || alias au="apt-get update"
+    [ -n "$SUDO" ] && alias up="$SUDO aptitude update ; $SUDO aptitude upgrade" || alias up="aptitude update ; aptitude upgrade"
     alias dbp='dpkg-buildpackage'
     alias ge='grep-excuses'
 
@@ -724,6 +744,14 @@ Please use the wodim binary instead' ; return 1"
      fi
   fi
 
+# get_tw_cli has been renamed into get_3ware
+  if [ -x /usr/bin/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
+     }
+  fi
+
 # I hate lacking backward compability, so provide an alternative therefore
   if ! [ -x /usr/sbin/apache2-ssl-certificate ] ; then
    function apache2-ssl-certificate(){
@@ -754,12 +782,6 @@ Run "grml-tips ssl-certificate" if you need further instructions.
 
 # {{{ completion stuff
 
-# Where to look for autoloaded function definitions
-  if [ -d /etc/zsh/completion.d ] ; then
-    local comp=/etc/zsh/completion.d
-    for func in $comp/*(N-.:t); . ${comp}/${func}
-  fi
-
 # called later (via is4 && grmlcomp)
 # notice: use 'zstyle' for getting current settings
 #         press ^Xh (control-x h) for getting tags in context; ^X? (control-x ?) to run complete_debug with trace output
@@ -974,18 +996,16 @@ If you want to use xinit anyway please call \"/usr/bin/xinit\"."
   }
   compdef _functions reload freload
 
-  # list symlinks in detail (more detailed version of 'readlinkg -f')
+  # list symlinks in detail (more detailed version of 'readlink -f' and 'whence -s')
   sll() {
-     if [ -z "$1" ] ; then
-        print 'Usage: sll <file>' >&2
-        return 1
-     fi
-     for i in $* ; do
-         ls --color=auto -la "$i"
-         if [ -L "$i" ] ; then
-            sll $(readlink "$i")
-         fi
-     done
+    [ -z "$1" ] && printf 'Usage: %s <file(s)>\n' "$0" && return 1
+    for i in "$@" ; do
+      file=$i
+      while [ -h "$file" ] ; do
+        ls -l $file
+        file=$(readlink "$file")
+      done
+    done
   }
 
   # fast manual access
@@ -1014,7 +1034,7 @@ If you want to use xinit anyway please call \"/usr/bin/xinit\"."
     }
     _dchange() { _files -W /usr/share/doc -/ }
     compdef _dchange dchange
-  
+
   # use "uchange <package-name>" to view upstream's changelog of the package:
     uchange() {
       if [ -r /usr/share/doc/${1}/changelog.gz ] ; then
@@ -1132,6 +1152,17 @@ If you want to use xinit anyway please call \"/usr/bin/xinit\"."
   }
   functions peval &>/dev/null && alias calc=peval
 
+  # brltty seems to have problems with utf8 environment and/or font Uni3-Terminus16 under
+  # certain circumstances, so work around it, no matter which environment we have
+  brltty() {
+    if [ -z "$DISPLAY" ] ; then
+       consolechars -f /usr/share/consolefonts/default8x16.psf.gz
+       command brltty "$@"
+    else
+       command brltty "$@"
+    fi
+  }
+
   # Switching shell safely and efficiently? http://www.zsh.org/mla/workers/2001/msg02410.html
   # bash() {
   #  NO_SWITCH="yes" command bash "$@"