move environment stuff from /etc/zsh/zshenv; added function minimal-shell; added...
[grml-etc-core.git] / etc / zsh / zshrc
index b609ce2..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 18:44:38 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))
@@ -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
@@ -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
@@ -1298,6 +1343,11 @@ If you want to use xinit anyway please call \"/usr/bin/xinit\"."
     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 "$@"