The 'preparation to a zsh workshop improves code quality' release. :)
[grml-etc-core.git] / etc / skel / .zshrc
index f562ed2..c3dbaf8 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: Son Nov 12 12:23:38 CET 2006 [mika]
+# Latest change: Fre Nov 24 23:08:52 CET 2006 [mika]
 ################################################################################
 
 # source ~/.zshrc.global {{{
 
 ## variables {{{
 
+# do you want grmlsmall-specific adjustments?
+  GRMLSMALL_SPECIFIC=1
+
 # set terminal property (used e.g. by msgid-chooser)
   export COLORTERM="yes"
 
 # set default browser
-  if [ -z $BROWSER ] ; then
+  if [ -z "$BROWSER" ] ; then
      if [ -n "$DISPLAY" ] ; then
         [ -x =firefox ] && export BROWSER=firefox
      else
@@ -83,7 +86,7 @@
 #  alias -g SL='| sort | less'
 #  alias -g S='| sort'
 #  alias -g T='|tail'
-#  isgrmlsmall || alias -g V='| vim -'
+#  alias -g V='| vim -'
 
 # power completion, see http://zshwiki.org/home/examples/zleiab
 # less risky than the global aliases but powerful as well
    'SL' '| sort | less'
    'S' '| sort -u'
    'T' '|tail'
+   'V' '|& vim -'
    'hide' "echo -en '\033]50;nil2\007'"
    'tiny' 'echo -en "\033]50;-misc-fixed-medium-r-normal-*-*-80-*-*-c-*-iso8859-15\007"'
    'small' 'echo -en "\033]50;6x10\007"'
    'fblinks' 'links2 -driver fb'
    'insecssh' 'ssh -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null"'
    'fori' 'for i ({..}) { }'
-   'cx'        'chmod +x'
-   'e' 'print -l'
+   'cx' 'chmod +x'
+   'e'  'print -l'
    'se' 'setopt interactivecomments'
    'va' 'valac --vapidir=../vapi/ --pkg=gtk+-2.0 gtktest.vala'
    'fb2' '=mplayer -vo fbdev -fs -zoom 1>/dev/null -xy 2'
    'fb3' '=mplayer -vo fbdev -fs  -zoom 1>/dev/null -xy 3'
    'ci' 'centericq'
-   'D' 'export DISPLAY=:0.0'
+   'D'  'export DISPLAY=:0.0'
    'mp' 'mplayer -vo xv -fs -zoom'
   )
-  isgrmlsmall || abk+=( 'V' '|& vim -')
   globalias () {
         local MATCH
         matched_chars='[.-|_a-zA-Z0-9]#'
   alias conkeror='firefox -chrome chrome://conkeror/content'
 
 # arch/tla stuff
-  alias ldiff='tla what-changed --diffs | less'
-  alias tbp='tla-buildpackage'
-  alias mirror='tla archive-mirror'
-  alias commit='tla commit'
-  alias merge='tla star-merge'
+  if type -p tla >/dev/null 2>&1 ; then
+     alias tdi='tla what-changed --diffs | less'
+     alias tbp='tla-buildpackage'
+     alias tmi='tla archive-mirror'
+     alias tco='tla commit'
+     alias tme='tla star-merge'
+  fi
 
 # listing stuff
   alias dir="ls -lSrah"
 
 # console stuff
   alias cmplayer='mplayer -vo fbdev'
-#  alias fbmplayer='mplayer -vo fbdev'
   alias fbmplayer='mplayer -vo fbdev -fs -zoom'
   alias fblinks='links2 -driver fb'
 
   cvsr()    { rcs2log $* | $PAGER }
   cvss()    { cvs status -v $* }
   debbug()  { ${=BROWSER} "http://bugs.debian.org/$*" }
-  debbugm() { bts show --mbox $1 } # provide bugnummer as $1
+  debbugm() { bts show --mbox $1 } # provide bugnummer as "$1"
   disassemble(){ gcc -pipe -S -o - -O -g $* | as -aldh -o /dev/null }
   dmoz()    { ${=BROWSER} http://search.dmoz.org/cgi-bin/search\?search=${1// /_} }
   dwicti()  { ${=BROWSER} http://de.wiktionary.org/wiki/${(C)1// /_} }
   sig()     { agrep -d '^-- $' "$*" ~/.Signature }
   swiki()   { ${=BROWSER} http://de.wikipedia.org/wiki/Spezial:Search/${(C)1} }
   udiff()   { diff -urd $* | egrep -v "^Only in |^Binary files " }
-  isgrmlsmall || viless()  { vim --cmd 'let no_plugin_maps = 1' -c "so \$VIMRUNTIME/macros/less.vim" "${@:--}" }
+  viless()  { vim --cmd 'let no_plugin_maps = 1' -c "so \$VIMRUNTIME/macros/less.vim" "${@:--}" }
   wikide () { ${=BROWSER} http://de.wikipedia.org/wiki/"${(C)*}" }
   wikien()  { ${=BROWSER} http://en.wikipedia.org/wiki/"$*" }
   wodeb ()  { ${=BROWSER} "http://packages.debian.org/cgi-bin/search_contents.pl?word=$1&version=${2:-unstable}" }
   _doc() { _files -W /usr/share/doc -/ }
   compdef _doc doc
 
-# debian upgrade
-  upgrade () {
-    if [ -z $1 ] ; then
-        $SUDO apt-get update
-        $SUDO apt-get -u upgrade
-    else
-        ssh $1 $SUDO apt-get update
-        # ask before the upgrade
-        local dummy
-        ssh $1 $SUDO apt-get --no-act upgrade
-        echo -n "Process the upgrade ?"
-        read -q dummy
-        if [[ $dummy == "y" ]] ; then
-            ssh $1 $SUDO apt-get -u upgrade --yes
-        fi
-    fi
-  }
-
 # make screenshot of current desktop (use 'import' from ImageMagic)
   sshot() {
         [[ ! -d ~/shots  ]] && mkdir ~/shots
         cd ~/shots ; sleep 5; import -window root shot_`date --iso-8601=m`.jpg
   }
 
-
 # list images only
   limg() {
     local -a images
     fi
   }
 
-
 # create pdf file from source code
   makereadable() {
      output=$1
     pcre_compile $1 && \
     pcre_match $2 && echo "regex matches" || echo "regex does not match"
   }
+
 # list files which have been modified within the last x days
   new() { print -l *(m-$1) }
 
    echo /proc/*/cwd(:h:t:s/self//) # Analog zu >ps ax | awk '{print $1}'<"
   }
 
+# find out which libs define a symbol
+# usage example: 'lcheck strcpy'
   lcheck() {
-   nm -go /usr/lib/lib*.a 2>/dev/null | grep ":[[:xdigit:]]\{8\} . .*$1"":[[:xdigit:]]\{8\} . .*$1"
+     if [ -n "$1" ] ; then
+        nm -go /usr/lib/lib*.a 2>/dev/null | grep ":[[:xdigit:]]\{8\} . .*$1"
+      else
+        echo "Usage: lcheck <function>" >&2
+     fi
   }
 
 # clean up directory
 #  getstrings () { perl -ne 'while ( m/"(.*?)"/gc ) { print $1, "\n"; }' $*}
 #  getanchors () { perl -ne 'while ( m/«([^«»\n]+)»/gc ) { print $1, "\n"; }' $* }
 #  showINC ()    { perl -e 'for (@INC) { printf "%d %s\n", $i++, $_ }' }
-#  isgrmlsmall || vimpm ()      { vim `perldoc -l $1 | sed -e 's/pod$/pm/'` }
-#  isgrmlsmall || vimhelp ()    { vim -c "help $1" -c on -c "au! VimEnter *" }
+#  vimpm ()      { vim `perldoc -l $1 | sed -e 's/pod$/pm/'` }
+#  vimhelp ()    { vim -c "help $1" -c on -c "au! VimEnter *" }
 
 # plap foo -- list all occurrences of program in the current PATH
   plap() {
   cl() { cd $1 && ls -a }
 
 # Use vim to convert plaintext to HTML
-  isgrmlsmall || 2html() { vim -u NONE -n -c ':syntax on' -c ':so $VIMRUNTIME/syntax/2html.vim' -c ':wqa' $1 > /dev/null 2> /dev/null }
+  2html() { vim -u NONE -n -c ':syntax on' -c ':so $VIMRUNTIME/syntax/2html.vim' -c ':wqa' $1 > /dev/null 2> /dev/null }
 
 # Usage: simple-extract <file>
 # Description: extracts archived files (maybe)
         fi
   }
 
+# follow symlinks
   folsym() {
     if [[ -e $1 || -h $1 ]]; then
         file=$1
 # Use 'view' to read manpages, if u want colors, regex - search, ...
 # like vi(m).
 # It's shameless stolen from <http://www.vim.org/tips/tip.php?tip_id=167>
-  isgrmlsmall || vman() { man $* | col -b | view -c 'set ft=man nomod nolist' - }
+  vman() { man $* | col -b | view -c 'set ft=man nomod nolist' - }
 
 # search for various types or README file in dir and display them in $PAGER
 # function readme() { $PAGER -- (#ia3)readme* }
         done
   }
 
-# $ show_print `cat /etc/passwd`
+# % slow_print `cat /etc/passwd`
   slow_print() {
         for argument in "${@}"
         do
         print ""
   }
 
+# display system state
   status() {
         print ""
         print "Date..: "$(date "+%Y-%m-%d %H:%M:%S")""
         print ""
   }
 
+# Rip an audio CD
   audiorip() {
         mkdir -p ~/ripps
         cd ~/ripps
         fi
   }
 
+# and burn it
   audioburn() {
         cd ~/ripps
         cdrdao write --device $DEVICE --driver generic-mmc audiocd.toc
         fi
   }
 
+# Make an audio CD from all mp3 files
   mkaudiocd() {
         cd ~/ripps
         for i in *.[Mm][Pp]3; do mv "$i" `echo $i | tr '[A-Z]' '[a-z]'`; done
         for i in *.wav; do sox $i.wav -r 44100 $i.wav resample; done
   }
 
+# Create an ISO image. You are prompted for volume name, filename and directory
   mkiso() {
         echo " * Volume name "
         read volume
         mkisofs -o ~/$iso -A $volume -allow-multidot -J -R -iso-level 3 -V $volume -R $files
   }
 
-# generate thumbnails ;)
+# simple thumbnails generator
   genthumbs () {
     rm -rf thumb-* index.html
     echo "
     $SUDO dpkg -i skype-beta*.deb && echo "skype installed."
   }
 
-# get gzimo (voicp software)
+# get gzimo (VoIP software)
   getgizmo() {
     setopt local_options
     setopt errreturn
       for i in `hg status -marn "$@"` ; diff -ubwd <(hg cat "$i") "$i"
     }
 
-  # diffstat for specific version of mercurial
+  # build debian package
+    alias hbp='hg-buildpackage'
+
+  # diffstat for specific version of a mercurial repository
   #   hgstat      => display diffstat between last revision and tip
   #   hgstat 1234 => display diffstat between revision 1234 and tip
     hgstat() {
       [ -n "$1" ] && hg diff -r $1 -r tip | diffstat || hg export tip | diffstat
     }
 
-  # get current mercurial tip via hg itself and install it in $HOME
-  gethgclone() {
-    setopt local_options
-    setopt errreturn
-    if [ -f mercurial-tree/.hg ] ; then
-      cd mercurial-tree
-      echo "Running hg pull for retreiving latest version..."
-      hg pull
-      echo "Finished update. Building mercurial"
-      make local
-      echo "Setting \$PATH to $PWD:\$PATH..."
-      export PATH="$PWD:$PATH"
-    else
-      echo "Downloading mercurial via hg"
-      hg clone http://selenic.com/repo/hg mercurial-tree
-      cd mercurial-tree
+  # get current mercurial tip via hg itself
+    gethgclone() {
+      setopt local_options
+      setopt errreturn
+      if [ -f mercurial-tree/.hg ] ; then
+        cd mercurial-tree
+        echo "Running hg pull for retreiving latest version..."
+        hg pull
+        echo "Finished update. Building mercurial"
+        make local
+        echo "Setting \$PATH to $PWD:\$PATH..."
+        export PATH="$PWD:$PATH"
+      else
+        echo "Downloading mercurial via hg"
+        hg clone http://selenic.com/repo/hg mercurial-tree
+        cd mercurial-tree
+        echo "Building mercurial"
+        make local
+        echo "Setting \$PATH to $PWD:\$PATH..."
+        export PATH="$PWD:$PATH"
+        echo "make sure you set it permanent via ~/.zshrc if you plan to use it permanently."
+        # echo "Setting \$PYTHONPATH to PYTHONPATH=\${HOME}/lib/python,"
+        # export PYTHONPATH=${HOME}/lib/python
+      fi
+    }
+  
+  fi # end of check whether we have the 'hg'-executable
+
+  # get current mercurial snapshot
+    gethgsnap() {
+      setopt local_options
+      setopt errreturn
+      if [ -f mercurial-snapshot.tar.gz ] ; then
+         echo "mercurial-snapshot.tar.gz exists already, skipping download."
+      else
+        echo "Downloading mercurial snapshot"
+        wget http://www.selenic.com/mercurial/mercurial-snapshot.tar.gz
+      fi
+      echo "Unpacking mercurial-snapshot.tar.gz"
+      tar zxf mercurial-snapshot.tar.gz
+      cd mercurial-snapshot/
+      echo "Installing required build-dependencies"
+      $SUDO apt-get update
+      $SUDO apt-get install python2.4-dev
       echo "Building mercurial"
       make local
       echo "Setting \$PATH to $PWD:\$PATH..."
       export PATH="$PWD:$PATH"
       echo "make sure you set it permanent via ~/.zshrc if you plan to use it permanently."
-      # echo "Setting \$PYTHONPATH to PYTHONPATH=\${HOME}/lib/python,"
-      # export PYTHONPATH=${HOME}/lib/python
-    fi
-  }
-
-  fi # end of check whether we have the 'hg'-executable
-
-  # get and install current mercurial snapshot in $HOME
-  gethgsnap() {
-    setopt local_options
-    setopt errreturn
-    if [ -f mercurial-snapshot.tar.gz ] ; then
-       echo "mercurial-snapshot.tar.gz exists already, skipping download."
-    else
-      echo "Downloading mercurial snapshot"
-      wget http://www.selenic.com/mercurial/mercurial-snapshot.tar.gz
-    fi
-    echo "Unpacking mercurial-snapshot.tar.gz"
-    tar zxf mercurial-snapshot.tar.gz
-    cd mercurial-snapshot/
-    echo "Installing required build-dependencies"
-    $SUDO apt-get update
-    $SUDO apt-get install python2.4-dev
-    echo "Building mercurial"
-    make local
-    echo "Setting \$PATH to $PWD:\$PATH..."
-    export PATH="$PWD:$PATH"
-    echo "make sure you set it permanent via ~/.zshrc if you plan to use it permanently."
-  }
+    }
 # }}}
 
 # some useful commands often hard to remember - let's grep for them {{{
 # print $'\e[?96;0;64c'
 # }}}
 
-# finally source a local zshrc {{{
+# finally source a local zshrc and grmlsmall-specific configuration {{{
+
+# The following file is used to remove zsh-config-items that do not work
+# in grml-small by default.
+# If you do not want these adjustments (for whatever reason),
+# there are three ways to accomplish that:
+#  a) at the beginning of this file (variables section), set
+#     $GRMLSMALL_SPECIFIC to 0 or comment out the variable definition.
+#  b) remove/rename .zshrc.grmlsmall
+#  c) comment out the following line
+  (( GRMLSMALL_SPECIFIC > 0 )) && isgrmlsmall && source ~/.zshrc.grmlsmall
+
 # this allows us to stay in sync with /etc/skel/.zshrc
 # through 'ln -s /etc/skel/.zshrc ~/.zshrc' and put own
 # modifications in ~/.zshrc.local