move environment stuff from /etc/zsh/zshenv; added function minimal-shell; added...
[grml-etc-core.git] / etc / zsh / zshrc
index 4332925..60a67b3 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 Jun 09 00:44:57 CEST 2007 [mika]
+# Latest change: Mit Jun 20 10:28:28 CEST 2007 [mika]
 ################################################################################
 # This file is sourced only for interactive shells. It
 # should contain commands to set up aliases, functions,
   fi
 # }}}
 
+# locale setup {{{
+  if [ -n "$LANG" ]  ; then
+     export LANG
+  else
+     [ -r /etc/default/locale ] && source /etc/default/locale
+  fi
+  [ -n "$LANG" ]          && export LANG || export LANG="en_US.iso885915"
+  [ -n "$LC_ALL" ]        && export LC_ALL
+  [ -n "$LC_MESSAGES" ]   && export LC_MESSAGES
+
+  [ -r /etc/sysconfig/keyboard ] && source /etc/sysconfig/keyboard
+  [ -r /etc/timezone ] && TZ=$(cat /etc/timezone)
+# }}}
+
 # check for potentially old files in 'completion.d' {{{
   setopt extendedglob
   xof=(/etc/zsh/completion.d/*~/etc/zsh/completion.d/_*(N))
 # check for user, if not running as root set $SUDO to sudo
  (( EUID != 0 )) && SUDO='sudo' || SUDO=''
 
-  function salias() {
+  salias() {
     # creates an alias and precedes the command with
     # sudo if $EUID is not zero.
     local only=0 ; local multi=0
@@ -349,7 +363,7 @@ fi
      function compdef { }
   fi
 
-  is4 && autoload -U zed                  # use ZLE editor to edit a file or function
+  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} 2>/dev/null || print "Notice: no ${mod} available :("
@@ -413,6 +427,21 @@ fi
   }
   zle -N sudo-command-line _sudo-command-line
   bindkey "^Os" sudo-command-line
+
+### jump behind the first word on the cmdline.
+### useful to add options.
+  function jump_after_first_word() {
+    local words
+    words=(${(z)BUFFER})
+    if (( ${#words} <= 1 )) ; then
+      CURSOR=${#BUFFER}
+    else
+      CURSOR=${#${words[1]}}
+    fi
+  }
+  zle -N jump_after_first_word
+  bindkey '^x1' jump_after_first_word
+
 # }}}
 
 # {{{ set some important options
@@ -820,7 +849,7 @@ Please use the wodim binary instead' ; return 1"
 
 # I hate lacking backward compability, so provide an alternative therefore
   if ! [ -x $(which apache2-ssl-certificate) ] ; then
-   function apache2-ssl-certificate(){
+     apache2-ssl-certificate(){
 
      print 'Debian does not ship apache2-ssl-certificate anymore (see #398520). :('
      print 'You might want to take a look at Debian the package ssl-cert as well.'
@@ -919,7 +948,7 @@ grmlcomp() {
 # zstyle ':completion:*' expand prefix suffix
 
 # automatic rehash? Credits go to Frank Terbeck
-# function my_accept () {
+# my_accept() {
 #   local buf
 #   [[ -z ${BUFFER} ]] && zle accept-line && return
 #   buf=( ${(z)BUFFER}  )
@@ -987,7 +1016,7 @@ grmlcomp() {
 # {{{ grmlstuff
 grmlstuff() {
 # people should use 'grml-x'!
-  function startx() {
+  startx() {
     if [ -e /etc/X11/xorg.conf ] ; then
        [ -x /usr/bin/startx ] && /usr/bin/startx || /usr/X11R6/bin/startx
     else
@@ -998,7 +1027,7 @@ If you want to use startx anyway please call \"/usr/bin/startx\"."
     fi
   }
 
-  function xinit() {
+  xinit() {
     if [ -e /etc/X11/xorg.conf ] ; then
        [ -x /usr/bin/xinit ] && /usr/bin/xinit || /usr/X11R6/bin/xinit
     else
@@ -1105,6 +1134,22 @@ If you want to use xinit anyway please call \"/usr/bin/xinit\"."
     _dchange() { _files -W /usr/share/doc -/ }
     compdef _dchange dchange
 
+  # use "dnews <package-name>" to view Debian's NEWS file of the package:
+    dnews() {
+      if [ -r /usr/share/doc/${1}/NEWS.Debian.gz ] ; then
+         most /usr/share/doc/${1}/NEWS.Debian.gz
+      else
+         if [ -r /usr/share/doc/${1}/NEWS.gz ] ; then
+            most /usr/share/doc/${1}/NEWS.gz
+         else
+            echo "No NEWS file for package $1 found, sorry."
+            return 1
+         fi
+      fi
+    }
+    _dnews() { _files -W /usr/share/doc -/ }
+    compdef _dnews dnews
+
   # use "uchange <package-name>" to view upstream's changelog of the package:
     uchange() {
       if [ -r /usr/share/doc/${1}/changelog.gz ] ; then
@@ -1293,6 +1338,16 @@ If you want to use xinit anyway please call \"/usr/bin/xinit\"."
     esac
   }
 
+  # run dhclient for wireless device
+  iwclient() {
+    salias dhclient "$(wavemon -d | awk '/device/{print $2}')"
+  }
+
+  # spawn a minimally set up ksh - useful if you want to umount /usr/.
+  minimal-shell() {
+    exec env -i ENV="/etc/minimal-shellrc" HOME="$HOME" TERM="$TERM" ksh
+  }
+
   # Switching shell safely and efficiently? http://www.zsh.org/mla/workers/2001/msg02410.html
   # bash() {
   #  NO_SWITCH="yes" command bash "$@"