Merge remote-tracking branch 'origin/xro/lsnewolddir'
authorFrank Terbeck <ft@bewatermyfriend.org>
Tue, 6 Dec 2011 15:53:35 +0000 (16:53 +0100)
committerFrank Terbeck <ft@bewatermyfriend.org>
Tue, 6 Dec 2011 15:53:35 +0000 (16:53 +0100)
1  2 
doc/grmlzshrc.t2t
etc/zsh/zshrc

diff --combined doc/grmlzshrc.t2t
@@@ -56,6 -56,9 +56,6 @@@ put the battery status into the right h
  A non zero value activates a handler, which is called when a command can not
  be found. The handler is defined by GRML_ZSH_CNF_HANDLER (see below).
  
 -: **GRML_ALWAYS_LOAD_ALL**
 -Enables the whole Grml setup for root, if set to a non zero value.
 -
  : **GRML_ZSH_CNF_HANDLER**
  This variable contains the handler to be used by COMMAND_NOT_FOUND (see above)
  and defaults to "/usr/share/command-not-found/command-not-found".
@@@ -295,6 -298,9 +295,6 @@@ available via the usual history lookup 
  //grmlzshrc// sets some environment variables, which influence the
  behaviour of applications.
  
 -: **BROWSER**
 -If X is running this is set to "firefox", otherwise to "w3m".
 -
  : **COLORTERM**
  Set to "yes". Some applications read this to learn about properties
  of the terminal they are running in.
@@@ -314,6 -320,10 +314,6 @@@ already set otherwise
  : **PAGER**
  Set less(1) as default pager, if not already set to something different.
  
 -: **QTDIR**
 -Holds the path to shared files for the C++ application framework QT
 -(version 3 or 4).
 -
  : **SHELL**
  Set explicitly to /bin/zsh, to prevent certain terminal emulators to
  default to /bin/sh or /bin/bash.
@@@ -434,6 -444,10 +434,6 @@@ Brings a job, which got suspended with 
  //grmlzshrc// comes with a wide array of defined shell functions to ease the
  user's life.
  
 -: **2html()**
 -Converts plaintext files to HTML using vim. The output is written to
 -<filename>.html.
 -
  : **855resolution()**
  If 915resolution is available, issues a warning to the user to run it instead
  to modify the resolution on intel graphics chipsets.
@@@ -443,23 -457,54 +443,23 @@@ Lists files in current directory, whic
  last N days. N is an integer to be passed as first and only argument.
  If no argument is specified N is set to 1.
  
 -: **agoogle()**
 -Searches for USENET postings from authors using google groups.
 -
  : **allulimit()**
  Sets all ulimit values to "unlimited".
  
 -: **ansi-colors()**
 -Prints a colored table of available ansi color codes (to be used in escape
 -sequences) and the colors they represent.
 -
  : **any()**
  Lists processes matching given pattern.
  
 -: **aoeu(), asdf(), uiae()**
 -Pressing the 'asdf' keys toggles between dvorak or neon and us keyboard
 -layout.
 -
 -: **apache2-ssl-certificate()**
 -Advices the user how to create self signed certificates.
 -
  : **asc()**
  Login on the host provided as argument using autossh. Then reattach a GNU screen
  session if a detached session is around or detach a currently attached screen or
  else start a new screen.  This is especially useful for roadwarriors using GNU
  screen and ssh.
  
 -: **audioburn()**
 -Burns the files in ~/ripps (see audiorip() below) to an audio CD.
 -Then prompts the user if she wants to remove that directory. You might need
 -to tell audioburn which cdrom device to use like:
 -"DEVICE=/dev/cdrom audioburn"
 -
 -: **audiorip()**
 -Creates directory ~/ripps, if it does not exist. Then rips audio CD into
 -it. Then prompts the user if she wants to burn a audio CD with audioburn()
 -(see above). You might need to tell audiorip which cdrom device to use like:
 -"DEVICE=/dev/cdrom audioburn"
 -
  : **bk()**
  Simple backup of a file or directory using cp(1). The target file name is the
  original name plus a time stamp attached. Symlinks and file attributes like mode,
  ownership and timestamps are preserved.
  
 -: **cdiff()**
 -Runs a recursive diff(1) over two given directories trying to find the
 -smallest set of changes. Three lines of context will be printed and binary
 -files filtered out.
 -
  : **cdrecord()**
  If the original cdrecord is not installed, issues a warning to the user to
  use the wodim binary instead. Wodim is the debian fork of Joerg Schillings
@@@ -487,9 -532,35 +487,9 @@@ grml systems with autologin
  Changes current directory to the one supplied by argument and lists the files
  in it, including file names starting with ".".
  
 -: **cvsa()**
 -Adds and commits the given files using cvs(1). The commit message will be
 -'initial checkin'.
 -
 -: **cvsd()**
 -Shows a cvs diff of the arguments in $PAGER.
 -
 -: **cvsl()**
 -Shows the cvs log in $PAGER.
 -
 -: **cvsq()**
 -Runs a cvs update.
 -
 -: **cvsr()**
 -Generates a changelog using rcs2log and shows it in $PAGER.
 -
 -: **cvss()**
 -Shows cvs status of given files.
 -
  : **dchange()**
  Shows the changelog of given package in $PAGER.
  
 -: **debbug()**
 -Searches the Debian bug tracking system (bugs.debian.org) for Bug numbers,
 -email addresses of submitters or any string given on the command line.
 -
 -: **debbugm()**
 -Shows bug report for debian given by number in mailbox format.
 -
  : **debian2hd()**
  Tells the user to use grml-debootstrap, if she wants to install debian to
  harddisk.
@@@ -499,18 -570,81 +499,18 @@@ A trick from $LINUX-KERNELSOURCE/Docume
  back interactive responsiveness after suspend, when the system is swapping
  heavily.
  
 -: **dirspace()**
 -Shows the disk usage of the directories given in human readable format;
 -defaults to $path.
 -
 -: **disassemble()**
 -Translates C source code to assembly and ouputs both.
 -
 -: **dmoz()**
 -Searches for the first argument (optional) in the Open Directory Project
 -(See http://www.dmoz.org/docs/en/about.html).
 -
  : **dnews()**
  Shows the NEWS file for the given package in $PAGER.
  
 -: **doc()**
 -Takes packagename as argument. Sets current working directory to
 -/usr/share/doc/<packagename> and prints out a directory listing.
 -
 -: **dwicti()**
 -Looks up the first argument (optional) in the german Wiktionary
 -which is an online dictionary (See: http://de.wiktionary.org/).
 -
  : **edalias()**
  Edit given alias.
  
  : **edfunc()**
  Edit given shell function.
  
 -: **ewicti()**
 -Looks up the first argument (optional in the english Wiktionary
 -which is an online dictionary (See: http://en.wiktionary.org/).
 -
 -: **exirename()**
 -Renames image files based on date/time informations in their exif headers.
 -
 -: **fir()**
 -Opens given URL with Firefox (Iceweasel on Debian). If there is already an
 -instance of firefox running, attaches to the first window found and opens the
 -URL in a new tab (this even works across an ssh session).
 -
 -: **fluxkey-change()**
 -Switches the key combinations for changing current workspace under fluxbox(1)
 -from Alt-[0-9] to Alt-F[0-9] and vice versa by rewriting $HOME/.fluxbox/keys.
 -Requires the window manager to reread configuration to take effect.
 -
  : **freload()**
  Reloads an autoloadable shell function (See autoload in zshbuiltins(1)).
  
 -: **genthumbs()**
 -A simple thumbnails generator. Resizes images (i. e. files that end in ".jpg",
 -".jpeg", ".gif" or ".png") to 100x200. Output files are named "thumb-<original
 -filename>". Creates an index.html with title "Images" showing the
 -thumbnails as clickable links to the respective original file.
 -//Warning:// On start genthumbs() silently removes a possibly existing "index.html"
 -and all files and/or directories beginning with "thumb-" in current directory!
 -
 -: **get_tw_cli()**
 -Fetches 3ware RAID controller software using get_3ware(1).
 -
 -: **gex()**
 -Performs an exact (i. e. quoted) web search using Google.
 -
 -: **ggogle()**
 -Searches the arguments on Google Groups, a web to USENET gateway.
 -
 -: **google()**
 -Searches the search engine Google using arguments as search string.
 -
 -: **greph()**
 -Searches the zsh command history for a regular expression.
 -
 -: **hex()**
 -Prints the hexadecimal representation of the number supplied as argument
 -(base ten only).
 -
  : **hgdi()**
  Use GNU diff with options -ubwd for mercurial.
  
@@@ -521,6 -655,18 +521,6 @@@ argument means last revision)
  : **hidiff()**
  Outputs highlighted diff; needs highstring(1).
  
 -: **hl()**
 -Shows source files in less(1) with syntax highlighting. Run "hl -h"
 -for detailed usage information.
 -
 -: **ic_get()**
 -Queries IMAP server (first parameter) for its capabilities. Takes
 -port number as optional second argument.
 -
 -: **ipv6-tunnel()**
 -Sets up an IPv6 tunnel on interface sit1. Needs one argument -
 -either "start", "stop" or "status".
 -
  : **is4()**
  Returns true, if zsh version is equal or greater than 4, else false.
  
@@@ -558,15 -704,79 +558,15 @@@ environment variables to UTF-8
  : **isutfenv()**
  Returns true, if run within an utf environment, else false.
  
 -: **iwclient()**
 -Searches a wireless interface and runs dhclient(8) on it.
 -
 -: **lcheck()**
 -Lists libraries that define the symbol containing the string given as
 -parameter.
 -
 -: **limg()**
 -Lists images (i. e. files ending with ".jpg", ".gif" or ".png") in current
 -directory.
 -
 -: **linenr()**
 -Prints specified range of (numbered) lines of a file.
 -Usage: linenr <start>[,<end>] <file>
 -
 -: **lsdisk()**
 -Uses udev's /dev/disk to list block devices with their LABEL, UUID and IDs.
 -
 -: **makereadable()**
 -Creates a PostScript and a PDF file (basename as first argument) from
 -source code files.
 -
 -: **man2()**
 -Displays manpage in a streched style.
 -
 -: **manzsh()**
 -Shows the zshall manpage and jumps to the first match of the regular
 -expression optionally given as argument (Needs qma(1)).
 -
 -: **mcd()**
 +: **mkcd()**
  Creates directory including parent directories, if necessary. Then changes
  current working directory to it.
  
 -: **mdiff()**
 -Diffs the two arguments recursively and writes the
 -output (unified format) to a timestamped file.
 -
 -: **memusage()**
 -Prints the summarized memory usage in bytes.
 -
 -: **mggogle()**
 -Searches Google Groups for a USENET message-ID.
 -
 -: **minimal-shell()**
 -Spawns a minimally set up MirBSD Korn shell. It references no files in /usr,
 -so that file system can be unmounted.
 -
 -: **mkaudiocd()**
 -Renames all mp3 files in ~/ripps (see audiorip above) to lowercase and
 -replaces spaces in file names with underscores. Then mkaudiocd()
 -normalizes the files and recodes them to WAV.
 -
 -: **mkiso()**
 -Creates an iso9660 filesystem image with Rockridge and Joliet extensions
 -enabled using mkisofs(8). Prompts the user for volume name, filename and
 -target directory.
 -
 -: **mkmaildir()**
 -Creates a directory with first parameter as name inside $MAILDIR_ROOT
 -(defaults to $HOME/Mail) and subdirectories cur, new and tmp.
 -
 -: **mmake()**
 -Runs "make install" and logs the output under ~/.errorlogs/; useful for
 -a clean deinstall later.
 -
  : **modified()**
  Lists files in current directory, which have been modified within the
  last N days. N is an integer to be passed as first and only argument.
  If no argument is specified N is set to 1.
  
 -: **netcraft()**
 -Asks netcraft.com for informations about the site given as argument.
 -
  : **nt()**
  A helper function for the "e" glob qualifier to list all files newer
  than a reference file.
@@@ -579,14 -789,72 +579,14 @@@ Example usages
  % ls -l *(e:'nt /reference/file':)
  ```
  
 -: **oleo()**
 -Translates the given word using the english - german online
 -dictionary dict.leo.org.
 -
 -: **peval()**
 -Evaluates a perl expression; useful as command line
 -calculator, therefore also available as "calc".
 -
 -: **plap()**
 -Lists all occurrences of the string given as argument in current $PATH.
 -
  : **profile()**
  Runs a command in $SHELL with profiling enabled (See startup variable
  ZSH_PROFILE_RC above).
  
 -: **purge()**
 -Removes temporary files from current directory. Asks for confirmation. Uses sudo if necessary.
 -In detail it purges
 - - common temp files like "*~", ".*~", "#*#", "*.o", "a.out", "*.orig", "*.rej", "*.cmo", "*.cmi" and ".*.swp"
 - - core dumps
 - - debconf backup files: "*.dpkg-old", "*.dkpg-new", "*.dpkg-dist"
 - - gentoo dispatch-conf backups: ".cfg0000_*", ".mrg0000_*"
 - - precompiled python code ("*.pyc", "*.pyo") as long as matching "*.py" source is also present
 - - LaTeX temp files i.e. "*.(log|toc|aux|nav|snm|out|tex.backup|bbl|blg|bib.backup|vrb|lof|lot|hd|idx)" for any present "*.tex"
 - - ghc temp files, as long as matching "*.hs" or "*.lhs" is also present
 - - "*.mood(D)" Files which are missing their corresponding audio file
 -
 -: **readme()**
 -Opens all README-like files in current working directory with the program
 -defined in the $PAGER environment variable.
 -
 -: **refunc()**
 -Reloads functions given as parameters.
 -
 -: **regcheck()**
 -Checks whether a regular expression (first parameter) matches a string
 -(second parameter) using perl.
 -
 -: **rundirs()**
 -Takes as first parameter a quoted string containing an exectuable command or function with arguments.
 -Following that it takes a bunch of directories, which will then be traversed, executing the
 -first argument in each one. E.g.: rundirs purge . **/*(/-/)
 -
  : **salias()**
  Creates an alias whith sudo prepended, if $EUID is not zero. Run "salias -h"
  for details. See also xunfunction() below.
  
 -: **selhist()**
 -Greps the history for the string provided as parameter and shows the numbered
 -findings in default pager. On exit of the pager the user is prompted for a
 -number. The shells readline buffer is then filled with the corresponding
 -command line.
 -
 -: **setenv()**
 -Reimplementation of the csh(1) builtin setenv.
 -
 -: **show-archive()**
 -Lists the contents of a (compressed) archive with the appropriate programs.
 -The choice is made along the filename extension.
 -
 -: **shtar()**
 -Lists the content of a gzipped tar archive in default pager.
 -
 -: **shzip()**
 -Shows the content of a zip archive in default pager.
 -
  : **simple-extract()**
  Tries to uncompress/unpack given files with the appropriate programs. If an URI
  starting with https, http or ftp is provided simple-extract tries to download
@@@ -597,6 -865,24 +597,6 @@@ ending. simple-extract will not delete 
  : **sll()**
  Prints details of symlinks given as arguments.
  
 -: **slow_print()**
 -Prints the arguments slowly by sleeping 0.08 seconds between each character.
 -
 -: **smartcompress()**
 -Compresses/archives the file given as first parameter. Takes an optional
 -second argument, which denotes the compression/archive type as typical
 -filename extension; defaults to "tar.gz".
 -
 -: **smart-indent()**
 -Indents C source code files given; uses Kernighan & Ritchie style.
 -
 -: **sshot()**
 -Creates directory named shots in user's home directory, if it does not yet
 -exist and changes current working directory to it. Then sleeps 5 seconds,
 -so you have plenty of time to switch desktops/windows. Then makes a screenshot
 -of the current desktop. The result is stored in ~/shots to a timestamped
 -jpg file.
 -
  : **ssl-cert-fingerprints**
  Prints the SHA512, SHA256, SHA1 and MD5 digest of a x509 certificate.
  First and only parameter must be a file containing a certificate. Use
@@@ -622,29 -908,71 +622,29 @@@ Example usage
  % Restart ssh
  ```
  
 -: **status()**
 -Shows some information about current system status.
 -
 -: **swiki()**
 -Searches articles in the german Wikipedia for the term given as argument.
 -
  : **trans()**
  Translates a word from german to english (-D) or vice versa (-E).
  
  : **uchange()**
  Shows upstreams changelog of a given package in $PAGER.
  
 -: **udiff()**
 -Makes a unified diff of the command line arguments trying hard to find a
 -smaller set of changes. Descends recursively into subdirectories. Ignores
 -hows some information about current status.
 -
 -: **uopen()**
 -Downloads and displays a file using a suitable program for its
 -Content-Type.
 -
  : **uprint()**
  Works around the "print -l ${(u)foo}"-limitation on zsh older than 4.2.
  
 -: **urlencode()**
 -Takes a string as its first argument and prints it RFC 2396 URL encoded to
 -standard out.
 -
  : **utf2iso()**
  Changes every occurrence of the string UTF-8 or utf-8 in environment
  variables to iso885915.
  
 -: **viless()**
 -Vim as pager.
 -
  : **vim()**
  Wrapper for vim(1). It tries to set the title and hands vim the environment
  variable VIM_OPTIONS on the command line. So the user may define command
  line options, she always wants, in her .zshrc.local.
  
 -: **vman()**
 -Use vim(1) as manpage reader.
 -
  : **whatwhen()**
  Searches the history for a given pattern and lists the results by date.
  The first argument is the search pattern. The second and third ones are
  optional and denote a search range (default: -100).
  
 -: **weather()**
 -Retrieves and prints weather information from "http://weather.noaa.gov".
 -The first and only argument is the ICAO code for the desired station.
 -For a list of ICAO codes see
 -"http://en.wikipedia.org/wiki/List_of_airports_by_ICAO_code".
 -
 -: **wikide()**
 -Looks up the argument on Wikipedia (german).
 -
 -: **wikien()**
 -Looks up the argument on Wikipedia (english).
 -
 -: **wodeb()**
 -Searches the list of official debian packages for the term given as
 -first argument. The optional second argument denotes the distribution
 -(stable, testing or unstable) and defaults to unstable.
 -
  : **xcat()**
  Tries to cat(1) file(s) given as parameter(s). Always returns true.
  See also xunfunction() below.
@@@ -661,6 -989,12 +661,6 @@@ arguments for details
  : **xunfunction()**
  Removes the functions salias, xcat, xsource, xunfunction and zrcautoload.
  
 -: **zg()**
 -Search for patterns in grml's zshrc using perl. zg takes no or exactly one
 -option plus a non empty pattern. Run zg without any arguments for a listing
 -of available command line switches. For a zshrc not in /etc/zsh, set the
 -GRML_ZSHRC environment variable.
 -
  : **zrcautoload()**
  Wrapper around the autoload builtin. Loads the definitions of functions
  from the file given as argument. Searches $fpath for the file. See also
@@@ -729,6 -1063,24 +729,6 @@@ available packages are fetched from th
  /etc/apt/sources.list. An update should always be performed before an
  upgrade or dist-upgrade; run by sudo, if necessary.
  
 -: **calc** (//peval//)
 -Evaluates a perl expression (see peval() above); useful as a command line
 -calculator.
 -
 -: **CH** (//./configure --help//)
 -Lists available compilation options for building program from source.
 -
 -: **cmplayer** (//mplayer -vo fbdev//)
 -Video player with framebuffer as video output device, so you can watch
 -videos on a virtual tty. Hint: Using fbdev2 allows you to use the shell
 -while watching a movie.
 -
 -: **CO** (//./configure//)
 -Prepares compilation for building program from source.
 -
 -: **cp** (//nocorrect cp//)
 -cp(1) without spelling correction.
 -
  : **da** (//du -sch//)
  Prints the summarized disk usage of the arguments as well as a grand total
  in human readable format.
@@@ -739,10 -1091,25 +739,10 @@@ Builds binary or source packages from s
  : **debs-by-size** (//grep-status -FStatus -sInstalled-Size,Package -n "install ok installed" | paste -sd "  \n" | sort -rn//)
  Prints installed Packages sorted by size (descending).
  
 -: **default** (//echo -en [ escape sequence ]//)
 -Sets font of xterm to "-misc-fixed-medium-r-normal-*-*-140-*-*-c-*-iso8859-15"
 -using escape sequence.
 -
  : **dir** (//ls -lSrah//)
  Lists files (including dot files) sorted by size (biggest last) in long and
  human readable output format.
  
 -: **fblinks** (//links2 -driver fb//)
 -A Web browser on the framebuffer device. So you can browse images and click
 -links on the virtual tty.
 -
 -: **fbmplayer** (//mplayer -vo fbdev -fs -zoom//)
 -Fullscreen Video player with the framebuffer as video output device. So you
 -can watch videos on a virtual tty.
 -
 -: **g** (//git//)
 -Revision control system by Linus Torvalds.
 -
  : **ge** (//grep-excuses//)
  Searches the testing excuses files for a specific maintainer (See:
  grep-excuses(1)).
  : **grep** (//grep --color=auto//)
  Shows grep output in nice colors, if available.
  
 -: **GREP** (//grep -i --color=auto//)
 -Case insensitive grep with colored output.
 -
  : **grml-rebuildfstab** (//rebuildfstab -v -r -config//)
  Scans for new devices and updates /etc/fstab according to the findings.
  
@@@ -775,6 -1145,16 +775,6 @@@ ssh with possible man-in-the-middle att
  : **help-zshglob** (//H-Glob()//)
  Runs the function H-Glob() to expand or explain wildcards.
  
 -: **hide** (//echo -en [ escape sequence ]//)
 -Tries to hide xterm window using escape sequence.
 -
 -: **hidiff** (//histring -fE '^Comparing files .*|^diff .*' | histring -c yellow -fE '^\-.*' | histring -c green -fE '^\+.*'//)
 -If histring(1) is installed, highlight important stuff in diff(1) output.
 -
 -: **huge** (//echo -en [ escape sequence ]//)
 -Sets huge font in xterm ("-misc-fixed-medium-r-normal-*-*-210-*-*-c-*-iso8859-15")
 -using escape sequence.
 -
  : **j** (//jobs -l//)
  Prints status of jobs in the current shell session in long format.
  
@@@ -789,6 -1169,10 +789,6 @@@ starting with "."
  : **lad** (//ls -d .*(/)//)
  Lists the dot directories (not their contents) in current directory.
  
 -: **large** (//echo -en [ escape sequence ]//)
 -Sets large font in xterm ("-misc-fixed-medium-r-normal-*-*-150-*-*-c-*-iso8859-15")
 -using escape sequence.
 -
  : **lh** (//ls -hAl --color=auto//)
  Lists files in long and human readable output format in nice colors,
  if available. Includes file names starting with "." except "." and
@@@ -824,9 -1208,15 +824,15 @@@ Lists symbolic links in current directo
  : **lsnew** (//ls -rl *(D.om[1,10])//)
  Displays the ten newest files (long output format).
  
+ : **lsnewdir** (//ls -rthdl *(/om[1,10]) .*(D/om[1,10])//)
+ Displays the ten newest directories and ten newest .directories.
  : **lsold** (//ls -rtlh *(D.om[1,10])//)
  Displays the ten oldest files (long output format).
  
+ : **lsolddir** (//ls -rthdl *(/Om[1,10]) .*(D/Om[1,10])//)
+ Displays the ten oldest directories and ten oldest .directories.
  : **lss** (//ls -l *(s,S,t)//)
  Lists files in current directory that have the setuid, setgid or sticky bit
  set.
@@@ -841,15 -1231,32 +847,15 @@@ world executable (long output format)
  : **lsx** (//ls -l *(*)//)
  Lists only executable files.
  
 -: **md** (//mkdir -p//)
 -Creates directory including parent directories, if necessary
 -
  : **mdstat** (//cat /proc/mdstat//)
  Lists all active md (i.e. linux software raid) devices with some information
  about them.
  
 -: **medium** (//echo -en [ escape sequence ]//)
 -Sets medium sized font
 -("-misc-fixed-medium-r-normal--13-120-75-75-c-80-iso8859-15") in xterm
 -using escape sequence.
 -
 -: **mkdir** (//nocorrect mkdir//)
 -mkdir(1) without spelling correction.
 -
  : **mq** (//hg -R $(readlink -f $(hg root)/.hg/patches)//)
  Executes the commands on the versioned patch queue from current repository.
  
 -: **mv** (//nocorrect mv//)
 -mv(1) without spelling correction.
 -
 -: **rd** (//rmdir//)
 -Short rmdir(1) (remove directory).
 -
 -: **rm** (//nocorrect rm//)
 -rm(1) without spelling correction.
 +: **rmcdir** (//'cd ..; rmdir $OLDPWD || cd $OLDPWD//)
 +rmdir current working directory
  
  : **screen** (///usr/bin/screen -c ${HOME}/.screenrc//)
  If invoking user is root, starts screen session with /etc/grml/screenrc
@@@ -857,6 -1264,39 +863,6 @@@ as config file. If invoked by a regula
  with users .screenrc config if it exists, else use /etc/grml/screenrc_grml
  as configuration.
  
 -: **rw-** (//chmod 600//)
 -Grants read and write permission of a file to the owner and nobody else.
 -
 -: **rwx** (//chmod 700//)
 -Grants read, write and execute permission of a file to the owner and nobody
 -else.
 -
 -: **r--** (//chmod 644//)
 -Grants read and write permission of a file to the owner and read-only to
 -anybody else.
 -
 -: **r-x** (//chmod 755//)
 -Grants read, write and execute permission of a file to the owner and
 -read-only plus execute permission to anybody else.
 -
 -: **S** (//screen//)
 -Short for screen(1).
 -
 -: **s** (//ssh//)
 -Short for ssh(1).
 -
 -: **semifont** (//echo -en [ escape sequence ]//)
 -Sets font of xterm to
 -"-misc-fixed-medium-r-semicondensed-*-*-120-*-*-*-*-iso8859-15" using
 -escape sequence.
 -
 -: **small** (//echo -en [ escape sequence ]//)
 -Sets small xterm font ("6x10") using escape sequence.
 -
 -: **smartfont** (//echo -en [ escape sequence ]//)
 -Sets font of xterm to "-artwiz-smoothansi-*-*-*-*-*-*-*-*-*-*-*-*" using
 -escape sequence.
 -
  : **su** (//sudo su//)
  If user is running a grml live-CD, dont ask for any password, if she
  wants a root shell.
@@@ -869,9 -1309,22 +875,9 @@@ http://www.cl.cam.ac.uk/~mgk25/unicode.
  Sets mode from ISO 2022 to UTF-8 (See:
  http://www.cl.cam.ac.uk/~mgk25/unicode.html#term).
  
 -: **tiny** (//echo -en [ escape sequence ]//)
 -Sets tiny xterm font
 -("-misc-fixed-medium-r-normal-*-*-80-*-*-c-*-iso8859-15") using escape
 -sequence.
 -
  : **tlog** (//tail -f /var/log/syslog//)
  Prints syslog continuously (See tail(1)).
  
 -: **top10** (//print -l ? ${(o)history%% *} | uniq -c | sort -nr | head -n 10//)
 -Prints the ten most used shell commands.
 -
 -: **truec** (//truecrypt [ mount options ]//)
 -Mount a truecrypt volume with some reasonable mount options
 -("rw,sync,dirsync,users,uid=1000,gid=users,umask=077" and "utf8", if
 -available).
 -
  : **up** (//aptitude update ; aptitude safe-upgrade//)
  Performs a system update followed by a system upgrade using aptitude; run
  by sudo, if necessary. See au and ag above.
  After calling, characters of URLs as typed get automatically escaped, if necessary, to
  protect them from the shell.
  
 -: **0** (//return 0//)
 -Gives a clean prompt (i.e. without $?).
 -
  : **$(uname -r)-reboot** (//kexec -l --initrd=/boot/initrd.img-"$(uname -r)" --command-line=\"$(cat /proc/cmdline)\" /boot/vmlinuz-"$(uname -r)"//)
  Reboots using kexec(8) and thus reduces boot time by skipping hardware initialization of BIOS/firmware.
  
  : **...** (//cd ../..///)
  Changes current directory two levels higher.
  
 -: **?** (//qma zshall//)
 -Runs the grml script qma (quick manual access) to build the collected man
 -pages for the z-shell. This compressed file is kept at
 -~/man/zshall.txt.lzo Once it is built, the second use of the alias '?' is
 -fast. See "man qma" for further information.
 -
  
  = AUXILIARY FILES =
  This is a set of files, that - if they exist - can be used to customize the
diff --combined etc/zsh/zshrc
@@@ -30,7 -30,7 +30,7 @@@
  # Doing so makes sure the right people get your patches for review and
  # possibly inclusion.
  
 -# zsh-refcard-tag documentation: {{{
 +# zsh-refcard-tag documentation:
  #   You may notice strange looking comments in this file.
  #   These are there for a purpose. grml's zsh-refcard can now be
  #   automatically generated from the contents of the actual configuration
  #   Furthermore, in 'grml-zsh-refcard.tex.in' @@INSERT-aliases@@ is
  #   exactly the same as @@INSERT-aliases-default@@. If you want a list of
  #   *all* aliases, for example, use @@INSERT-aliases-all@@.
 -#}}}
  
 -# zsh profiling {{{
 +# zsh profiling
  # just execute 'ZSH_PROFILE_RC=1 zsh' and run 'zprof' to get the details
  if [[ $ZSH_PROFILE_RC -gt 0 ]] ; then
      zmodload zsh/zprof
  fi
 -# }}}
  
  # load .zshrc.pre to give the user the chance to overwrite the defaults
  [[ -r ${HOME}/.zshrc.pre ]] && source ${HOME}/.zshrc.pre
  
 -# {{{ check for version/system
 +# check for version/system
  # check for versions (compatibility reasons)
  is4(){
      [[ $ZSH_VERSION == <4->* ]] && return 0
@@@ -139,14 -141,12 +139,14 @@@ is43()
  }
  
  is433(){
 -    [[ $ZSH_VERSION == 4.3.<3->* || $ZSH_VERSION == 4.<4->* || $ZSH_VERSION == <5->* ]] && return 0
 +    [[ $ZSH_VERSION == 4.3.<3->* || $ZSH_VERSION == 4.<4->* \
 +                                 || $ZSH_VERSION == <5->* ]] && return 0
      return 1
  }
  
  is439(){
 -    [[ $ZSH_VERSION == 4.3.<9->* || $ZSH_VERSION == 4.<4->* || $ZSH_VERSION == <5->* ]] && return 0
 +    [[ $ZSH_VERSION == 4.3.<9->* || $ZSH_VERSION == 4.<4->* \
 +                                 || $ZSH_VERSION == <5->* ]] && return 0
      return 1
  }
  
@@@ -165,10 -165,7 +165,10 @@@ isgrmlcd()
  if isgrml ; then
  #f1# Checks whether or not you're running grml-small
      isgrmlsmall() {
 -        [[ ${${${(f)"$(</etc/grml_version)"}%% *}##*-} == 'small' ]] && return 0 ; return 1
 +        if [[ ${${${(f)"$(</etc/grml_version)"}%% *}##*-} == 'small' ]]; then
 +            return 0
 +        fi
 +        return 1
      }
  else
      isgrmlsmall() { return 1 }
@@@ -251,78 -248,45 +251,78 @@@ function zrcautoload() 
      return 0
  }
  
 -# Load is-at-least() for more precise version checks
 -# Note that this test will *always* fail, if the is-at-least
 -# function could not be marked for autoloading.
 +# Load is-at-least() for more precise version checks Note that this test will
 +# *always* fail, if the is-at-least function could not be marked for
 +# autoloading.
  zrcautoload is-at-least || is-at-least() { return 1 }
  
 -# }}}
 -
 -# {{{ set some important options (as early as possible)
 -setopt append_history       # append history list to the history file (important for multiple parallel zsh sessions!)
 -is4 && setopt SHARE_HISTORY # import new commands from the history file also in other zsh-session
 -setopt extended_history     # save each command's beginning timestamp and the duration to the history file
 -is4 && setopt histignorealldups # If  a  new  command  line being added to the history
 -                            # list duplicates an older one, the older command is removed from the list
 -setopt histignorespace      # remove command lines from the history list when
 -                            # the first character on the line is a space
 -setopt auto_cd              # if a command is issued that can't be executed as a normal command,
 -                            # and the command is the name of a directory, perform the cd command to that directory
 -setopt extended_glob        # in order to use #, ~ and ^ for filename generation
 -                            # grep word *~(*.gz|*.bz|*.bz2|*.zip|*.Z) ->
 -                            # -> searches for word not in compressed files
 -                            # don't forget to quote '^', '~' and '#'!
 -setopt longlistjobs         # display PID when suspending processes as well
 -setopt notify               # report the status of backgrounds jobs immediately
 -setopt hash_list_all        # Whenever a command completion is attempted, make sure \
 -                            # the entire command path is hashed first.
 -setopt completeinword       # not just at the end
 -setopt nohup                # and don't kill them, either
 -setopt auto_pushd           # make cd push the old directory onto the directory stack.
 -setopt nonomatch            # try to avoid the 'zsh: no matches found...'
 -setopt nobeep               # avoid "beep"ing
 -setopt pushd_ignore_dups    # don't push the same dir twice.
 -setopt noglobdots           # * shouldn't match dotfiles. ever.
 -setopt noshwordsplit        # use zsh style word splitting
 -setopt unset                # don't error out when unset parameters are used
 -
 -# }}}
 -
 -# setting some default values {{{
 +# set some important options (as early as possible)
 +
 +# append history list to the history file; this is the default but we make sure
 +# because it's required for share_history.
 +setopt append_history
 +
 +# import new commands from the history file also in other zsh-session
 +is4 && setopt share_history
 +
 +# save each command's beginning timestamp and the duration to the history file
 +setopt extended_history
 +
 +# If a new command line being added to the history list duplicates an older
 +# one, the older command is removed from the list
 +is4 && setopt histignorealldups
 +
 +# remove command lines from the history list when the first character on the
 +# line is a space
 +setopt histignorespace
 +
 +# if a command is issued that can't be executed as a normal command, and the
 +# command is the name of a directory, perform the cd command to that directory.
 +setopt auto_cd
 +
 +# in order to use #, ~ and ^ for filename generation grep word
 +# *~(*.gz|*.bz|*.bz2|*.zip|*.Z) -> searches for word not in compressed files
 +# don't forget to quote '^', '~' and '#'!
 +setopt extended_glob
 +
 +# display PID when suspending processes as well
 +setopt longlistjobs
 +
 +# try to avoid the 'zsh: no matches found...'
 +setopt nonomatch
 +
 +# report the status of backgrounds jobs immediately
 +setopt notify
  
 +# whenever a command completion is attempted, make sure the entire command path
 +# is hashed first.
 +setopt hash_list_all
 +
 +# not just at the end
 +setopt completeinword
 +
 +# Don't send SIGHUP to background processes when the shell exits.
 +setopt nohup
 +
 +# make cd push the old directory onto the directory stack.
 +setopt auto_pushd
 +
 +# avoid "beep"ing
 +setopt nobeep
 +
 +# don't push the same dir twice.
 +setopt pushd_ignore_dups
 +
 +# * shouldn't match dotfiles. ever.
 +setopt noglobdots
 +
 +# use zsh style word splitting
 +setopt noshwordsplit
 +
 +# don't error out when unset parameters are used
 +setopt unset
 +
 +# setting some default values
  NOCOR=${NOCOR:-0}
  NOMENU=${NOMENU:-0}
  NOPRECMD=${NOPRECMD:-0}
@@@ -330,9 -294,12 +330,9 @@@ COMMAND_NOT_FOUND=${COMMAND_NOT_FOUND:-
  GRML_ZSH_CNF_HANDLER=${GRML_ZSH_CNF_HANDLER:-/usr/share/command-not-found/command-not-found}
  BATTERY=${BATTERY:-0}
  GRMLSMALL_SPECIFIC=${GRMLSMALL_SPECIFIC:-1}
 -GRML_ALWAYS_LOAD_ALL=${GRML_ALWAYS_LOAD_ALL:-0}
  ZSH_NO_DEFAULT_LOCALE=${ZSH_NO_DEFAULT_LOCALE:-0}
  
 -# }}}
 -
 -# utility functions {{{
 +# utility functions
  # this function checks if a command exists and returns either true
  # or false. This avoids using 'which' and 'whence', which will
  # avoid problems with aliases for which on certain weird systems. :-)
@@@ -489,7 -456,9 +489,7 @@@ zrclocal() 
      return 0
  }
  
 -#}}}
 -
 -# locale setup {{{
 +# locale setup
  if (( ZSH_NO_DEFAULT_LOCALE == 0 )); then
      xsource "/etc/default/locale"
  fi
@@@ -501,8 -470,9 +501,8 @@@ don
  xsource "/etc/sysconfig/keyboard"
  
  TZ=$(xcat /etc/timezone)
 -# }}}
  
 -# {{{ set some variables
 +# set some variables
  if check_com -c vim ; then
  #v#
      export EDITOR=${EDITOR:-vim}
@@@ -554,20 -524,15 +554,20 @@@ export LESS_TERMCAP_so=$'\E[01;44;33m
  export LESS_TERMCAP_ue=$'\E[0m'
  export LESS_TERMCAP_us=$'\E[01;32m'
  
 -MAILCHECK=30       # mailchecks
 -REPORTTIME=5       # report about cpu-/system-/user-time of command if running longer than 5 seconds
 -watch=(notme root) # watch for everyone but me and root
 +# mailchecks
 +MAILCHECK=30
 +
 +# report about cpu-/system-/user-time of command if running longer than
 +# 5 seconds
 +REPORTTIME=5
 +
 +# watch for everyone but me and root
 +watch=(notme root)
  
  # automatically remove duplicates from these arrays
  typeset -U path cdpath fpath manpath
 -# }}}
  
 -# {{{ keybindings
 +# keybindings
  if [[ "$TERM" != emacs ]] ; then
      [[ -z "$terminfo[kdch1]" ]] || bindkey -M emacs "$terminfo[kdch1]" delete-char
      [[ -z "$terminfo[khome]" ]] || bindkey -M emacs "$terminfo[khome]" beginning-of-line
@@@ -641,8 -606,7 +641,8 @@@ bindkey '\e[B'  down-line-or-searc
  ## alt-backspace is already the default for backwards-delete-word
  ## let's also set alt-delete for deleting current word (right of cursor)
  #k# Kill right-side word
 -bindkey "3~" delete-word
 +bindkey '^[[3~'   delete-word # Modeswitch
 +bindkey '^[[3;3~' delete-word # Alt_L
  
  ## use Ctrl-left-arrow and Ctrl-right-arrow for jumping to word-beginnings on the CL
  bindkey "\e[5C" forward-word
@@@ -729,8 -693,9 +729,8 @@@ if is439 ; the
      bindkey '^r' history-incremental-pattern-search-backward
      bindkey '^s' history-incremental-pattern-search-forward
  fi
 -# }}}
  
 -# a generic accept-line wrapper {{{
 +# a generic accept-line wrapper
  
  # This widget can prevent unwanted autocorrections from command-name
  # to _command-name, rehash automatically on enter and call any number
@@@ -876,7 -841,9 +876,7 @@@ zle -N accept-lin
  zle -N Accept-Line
  zle -N Accept-Line-HandleContext
  
 -# }}}
 -
 -# power completion - abbreviation expansion {{{
 +# power completion - abbreviation expansion
  # power completion / abbreviation expansion / buffer expansion
  # see http://zshwiki.org/home/examples/zleiab for details
  # less risky than the global aliases but powerful as well
@@@ -907,7 -874,7 +907,7 @@@ abk=
      'co'   './configure && make && sudo make install'
  )
  
 -globalias() {
 +zleiab() {
      emulate -L zsh
      setopt extendedglob
      local MATCH
      LBUFFER+=${abk[$MATCH]:-$MATCH}
  }
  
 -zle -N globalias
 -bindkey ",." globalias
 -# }}}
 +zle -N zleiab
 +bindkey ",." zleiab
  
 -# {{{ autoloading
 +# autoloading
  zrcautoload zmv    # who needs mmv or rename?
  zrcautoload history-search-end
  
@@@ -1075,8 -1043,7 +1075,8 @@@ if check_com -c screen || check_com -c 
              tmux -q capture-pane \; save-buffer -b 0 $TMPFILE \; delete-buffer -b 0
          else
              screen -X hardcopy $TMPFILE
 -            #screen sucks, it dumps in latin1, apparently always. so recode it to system charset
 +            # screen sucks, it dumps in latin1, apparently always. so recode it
 +            # to system charset
              check_com recode && recode latin1 $TMPFILE
          fi
          _screen_display_wordlist=( ${(QQ)$(<$TMPFILE)} )
      compdef -k _complete_screen_display complete-word '^XS'
  fi
  
 -# }}}
 -
 -# {{{ history
 +# history
  
  ZSHDIR=$HOME/.zsh
  
@@@ -1098,7 -1067,9 +1098,7 @@@ HISTFILE=$HOME/.zsh_histor
  isgrmlcd && HISTSIZE=500  || HISTSIZE=5000
  isgrmlcd && SAVEHIST=1000 || SAVEHIST=10000 # useful for setopt append_history
  
 -# }}}
 -
 -# dirstack handling {{{
 +# dirstack handling
  
  DIRSTACKSIZE=${DIRSTACKSIZE:-20}
  DIRSTACKFILE=${DIRSTACKFILE:-${HOME}/.zdirs}
@@@ -1119,7 -1090,9 +1119,7 @@@ chpwd() 
      fi
  }
  
 -# }}}
 -
 -# directory based profiles {{{
 +# directory based profiles
  
  if is433 ; then
  
@@@ -1206,7 -1179,9 +1206,7 @@@ chpwd_functions=( ${chpwd_functions} ch
  
  fi # is433
  
 -# }}}
 -
 -# {{{ display battery status on right side of prompt via running 'BATTERY=1 zsh'
 +# display battery status on right side of prompt via running 'BATTERY=1 zsh'
  if [[ $BATTERY -gt 0 ]] ; then
      if ! check_com -c acpi ; then
          BATTERY=0
@@@ -1227,7 -1202,9 +1227,7 @@@ if [[ $BATTERY -gt 0 ]] ; the
      fi
  fi
  }
 -# }}}
 -
 -# set colors for use in prompts {{{
 +# set colors for use in prompts
  if zrcautoload colors && colors 2>/dev/null ; then
      BLUE="%{${fg[blue]}%}"
      RED="%{${fg_bold[red]}%}"
@@@ -1248,7 -1225,9 +1248,7 @@@ els
      NO_COLOUR=$'%{\e[0m%}'
  fi
  
 -# }}}
 -
 -# gather version control information for inclusion in a prompt {{{
 +# gather version control information for inclusion in a prompt
  
  if zrcautoload vcs_info; then
      # `vcs_info' in zsh versions 4.3.10 and below have a broken `_realpath'
@@@ -1285,7 -1264,10 +1285,7 @@@ els
      zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat "%b${RED}:${YELLOW}%r"
  fi
  
 -
 -# }}}
 -
 -# command not found handling {{{
 +# command not found handling
  
  (( ${COMMAND_NOT_FOUND} == 1 )) &&
  function command_not_found_handler() {
      return 1
  }
  
 -# }}}
 -
 -# {{{ set prompt
 +# set prompt
  if zrcautoload promptinit && promptinit 2>/dev/null ; then
      promptinit # people should be able to use their favourite prompt
  else
@@@ -1341,7 -1325,7 +1341,7 @@@ is4 && [[ $NOPRECMD -eq 0 ]] && precmd 
          fi
      fi
      # just use DONTSETRPROMPT=1 to be able to overwrite RPROMPT
 -    if [[ $DONTSETRPROMPT -eq 0 ]] ; then
 +    if [[ ${DONTSETRPROMPT:-} -eq 0 ]] ; then
          if [[ $BATTERY -gt 0 ]] ; then
              # update battery (dropped into $PERCENT) information
              battery
      fi
      # adjust title of xterm
      # see http://www.faqs.org/docs/Linux-mini/Xterm-Title.html
 -    [[ ${NOTITLE} -gt 0 ]] && return 0
 +    [[ ${NOTITLE:-} -gt 0 ]] && return 0
      case $TERM in
          (xterm*|rxvt*)
              set_title ${(%):-"%n@%m: %~"}
@@@ -1385,13 -1369,9 +1385,13 @@@ preexec () 
  }
  
  EXITCODE="%(?..%?%1v )"
 -PS2='\`%_> '      # secondary prompt, printed when the shell needs more information to complete a command.
 -PS3='?# '         # selection prompt used within a select loop.
 -PS4='+%N:%i:%_> ' # the execution trace prompt (setopt xtrace). default: '+%N:%i>'
 +# secondary prompt, printed when the shell needs more information to complete a
 +# command.
 +PS2='\`%_> '
 +# selection prompt used within a select loop.
 +PS3='?# '
 +# the execution trace prompt (setopt xtrace). default: '+%N:%i>'
 +PS4='+%N:%i:%_> '
  
  # set variable debian_chroot if running in a chroot with /etc/debian_chroot
  if [[ -z "$debian_chroot" ]] && [[ -r /etc/debian_chroot ]] ; then
  if [[ "$TERM" == dumb ]] ; then
      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)
 +    # 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 [[ $GRMLPROMPT -gt 0 ]] ; then
          PROMPT="${RED}${EXITCODE}${CYAN}[%j running job(s)] ${GREEN}{history#%!} ${RED}%(3L.+.) ${BLUE}%* %D
  ${BLUE}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< "
@@@ -1424,8 -1403,9 +1424,8 @@@ PROMPT="${PROMPT}"'${vcs_info_msg_0_}'"
  if [[ -n "$GRML_CHROOT" ]] ; then
      PROMPT="%{$fg[red]%}(CHROOT) %{$fg_bold[red]%}%n%{$fg_no_bold[white]%}@%m %40<...<%B%~%b%<< %\# "
  fi
 -# }}}
  
 -# {{{ 'hash' some often used directories
 +# 'hash' some often used directories
  #d# start
  hash -d deb=/var/cache/apt/archives
  hash -d doc=/usr/share/doc
@@@ -1437,30 -1417,25 +1437,30 @@@ hash -d templ=/usr/share/doc/grml-templ
  hash -d tt=/usr/share/doc/texttools-doc
  hash -d www=/var/www
  #d# end
 -# }}}
  
 -# {{{ some aliases
 +# some aliases
  if check_com -c screen ; then
      if [[ $UID -eq 0 ]] ; then
 -        [[ -r /etc/grml/screenrc ]] && alias screen="${commands[screen]} -c /etc/grml/screenrc"
 +        if [[ -r /etc/grml/screenrc ]]; then
 +            alias screen="${commands[screen]} -c /etc/grml/screenrc"
 +        fi
      elif [[ -r $HOME/.screenrc ]] ; then
          alias screen="${commands[screen]} -c $HOME/.screenrc"
      else
          if [[ -r /etc/grml/screenrc_grml ]]; then
              alias screen="${commands[screen]} -c /etc/grml/screenrc_grml"
          else
 -            [[ -r /etc/grml/screenrc ]] && alias screen="${commands[screen]} -c /etc/grml/screenrc"
 +            if [[ -r /etc/grml/screenrc ]]; then
 +                alias screen="${commands[screen]} -c /etc/grml/screenrc"
 +            fi
          fi
      fi
  fi
  
  # do we have GNU ls with color-support?
 -if ls --help 2>/dev/null | grep -- --color= >/dev/null && [[ "$TERM" != dumb ]] ; then
 +if ls --help 2>/dev/null | grep -- --color= >/dev/null \
 +   && [[ "$TERM" != dumb ]]
 +then
      #a1# execute \kbd{@a@}:\quad ls with colors
      alias ls='ls -b -CF --color=auto'
      #a1# execute \kbd{@a@}:\quad list all files, with colors
@@@ -1487,6 -1462,16 +1487,6 @@@ if [[ -x /sbin/kexec ]] && [[ -r /proc/
      alias "$(uname -r)-reboot"="kexec -l --initrd=/boot/initrd.img-"$(uname -r)" --command-line=\"$(cat /proc/cmdline)\" /boot/vmlinuz-"$(uname -r)""
  fi
  
 -alias cp='nocorrect cp'         # no spelling correction on cp
 -alias mkdir='nocorrect mkdir'   # no spelling correction on mkdir
 -alias mv='nocorrect mv'         # no spelling correction on mv
 -alias rm='nocorrect rm'         # no spelling correction on rm
 -
 -#a1# Execute \kbd{rmdir}
 -alias rd='rmdir'
 -#a1# Execute \kbd{mkdir}
 -alias md='mkdir'
 -
  # see http://www.cl.cam.ac.uk/~mgk25/unicode.html#term for details
  alias term2iso="echo 'Setting terminal to iso mode' ; print -n '\e%@'"
  alias term2utf="echo 'Setting terminal to utf-8 mode'; print -n '\e%G'"
@@@ -1511,12 -1496,31 +1511,12 @@@ iso2utf() 
      fi
  }
  
 -# I like clean prompt, so provide simple way to get that
 -check_com 0 || alias 0='return 0'
 -
 -# for really lazy people like mika:
 -check_com S &>/dev/null || alias S='screen'
 -check_com s &>/dev/null || alias s='ssh'
 -
  # especially for roadwarriors using GNU screen and ssh:
  if ! check_com asc &>/dev/null ; then
    asc() { autossh -t "$@" 'screen -RdU' }
    compdef asc=ssh
  fi
  
 -# get top 10 shell commands:
 -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 check_com -c truecrypt ; then
 -    if isutfenv ; then
 -        alias truec='truecrypt --mount-options "rw,sync,dirsync,users,uid=1000,gid=users,umask=077,utf8" '
 -    else
 -        alias truec='truecrypt --mount-options "rw,sync,dirsync,users,uid=1000,gid=users,umask=077" '
 -    fi
 -fi
 -
  #f1# Hints for the use of zsh on grml
  zsh-help() {
      print "$bg[white]$fg[black]
@@@ -1544,6 -1548,10 +1544,6 @@@ very lately
  System wide configuration without touching configuration files of grml
  can take place in /etc/zsh/zshrc.local.
  
 -Normally, the root user (EUID == 0) does not get the whole grml setup.
 -If you want to force the whole setup for that user, too, set
 -GRML_ALWAYS_LOAD_ALL=1 in .zshrc.pre in root'\''s home directory.
 -
  For information regarding zsh start at http://grml.org/zsh/
  
  Take a look at grml'\''s zsh refcard:
@@@ -1561,8 -1569,7 +1561,8 @@@ Basically meant for bash users who are 
  the zsh yet. :)
  
    "NOCOR=1    zsh" => deactivate automatic correction
 -  "NOMENU=1   zsh" => do not use auto menu completion (note: use ctrl-d for completion instead!)
 +  "NOMENU=1   zsh" => do not use auto menu completion
 +                      (note: use ctrl-d for completion instead!)
    "NOPRECMD=1 zsh" => disable the precmd + preexec commands (set GNU screen title)
    "NOTITLE=1  zsh" => disable setting the title of xterms without disabling
                        preexec() and precmd() completely
@@@ -1609,6 -1616,26 +1609,6 @@@ if [[ -r /etc/debian_version ]] ; the
      #a3# Execute \kbd{grep-excuses}
      alias ge='grep-excuses'
  
 -    # debian upgrade
 -    #f3# Execute \kbd{apt-get update \&\& }\\&\quad \kbd{apt-get dist-upgrade}
 -    upgrade() {
 -        emulate -L zsh
 -        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
 -    }
 -
      # get a root shell as normal user in live-cd mode:
      if isgrmlcd && [[ $UID -ne 0 ]] ; then
         alias su="sudo su"
@@@ -1641,13 -1668,44 +1641,13 @@@ EOMES
      fi
  fi
  
 -# get_tw_cli has been renamed into get_3ware
 -if check_com -c 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 compatibility, so provide an alternative therefore
 -if ! check_com -c apache2-ssl-certificate ; then
 -
 -    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.'
 -    print 'To generate a certificate for use with apache2 follow the instructions:'
 -
 -    echo '
 -
 -export RANDFILE=/dev/random
 -mkdir /etc/apache2/ssl/
 -openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem
 -chmod 600 /etc/apache2/ssl/apache.pem
 -
 -Run "grml-tips ssl-certificate" if you need further instructions.
 -'
 -    }
 -fi
 -# }}}
 -
 -# {{{ Use hard limits, except for a smaller stack and no core dumps
 +# Use hard limits, except for a smaller stack and no core dumps
  unlimit
  is425 && limit stack 8192
  isgrmlcd && limit core 0 # important for a live-cd-system
  limit -s
 -# }}}
  
 -# {{{ completion system
 +# completion system
  
  # called later (via is4 && grmlcomp)
  # note: use 'zstyle' for getting current settings
@@@ -1776,7 -1834,7 +1776,7 @@@ grmlcomp() 
      [[ -d $ZSHDIR/cache ]] && zstyle ':completion:*' use-cache yes && \
                              zstyle ':completion::complete:*' cache-path $ZSHDIR/cache/
  
 -    # host completion /* add brackets as vim can't parse zsh's complex cmdlines 8-) {{{ */
 +    # host completion
      if is42 ; then
          [[ -r ~/.ssh/known_hosts ]] && _ssh_hosts=(${${${${(f)"$(<$HOME/.ssh/known_hosts)"}:#[\|]*}%%\ *}%%,*}) || _ssh_hosts=()
          [[ -r /etc/hosts ]] && : ${(A)_etc_hosts:=${(s: :)${(ps:\t:)${${(f)~~"$(</etc/hosts)"}%%\#*}##[:blank:]#[^[:blank:]]#}}} || _etc_hosts=()
      # see upgrade function in this file
      compdef _hosts upgrade
  }
 -# }}}
  
 -# {{{ grmlstuff
 +# grmlstuff
  grmlstuff() {
  # people should use 'grml-x'!
      if check_com -c 915resolution; then
@@@ -1832,16 -1891,19 +1832,16 @@@ graphic chipset.
          }
      fi
  }
 -# }}}
  
 -# {{{ now run the functions
 +# now run the functions
  isgrml && checkhome
  is4    && isgrml    && grmlstuff
  is4    && grmlcomp
 -# }}}
  
 -# {{{ keephack
 +# keephack
  is4 && xsource "/etc/zsh/keephack"
 -# }}}
  
 -# {{{ wonderful idea of using "e" glob qualifier by Peter Stephenson
 +# wonderful idea of using "e" glob qualifier by Peter Stephenson
  # You use it as follows:
  # $ NTREF=/reference/file
  # $ ls -l *(e:nt:)
@@@ -1854,8 -1916,12 +1854,8 @@@ is4 && nt() 
      fi
      [[ $REPLY -nt $NTREF ]]
  }
 -# }}}
 -
 -# shell functions {{{
  
 -#f1# Provide csh compatibility
 -setenv()  { typeset -x "${1}${1:+=}${(@)argv[2,$#]}" }  # csh compatibility
 +# shell functions
  
  #f1# Reload an autoloadable function
  freload() { while (( $# )); do; unfunction $1; autoload -U $1; shift; done }
@@@ -1872,6 -1938,15 +1872,6 @@@ sll() 
      done
  }
  
 -# fast manual access
 -if check_com qma ; then
 -    #f1# View the zsh manual
 -    manzsh()  { qma zshall "$1" }
 -    compdef _man qma
 -else
 -    manzsh()  { /usr/bin/man zshall |  vim -c "se ft=man| se hlsearch" +/"$1" - ; }
 -fi
 -
  # TODO: Is it supported to use pager settings like this?
  #   PAGER='less -Mr' - If so, the use of $PAGER here needs fixing
  # with respect to wordsplitting. (ie. ${=PAGER})
@@@ -2154,6 -2229,8 +2154,6 @@@ help-zle(
  #k# display help for keybindings and ZLE (cycle pages with consecutive use)
  zle -N help-zle && bindkey '^Xz' help-zle
  
 -check_com -c qma && alias ?='qma zshall'
 -
  # grep for running process, like: 'any vim'
  any() {
      emulate -L zsh
@@@ -2176,6 -2253,96 +2176,6 @@@ deswap() 
      print 'Finished, running "swapoff -a; swapon -a" may also be useful.'
  }
  
 -# print hex value of a number
 -hex() {
 -    emulate -L zsh
 -    [[ -n "$1" ]] && printf "%x\n" $1 || { print 'Usage: hex <number-to-convert>' ; return 1 }
 -}
 -
 -# calculate (or eval at all ;-)) with perl => p[erl-]eval
 -# hint: also take a look at zcalc -> 'autoload zcalc' -> 'man zshmodules | less -p MATHFUNC'
 -peval() {
 -    [[ -n "$1" ]] && CALC="$*" || print "Usage: calc [expression]"
 -    perl -e "print eval($CALC),\"\n\";"
 -}
 -functions peval &>/dev/null && alias calc=peval
 -
 -# just press 'asdf' keys to toggle between dvorak and us keyboard layout
 -aoeu() {
 -    echo -n 'Switching to us keyboard layout: '
 -    [[ -z "$DISPLAY" ]] && $SUDO loadkeys us &>/dev/null || setxkbmap us &>/dev/null
 -    echo 'Done'
 -}
 -asdf() {
 -    echo -n 'Switching to dvorak keyboard layout: '
 -    [[ -z "$DISPLAY" ]] && $SUDO loadkeys dvorak &>/dev/null || setxkbmap dvorak &>/dev/null
 -    echo 'Done'
 -}
 -# just press 'asdf' key to toggle from neon layout to us keyboard layout
 -uiae() {
 -    echo -n 'Switching to us keyboard layout: '
 -    setxkbmap us && echo 'Done' || echo 'Failed'
 -}
 -
 -# set up an ipv6 tunnel
 -ipv6-tunnel() {
 -    emulate -L zsh
 -    case $1 in
 -        start)
 -            if ifconfig sit1 2>/dev/null | grep -q 'inet6 addr: 2002:.*:1::1' ; then
 -                print 'ipv6 tunnel already set up, nothing to be done.'
 -                print 'execute: "ifconfig sit1 down ; ifconfig sit0 down" to remove ipv6-tunnel.' ; return 1
 -            else
 -                [[ -n "$PUBLIC_IP" ]] || \
 -                    local PUBLIC_IP=$(ifconfig $(route -n | awk '/^0\.0\.0\.0/{print $8; exit}') | \
 -                                      awk '/inet addr:/ {print $2}' | tr -d 'addr:')
 -
 -                [[ -n "$PUBLIC_IP" ]] || { print 'No $PUBLIC_IP set and could not determine default one.' ; return 1 }
 -                local IPV6ADDR=$(printf "2002:%02x%02x:%02x%02x:1::1" $(print ${PUBLIC_IP//./ }))
 -                print -n "Setting up ipv6 tunnel $IPV6ADDR via ${PUBLIC_IP}: "
 -                ifconfig sit0 tunnel ::192.88.99.1 up
 -                ifconfig sit1 add "$IPV6ADDR" && print done || print failed
 -            fi
 -            ;;
 -        status)
 -            if ifconfig sit1 2>/dev/null | grep -q 'inet6 addr: 2002:.*:1::1' ; then
 -                print 'ipv6 tunnel available' ; return 0
 -            else
 -                print 'ipv6 tunnel not available' ; return 1
 -            fi
 -            ;;
 -        stop)
 -            if ifconfig sit1 2>/dev/null | grep -q 'inet6 addr: 2002:.*:1::1' ; then
 -                print -n 'Stopping ipv6 tunnel (sit0 + sit1): '
 -                ifconfig sit1 down ; ifconfig sit0 down && print done || print failed
 -            else
 -                print 'No ipv6 tunnel found, nothing to be done.' ; return 1
 -            fi
 -            ;;
 -        *)
 -            print "Usage: ipv6-tunnel [start|stop|status]">&2 ; return 1
 -            ;;
 -    esac
 -}
 -
 -# run dhclient for wireless device
 -iwclient() {
 -    sudo dhclient "$(wavemon -d | awk '/device/{print $3}')"
 -}
 -
 -# spawn a minimally set up mksh - useful if you want to umount /usr/.
 -minimal-shell() {
 -    emulate -L zsh
 -    local shell="/bin/mksh"
 -
 -    if [[ ! -x ${shell} ]]; then
 -        printf '`%s'\'' not available, giving up.\n' ${shell} >&2
 -        return 1
 -    fi
 -
 -    exec env -i ENV="/etc/minimal-shellrc" HOME="$HOME" TERM="$TERM" ${shell}
 -}
 -
  # a wrapper for vim, that deals with title setting
  #   VIM_OPTIONS
  #       set this array to a set of options to vim you always want
@@@ -2192,6 -2359,63 +2192,6 @@@ bk() 
      cp -a "$1" "${1}_$(date --iso-8601=seconds)"
  }
  
 -#f1# grep for patterns in grml's zsh setup
 -zg() {
 -#{{{
 -    LANG=C perl -e '
 -
 -sub usage {
 -    print "usage: zg -[anr] <pattern>\n";
 -    print " Search for patterns in grml'\''s zshrc.\n";
 -    print " zg takes no or exactly one option plus a non empty pattern.\n\n";
 -    print "   options:\n";
 -    print "     --  no options (use if your pattern starts in with a dash.\n";
 -    print "     -a  search for the pattern in all code regions\n";
 -    print "     -n  search for the pattern in non-root code only\n";
 -    print "     -r  search in code for everyone (also root) only\n\n";
 -    print "   The default is -a for non-root users and -r for root.\n\n";
 -    print " If you installed the zshrc to a non-default locations (ie *NOT*\n";
 -    print " in /etc/zsh/zshrc) do: export GRML_ZSHRC=\$HOME/.zshrc\n";
 -    print " ...in case you copied the file to that location.\n\n";
 -    exit 1;
 -}
 -
 -if ($ENV{GRML_ZSHRC} ne "") {
 -    $RC = $ENV{GRML_ZSHRC};
 -} else {
 -    $RC = "/etc/zsh/zshrc";
 -}
 -
 -usage if ($#ARGV < 0 || $#ARGV > 1);
 -if ($> == 0) { $mode = "allonly"; }
 -else { $mode = "all"; }
 -
 -$opt = $ARGV[0];
 -if ($opt eq "--")     { shift; }
 -elsif ($opt eq "-a")  { $mode = "all"; shift; }
 -elsif ($opt eq "-n")  { $mode = "nonroot"; shift; }
 -elsif ($opt eq "-r" ) { $mode = "allonly"; shift; }
 -elsif ($opt =~ m/^-/ || $#ARGV > 0) { usage(); }
 -
 -$pattern = $ARGV[0];
 -usage() if ($pattern eq "");
 -
 -open FH, "<$RC" or die "zg: Could not open $RC: $!\n";
 -while ($line = <FH>) {
 -    chomp $line;
 -    if ($line =~ m/^#:grep:marker:for:mika:/) { $markerfound = 1; next; }
 -    next if ($mode eq "nonroot" && markerfound == 0);
 -    break if ($mode eq "allonly" && markerfound == 1);
 -    print $line, "\n" if ($line =~ /$pattern/);
 -}
 -close FH;
 -exit 0;
 -
 -    ' -- "$@"
 -#}}}
 -    return $?
 -}
 -
  ssl_hashes=( sha512 sha256 sha1 md5 )
  
  for sh in ${ssl_hashes}; do
@@@ -2227,24 -2451,69 +2227,24 @@@ ssl-cert-info() 
      ssl-cert-fingerprints $1
  }
  
 -# }}}
 -
 -# {{{ make sure our environment is clean regarding colors
 +# make sure our environment is clean regarding colors
  for color in BLUE RED GREEN CYAN YELLOW MAGENTA WHITE ; unset $color
 -# }}}
  
 -# "persistent history" {{{
 +# "persistent history"
  # just write important commands you always need to ~/.important_commands
  if [[ -r ~/.important_commands ]] ; then
      fc -R ~/.important_commands
  fi
 -# }}}
  
  # load the lookup subsystem if it's available on the system
  zrcautoload lookupinit && lookupinit
  
 -#:grep:marker:for:mika: :-)
 -### non-root (EUID != 0) code below
 -###
 -
 -if (( GRML_ALWAYS_LOAD_ALL == 0 )) && (( $EUID == 0 )) ; then
 -    zrclocal
 -    return 0
 -fi
 -
 -# variables {{{
 +# variables
  
  # set terminal property (used e.g. by msgid-chooser)
  export COLORTERM="yes"
  
 -# set default browser
 -if [[ -z "$BROWSER" ]] ; then
 -    if [[ -n "$DISPLAY" ]] ; then
 -        #v# If X11 is running
 -        check_com -c firefox && export BROWSER=firefox
 -    else
 -        #v# If no X11 is running
 -        check_com -c w3m && export BROWSER=w3m
 -    fi
 -fi
 -
 -#m# v QTDIR \kbd{/usr/share/qt[34]}\quad [for non-root only]
 -[[ -d /usr/share/qt3 ]] && export QTDIR=/usr/share/qt3
 -[[ -d /usr/share/qt4 ]] && export QTDIR=/usr/share/qt4
 -
 -# support running 'jikes *.java && jamvm HelloWorld' OOTB:
 -#v# [for non-root only]
 -[[ -f /usr/share/classpath/glibj.zip ]] && export JIKESPATH=/usr/share/classpath/glibj.zip
 -# }}}
 -
 -# aliases {{{
 -
 -# Xterm resizing-fu.
 -# Based on http://svn.kitenet.net/trunk/home-full/.zshrc?rev=11710&view=log (by Joey Hess)
 -alias hide='echo -en "\033]50;nil2\007"'
 -alias tiny='echo -en "\033]50;-misc-fixed-medium-r-normal-*-*-80-*-*-c-*-iso8859-15\007"'
 -alias small='echo -en "\033]50;6x10\007"'
 -alias medium='echo -en "\033]50;-misc-fixed-medium-r-normal--13-120-75-75-c-80-iso8859-15\007"'
 -alias default='echo -e "\033]50;-misc-fixed-medium-r-normal-*-*-140-*-*-c-*-iso8859-15\007"'
 -alias large='echo -en "\033]50;-misc-fixed-medium-r-normal-*-*-150-*-*-c-*-iso8859-15\007"'
 -alias huge='echo -en "\033]50;-misc-fixed-medium-r-normal-*-*-210-*-*-c-*-iso8859-15\007"'
 -alias smartfont='echo -en "\033]50;-artwiz-smoothansi-*-*-*-*-*-*-*-*-*-*-*-*\007"'
 -alias semifont='echo -en "\033]50;-misc-fixed-medium-r-semicondensed-*-*-120-*-*-*-*-iso8859-15\007"'
 +# aliases
  
  # general
  #a2# Execute \kbd{du -sch}
@@@ -2252,6 -2521,12 +2252,6 @@@ alias da='du -sch
  #a2# Execute \kbd{jobs -l}
  alias j='jobs -l'
  
 -# compile stuff
 -#a2# Execute \kbd{./configure}
 -alias CO="./configure"
 -#a2# Execute \kbd{./configure --help}
 -alias CH="./configure --help"
 -
  # listing stuff
  #a2# Execute \kbd{ls -lSrah}
  alias dir="ls -lSrah"
@@@ -2279,10 -2554,32 +2279,14 @@@ alias lsnew="ls -rtlh *(D.om[1,10])"   
  alias lsold="ls -rtlh *(D.Om[1,10])"   # display the oldest files
  #a2# Display the ten smallest files
  alias lssmall="ls -Srl *(.oL[1,10])"   # display the smallest files
+ #a2# Display the ten newest directories and ten newest .directories
+ alias lsnewdir="ls -rthdl *(/om[1,10]) .*(D/om[1,10])"
+ #a2# Display the ten oldest directories and ten oldest .directories
+ alias lsolddir="ls -rthdl *(/Om[1,10]) .*(D/Om[1,10])"
  
 -# chmod
 -#a2# Execute \kbd{chmod 600}
 -alias rw-='chmod 600'
 -#a2# Execute \kbd{chmod 700}
 -alias rwx='chmod 700'
 -#m# a2 r-{}- Execute \kbd{chmod 644}
 -alias r--='chmod 644'
 -#a2# Execute \kbd{chmod 755}
 -alias r-x='chmod 755'
 -
  # some useful aliases
 -#a2# Execute \kbd{mkdir -o}
 -alias md='mkdir -p'
 -
 -# console stuff
 -#a2# Execute \kbd{mplayer -vo fbdev}
 -alias cmplayer='mplayer -vo fbdev'
 -#a2# Execute \kbd{mplayer -vo fbdev -fs -zoom}
 -alias fbmplayer='mplayer -vo fbdev -fs -zoom'
 -#a2# Execute \kbd{links2 -driver fb}
 -alias fblinks='links2 -driver fb'
 +#a2# Remove current empty directory. Execute \kbd{cd ..; rmdir $OLDCWD}
 +alias rmcdir='cd ..; rmdir $OLDPWD || cd $OLDPWD'
  
  #a2# ssh with StrictHostKeyChecking=no \\&\quad and UserKnownHostsFile unset
  alias insecssh='ssh -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null"'
@@@ -2291,6 -2588,9 +2295,6 @@@ alias insecscp='scp -o "StrictHostKeyCh
  # simple webserver
  check_com -c python && alias http="python -m SimpleHTTPServer"
  
 -# Use 'g' instead of 'git':
 -check_com g || alias g='git'
 -
  # work around non utf8 capable software in utf environment via $LANG and luit
  if check_com isutfenv && check_com luit ; then
      if check_com -c mrxvt ; then
              alias centericq="LANG=${LANG/(#b)(*)[.@]*/$match[1].iso885915} luit centericq"
      fi
  fi
 -# }}}
 -
 -# useful functions {{{
 -
 -# searching
 -#f4# Search for newspostings from authors
 -agoogle() { ${=BROWSER} "http://groups.google.com/groups?as_uauthors=$*" ; }
 -#f4# Search Debian Bug Tracking System
 -debbug()  {
 -    emulate -L zsh
 -    setopt extendedglob
 -    if [[ $# -eq 1 ]]; then
 -        case "$1" in
 -            ([0-9]##)
 -            ${=BROWSER} "http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=$1"
 -            ;;
 -            (*@*)
 -            ${=BROWSER} "http://bugs.debian.org/cgi-bin/pkgreport.cgi?submitter=$1"
 -            ;;
 -            (*)
 -            ${=BROWSER} "http://bugs.debian.org/$*"
 -            ;;
 -        esac
 -    else
 -        print "$0 needs one argument"
 -        return 1
 -    fi
 -}
 -#f4# Search Debian Bug Tracking System in mbox format
 -debbugm() {
 -    emulate -L zsh
 -    bts show --mbox $1
 -}
 -#f4# Search DMOZ
 -dmoz()    {
 -    emulate -L zsh
 -    ${=BROWSER} http://search.dmoz.org/cgi-bin/search\?search=${1// /_}
 -}
 -#f4# Search German   Wiktionary
 -dwicti()  {
 -    emulate -L zsh
 -    ${=BROWSER} http://de.wiktionary.org/wiki/${(C)1// /_}
 -}
 -#f4# Search English  Wiktionary
 -ewicti()  {
 -    emulate -L zsh
 -    ${=BROWSER} http://en.wiktionary.org/wiki/${(C)1// /_}
 -}
 -#f4# Search Google Groups
 -ggogle()  {
 -    emulate -L zsh
 -    ${=BROWSER} "http://groups.google.com/groups?q=$*"
 -}
 -#f4# Search Google
 -google()  {
 -    emulate -L zsh
 -    ${=BROWSER} "http://www.google.com/search?&num=100&q=$*"
 -}
 -#f4# Search Google Groups for MsgID
 -mggogle() {
 -    emulate -L zsh
 -    ${=BROWSER} "http://groups.google.com/groups?selm=$*"
 -}
 -#f4# Search Netcraft
 -netcraft(){
 -    emulate -L zsh
 -    ${=BROWSER} "http://toolbar.netcraft.com/site_report?url=$1"
 -}
 -#f4# Use German Wikipedia's full text search
 -swiki()   {
 -    emulate -L zsh
 -    ${=BROWSER} http://de.wikipedia.org/wiki/Spezial:Search/${(C)1}
 -}
 -#f4# search \kbd{dict.leo.org}
 -oleo()    {
 -    emulate -L zsh
 -    ${=BROWSER} "http://dict.leo.org/?search=$*"
 -}
 -#f4# Search German   Wikipedia
 -wikide()  {
 -    emulate -L zsh
 -    ${=BROWSER} http://de.wikipedia.org/wiki/"${(C)*}"
 -}
 -#f4# Search English  Wikipedia
 -wikien()  {
 -    emulate -L zsh
 -    ${=BROWSER} http://en.wikipedia.org/wiki/"${(C)*}"
 -}
 -#f4# Search official debs
 -wodeb()   {
 -    emulate -L zsh
 -    ${=BROWSER} "http://packages.debian.org/search?keywords=$1&searchon=contents&suite=${2:=unstable}&section=all"
 -}
  
 -#m# f4 gex() Exact search via Google
 -check_com google && gex () {
 -    google "\"[ $1]\" $*"
 -}
 +# useful functions
  
 -# misc
  #f5# Backup \kbd{file {\rm to} file\_timestamp}
  bk() {
      emulate -L zsh
      cp -b $1 $1_`date --iso-8601=m`
  }
 -#f5# Copied diff
 -cdiff() {
 -    emulate -L zsh
 -    diff -crd "$@" | egrep -v "^Only in |^Binary files "
 -}
 +
  #f5# cd to directoy and list files
  cl() {
      emulate -L zsh
      cd $1 && ls -a
  }
 -#f5# Cvs add
 -cvsa() {
 -    emulate -L zsh
 -    cvs add $* && cvs com -m 'initial checkin' $*
 -}
 -#f5# Cvs diff
 -cvsd() {
 -    emulate -L zsh
 -    cvs diff -N $* |& $PAGER
 -}
 -#f5# Cvs log
 -cvsl() {
 -    emulate -L zsh
 -    cvs log $* |& $PAGER
 -}
 -#f5# Cvs update
 -cvsq() {
 -    emulate -L zsh
 -    cvs -nq update
 -}
 -#f5# Rcs2log
 -cvsr() {
 -    emulate -L zsh
 -    rcs2log $* | $PAGER
 -}
 -#f5# Cvs status
 -cvss() {
 -    emulate -L zsh
 -    cvs status -v $*
 -}
 -#f5# Disassemble source files using gcc and as
 -disassemble(){
 -    emulate -L zsh
 -    gcc -pipe -S -o - -O -g $* | as -aldh -o /dev/null
 -}
 -#f5# Firefox remote control - open given URL
 -fir() {
 -    if [ -e /etc/debian_version ]; then
 -        firefox -a iceweasel -remote "openURL($1)" || firefox ${1}&
 -    else
 -        firefox -a firefox -remote "openURL($1)" || firefox ${1}&
 -    fi
 -}
 +
  # smart cd function, allows switching to /etc when running 'cd /etc/fstab'
  cd() {
      if (( ${#argv} == 1 )) && [[ -f ${1} ]]; then
  }
  
  #f5# Create Directoy and \kbd{cd} to it
 -mcd() {
 +mkcd() {
      mkdir -p "$@" && cd "$@"
  }
 +
  #f5# Create temporary directory and \kbd{cd} to it
  cdt() {
      local t
      echo "$t"
      builtin cd "$t"
  }
 -#f5# Unified diff to timestamped outputfile
 -mdiff() {
 -    diff -udrP "$1" "$2" > diff.`date "+%Y-%m-%d"`."$1"
 -}
  
  #f5# Create directory under cursor or the selected area
  # Press ctrl-xM to create the directory under the cursor or the selected area.
@@@ -2381,6 -2827,93 +2385,6 @@@ inplaceMkDirs() 
  #k# mkdir -p <dir> from string under cursor or marked area
  zle -N inplaceMkDirs && bindkey '^XM' inplaceMkDirs
  
 -#f5# Memory overview
 -memusage() {
 -    ps aux | awk '{if (NR > 1) print $5; if (NR > 2) print "+"} END { print "p" }' | dc
 -}
 -#f5# Show contents of gzipped tar file
 -shtar() {
 -    emulate -L zsh
 -    gunzip -c $1 | tar -tf - -- | $PAGER
 -}
 -#f5# Show contents of zip file
 -shzip() {
 -    emulate -L zsh
 -    unzip -l $1 | $PAGER
 -}
 -#f5# Unified diff
 -udiff() {
 -    emulate -L zsh
 -    diff -urd $* | egrep -v "^Only in |^Binary files "
 -}
 -#f5# (Mis)use \kbd{vim} as \kbd{less}
 -viless() {
 -    emulate -L zsh
 -    vim --cmd 'let no_plugin_maps = 1' -c "so \$VIMRUNTIME/macros/less.vim" "${@:--}"
 -}
 -
 -# Function Usage: uopen $URL/$file
 -#f5# Download a file and display it locally
 -uopen() {
 -    emulate -L zsh
 -    if ! [[ -n "$1" ]] ; then
 -        print "Usage: uopen \$URL/\$file">&2
 -        return 1
 -    else
 -        FILE=$1
 -        MIME=$(curl --head $FILE | grep Content-Type | cut -d ' ' -f 2 | cut -d\; -f 1)
 -        MIME=${MIME%$'\r'}
 -        curl $FILE | see ${MIME}:-
 -    fi
 -}
 -
 -# Function Usage: doc packagename
 -#f5# \kbd{cd} to /usr/share/doc/\textit{package}
 -doc() {
 -    emulate -L zsh
 -    cd /usr/share/doc/$1 && ls
 -}
 -_doc() { _files -W /usr/share/doc -/ }
 -check_com compdef && compdef _doc doc
 -
 -#f5# Make screenshot
 -sshot() {
 -    [[ ! -d ~/shots  ]] && mkdir ~/shots
 -    #cd ~/shots ; sleep 5 ; import -window root -depth 8 -quality 80 `date "+%Y-%m-%d--%H:%M:%S"`.png
 -    cd ~/shots ; sleep 5; import -window root shot_`date --iso-8601=m`.jpg
 -}
 -
 -# list images only
 -limg() {
 -    local -a images
 -    images=( *.{jpg,gif,png}(.N) )
 -
 -    if [[ $#images -eq 0 ]] ; then
 -        print "No image files found"
 -    else
 -        ls "$images[@]"
 -    fi
 -}
 -
 -#f5# Create PDF file from source code
 -makereadable() {
 -    emulate -L zsh
 -    output=$1
 -    shift
 -    a2ps --medium A4dj -E -o $output $*
 -    ps2pdf $output
 -}
 -
 -# zsh with perl-regex - use it e.g. via:
 -# regcheck '\s\d\.\d{3}\.\d{3} Euro' ' 1.000.000 Euro'
 -#f5# Checks whether a regex matches or not.\\&\quad Example: \kbd{regcheck '.\{3\} EUR' '500 EUR'}
 -regcheck() {
 -    emulate -L zsh
 -    zmodload -i zsh/pcre
 -    pcre_compile $1 && \
 -    pcre_match $2 && echo "regex matches" || echo "regex does not match"
 -}
 -
  #f5# List files which have been accessed within the last {\it n} days, {\it n} defaults to 1
  accessed() {
      emulate -L zsh
@@@ -2401,9 -2934,84 +2405,9 @@@ modified() 
  # modified() was named new() in earlier versions, add an alias for backwards compatibility
  check_com new || alias new=modified
  
 -#f5# Grep in history
 -greph() {
 -    emulate -L zsh
 -    history 0 | grep $1
 -}
  # use colors when GNU grep with color-support
  #a2# Execute \kbd{grep -{}-color=auto}
  (grep --help 2>/dev/null |grep -- --color) >/dev/null && alias grep='grep --color=auto'
 -#a2# Execute \kbd{grep -i -{}-color=auto}
 -alias GREP='grep -i --color=auto'
 -
 -#f5# Watch manpages in a stretched style
 -man2() { PAGER='dash -c "sed G | /usr/bin/less"' command man "$@" ; }
 -
 -# usage example: 'lcheck strcpy'
 -#f5# Find out which libs define a symbol
 -lcheck() {
 -    if [[ -n "$1" ]] ; then
 -        nm -go /usr/lib/lib*.a 2>/dev/null | grep ":[[:xdigit:]]\{8\} . .*$1"
 -    else
 -        echo "Usage: lcheck <function>" >&2
 -    fi
 -}
 -
 -#f5# Clean up directory - remove well known tempfiles
 -purge() {
 -    emulate -L zsh
 -    setopt HIST_SUBST_PATTERN
 -    local -a TEXTEMPFILES GHCTEMPFILES PYTEMPFILES FILES
 -    TEXTEMPFILES=(*.tex(N:s/%tex/'(log|toc|aux|nav|snm|out|tex.backup|bbl|blg|bib.backup|vrb|lof|lot|hd|idx)(N)'/))
 -    GHCTEMPFILES=(*.(hs|lhs)(N:r:s/%/'.(hi|hc|(p|u|s)_(o|hi))(N)'/))
 -    PYTEMPFILES=(*.py(N:s/%py/'(pyc|pyo)(N)'/))
 -    LONELY_MOOD_FILES=((*.mood)(.NDe:'local -a AF;AF=( ${${REPLY#.}%mood}(mp3|flac|ogg|asf|wmv|aac)(N) ); [[ -z "$AF" ]]':))
 -    ZSH_COMPILED=(*.zwc(.NDe:'[[ -f ${REPLY%.zwc} && ${REPLY%.zwc} -nt ${REPLY} ]]':))
 -    FILES=(*~(.N) \#*\#(.N) *.o(.N) a.out(.N) (*.|)core(.N) *.cmo(.N) *.cmi(.N) .*.swp(.N) *.(orig|rej)(.DN) *.dpkg-(old|dist|new)(DN) ._(cfg|mrg)[0-9][0-9][0-9][0-9]_*(N) ${~TEXTEMPFILES} ${~GHCTEMPFILES} ${~PYTEMPFILES} ${LONELY_MOOD_FILES} ${ZSH_COMPILED} )
 -    local NBFILES=${#FILES}
 -    local CURDIRSUDO=""
 -    [[ ! -w ./ ]] && CURDIRSUDO=$SUDO
 -    if [[ $NBFILES > 0 ]] ; then
 -        print -l $FILES
 -        local ans
 -        echo -n "Remove these files? [y/n] "
 -        read -q ans; echo
 -        if [[ $ans == "y" ]] ; then
 -            $CURDIRSUDO rm ${FILES}
 -            echo ">> $PWD purged, $NBFILES files removed"
 -        else
 -            echo "Ok. .. then not.."
 -        fi
 -    fi
 -}
 -
 -#f5# show labels and uuids of disk devices
 -if is439 && [[ -d /dev/disk/by-id/ ]]; then
 -    lsdisk() {
 -        emulate -L zsh
 -        setopt extendedglob
 -        local -a -U disks
 -        local -A mountinfo
 -        disks=( /dev/disk/by-id/*(@:A) )
 -        [[ -r /proc/mounts ]] && for cline ( "${(f)$(</proc/mounts)[@]}" ) mountinfo["${cline[(w)1]:A}"]="${cline[(w)2,-1]}"
 -        for dev in "$disks[@]"; do
 -            print ${fg_bold[red]}${dev}${reset_color} /dev/disk/by-label/*(@e/'[[ ${REPLY:A} == $dev ]] && REPLY=${fg[blue]}LABEL=${REPLY:t}${reset_color}'/N) /dev/disk/by-uuid/*(@e/'[[ ${REPLY:A} == $dev ]] && REPLY=${fg[green]}UUID=${REPLY:t}${reset_color}'/N)
 -            [[ -n "${mountinfo["$dev"]}" ]] && print -f " Mount: %s -t %s -o %s\n" ${mountinfo["$dev"][(w)1]} ${mountinfo["$dev"][(w)2]} "${mountinfo["$dev"][(w)3,-5]}"
 -            for sysdevsize ( /sys/block/${dev:t}/size(N) /sys/block/${${dev:t}%%<->}/${dev:t}/size(N) ) \
 -                print -f "  Size: %.3f GiB (%d Byte)\n" $(($(<$sysdevsize)/(2.0*1024.0*1024.0))) $(($(<$sysdevsize)*512))
 -
 -            print -f "    Id: %s\n" /dev/disk/by-id/*(@e/'[[ ${REPLY:A} == $dev ]]'/N:t)
 -        done
 -    }
 -fi
 -
 -#f5# run command or function in a list of directories
 -rundirs() {
 -  local d CMD STARTDIR=$PWD
 -  CMD=$1; shift
 -  ( for d ($@) {cd -q $d && { print cd $d; ${(z)CMD} ; cd -q $STARTDIR }} )
 -}
  
  # Translate DE<=>EN
  # 'translate' looks up fot a word in a file with language-to-language
@@@ -2431,6 -3039,42 +2435,6 @@@ trans() 
      esac
  }
  
 -#f5# List all occurrences of programm in current PATH
 -plap() {
 -    emulate -L zsh
 -    if [[ $# = 0 ]] ; then
 -        echo "Usage:    $0 program"
 -        echo "Example:  $0 zsh"
 -        echo "Lists all occurrences of program in the current PATH."
 -    else
 -        ls -l ${^path}/*$1*(*N)
 -    fi
 -}
 -
 -# Found in the mailinglistarchive from Zsh (IIRC ~1996)
 -#f5# Select items for specific command(s) from history
 -selhist() {
 -    emulate -L zsh
 -    local TAB=$'\t';
 -    (( $# < 1 )) && {
 -        echo "Usage: $0 command"
 -        return 1
 -    };
 -    cmd=(${(f)"$(grep -w $1 $HISTFILE | sort | uniq | pr -tn)"})
 -    print -l $cmd | less -F
 -    echo -n "enter number of desired command [1 - $(( ${#cmd[@]} - 1 ))]: "
 -    local answer
 -    read answer
 -    print -z "${cmd[$answer]#*$TAB}"
 -}
 -
 -# Use vim to convert plaintext to HTML
 -#f5# Transform files to html with highlighting
 -2html() {
 -    emulate -L zsh
 -    vim -u NONE -n -c ':syntax on' -c ':so $VIMRUNTIME/syntax/2html.vim' -c ':wqa' $1 &>/dev/null
 -}
 -
  # Usage: simple-extract <file>
  # Using option -d deletes the original archive file.
  #f5# Smart archive extractor
@@@ -2536,7 -3180,7 +2540,7 @@@ simple-extract() 
  
          elif [[ "$ARCHIVE" == (#s)(https|http|ftp)://* ]] ; then
              if check_com curl; then
 -                WGET_CMD="curl -k -s -o -"
 +                WGET_CMD="curl -L -k -s -o -"
              elif check_com wget; then
                  WGET_CMD="wget -q -O - --no-check-certificate"
              else
@@@ -2585,6 -3229,226 +2589,6 @@@ _simple_extract(
  compdef _simple_extract simple-extract
  alias se=simple-extract
  
 -# Usage: smartcompress <file> (<type>)
 -#f5# Smart archive creator
 -smartcompress() {
 -    emulate -L zsh
 -    if [[ -n $2 ]] ; then
 -        case $2 in
 -            tgz | tar.gz)   tar -zcvf$1.$2 $1 ;;
 -            tbz2 | tar.bz2) tar -jcvf$1.$2 $1 ;;
 -            tar.Z)          tar -Zcvf$1.$2 $1 ;;
 -            tar)            tar -cvf$1.$2  $1 ;;
 -            gz | gzip)      gzip           $1 ;;
 -            bz2 | bzip2)    bzip2          $1 ;;
 -            *)
 -                echo "Error: $2 is not a valid compression type"
 -                ;;
 -        esac
 -    else
 -        smartcompress $1 tar.gz
 -    fi
 -}
 -
 -# Usage: show-archive <archive>
 -#f5# List an archive's content
 -show-archive() {
 -    emulate -L zsh
 -    if [[ -f $1 ]] ; then
 -        case $1 in
 -            *.tar.gz)      gunzip -c $1 | tar -tf - -- ;;
 -            *.tar)         tar -tf $1 ;;
 -            *.tgz)         tar -ztf $1 ;;
 -            *.zip)         unzip -l $1 ;;
 -            *.bz2)         bzless $1 ;;
 -            *.deb)         dpkg-deb --fsys-tarfile $1 | tar -tf - -- ;;
 -            *)             echo "'$1' Error. Please go away" ;;
 -        esac
 -    else
 -        echo "'$1' is not a valid archive"
 -    fi
 -}
 -
 -# It's shameless stolen from <http://www.vim.org/tips/tip.php?tip_id=167>
 -#f5# Use \kbd{vim} as your manpage reader
 -vman() {
 -    emulate -L zsh
 -    if (( ${#argv} == 0 )); then
 -        printf 'usage: vman <topic>\n'
 -        return 1
 -    fi
 -    man "$@" | col -b | view -c 'set ft=man nomod nolist' -
 -}
 -
 -# function readme() { $PAGER -- (#ia3)readme* }
 -#f5# View all README-like files in current directory in pager
 -readme() {
 -    emulate -L zsh
 -    setopt extendedglob
 -    local files
 -    files=(./(#i)*(read*me|lue*m(in|)ut|lies*mich)*(NDr^/=p%))
 -    if (($#files)) ; then
 -        $PAGER $files
 -    else
 -        print 'No README files.'
 -    fi
 -}
 -
 -# function ansi-colors()
 -#f5# Display ANSI colors
 -ansi-colors() {
 -    typeset esc="\033[" line1 line2
 -    echo " _ _ _40 _ _ _41_ _ _ _42 _ _ 43_ _ _ 44_ _ _45 _ _ _ 46_ _ _ 47_ _ _ 49_ _"
 -    for fore in 30 31 32 33 34 35 36 37; do
 -        line1="$fore "
 -        line2="   "
 -        for back in 40 41 42 43 44 45 46 47 49; do
 -            line1="${line1}${esc}${back};${fore}m Normal ${esc}0m"
 -            line2="${line2}${esc}${back};${fore};1m Bold   ${esc}0m"
 -        done
 -        echo -e "$line1\n$line2"
 -    done
 -}
 -
 -#f5# Find all files in \$PATH with setuid bit set
 -suidfind() { ls -latg $path | grep '^...s' }
 -
 -# TODO: So, this is the third incarnation of this function!?
 -#f5# Reload given functions
 -refunc() {
 -    for func in $argv ; do
 -        unfunction $func
 -        autoload $func
 -    done
 -}
 -compdef _functions refunc
 -
 -# a small check to see which DIR is located on which server/partition.
 -# stolen and modified from Sven's zshrc.forall
 -#f5# Report diskusage of a directory
 -dirspace() {
 -    emulate -L zsh
 -    if [[ -n "$1" ]] ; then
 -        for dir in "$@" ; do
 -            if [[ -d "$dir" ]] ; then
 -                ( cd $dir; echo "-<$dir>"; du -shx .; echo);
 -            else
 -                echo "warning: $dir does not exist" >&2
 -            fi
 -        done
 -    else
 -        for dir in $path; do
 -            if [[ -d "$dir" ]] ; then
 -                ( cd $dir; echo "-<$dir>"; du -shx .; echo);
 -            else
 -                echo "warning: $dir does not exist" >&2
 -            fi
 -        done
 -    fi
 -}
 -
 -# % slow_print `cat /etc/passwd`
 -#f5# Slowly print out parameters
 -slow_print() {
 -    for argument in "$@" ; do
 -        for ((i = 1; i <= ${#1} ;i++)) ; do
 -            print -n "${argument[i]}"
 -            sleep 0.08
 -        done
 -        print -n " "
 -    done
 -    print ""
 -}
 -
 -#f5# Show some status info
 -status() {
 -    print
 -    print "Date..: "$(date "+%Y-%m-%d %H:%M:%S")
 -    print "Shell.: Zsh $ZSH_VERSION (PID = $$, $SHLVL nests)"
 -    print "Term..: $TTY ($TERM), ${BAUD:+$BAUD bauds, }$COLUMNS x $LINES chars"
 -    print "Login.: $LOGNAME (UID = $EUID) on $HOST"
 -    print "System: $(cat /etc/[A-Za-z]*[_-][rv]e[lr]*)"
 -    print "Uptime:$(uptime)"
 -    print
 -}
 -
 -# Rip an audio CD
 -#f5# Rip an audio CD
 -audiorip() {
 -    mkdir -p ~/ripps
 -    cd ~/ripps
 -    cdrdao read-cd --device $DEVICE --driver generic-mmc audiocd.toc
 -    cdrdao read-cddb --device $DEVICE --driver generic-mmc audiocd.toc
 -    echo " * Would you like to burn the cd now? (yes/no)"
 -    read input
 -    if [[ "$input" = "yes" ]] ; then
 -        echo " ! Burning Audio CD"
 -        audioburn
 -        echo " * done."
 -    else
 -        echo " ! Invalid response."
 -    fi
 -}
 -
 -# and burn it
 -#f5# Burn an audio CD (in combination with audiorip)
 -audioburn() {
 -    cd ~/ripps
 -    cdrdao write --device $DEVICE --driver generic-mmc audiocd.toc
 -    echo " * Should I remove the temporary files? (yes/no)"
 -    read input
 -    if [[ "$input" = "yes" ]] ; then
 -        echo " ! Removing Temporary Files."
 -        cd ~
 -        rm -rf ~/ripps
 -        echo " * done."
 -    else
 -        echo " ! Invalid response."
 -    fi
 -}
 -
 -#f5# Make an audio CD from all mp3 files
 -mkaudiocd() {
 -    # TODO: do the renaming more zshish, possibly with zmv()
 -    emulate -L zsh
 -    cd ~/ripps
 -    for i in *.[Mm][Pp]3; do mv "$i" `echo $i | tr '[A-Z]' '[a-z]'`; done
 -    for i in *.mp3; do mv "$i" `echo $i | tr ' ' '_'`; done
 -    for i in *.mp3; do mpg123 -w `basename $i .mp3`.wav $i; done
 -    normalize -m *.wav
 -    for i in *.wav; do sox $i.wav -r 44100 $i.wav resample; done
 -}
 -
 -#f5# Create an ISO image. You are prompted for\\&\quad volume name, filename and directory
 -mkiso() {
 -    emulate -L zsh
 -    echo " * Volume name "
 -    read volume
 -    echo " * ISO Name (ie. tmp.iso)"
 -    read iso
 -    echo " * Directory or File"
 -    read files
 -    mkisofs -o ~/$iso -A $volume -allow-multidot -J -R -iso-level 3 -V $volume -R $files
 -}
 -
 -#f5# Simple thumbnails generator
 -genthumbs() {
 -    rm -rf thumb-* index.html
 -    echo "
 -<html>
 -  <head>
 -    <title>Images</title>
 -  </head>
 -  <body>" > index.html
 -    for f in *.(gif|jpeg|jpg|png) ; do
 -        convert -size 100x200 "$f" -resize 100x200 thumb-"$f"
 -        echo "    <a href=\"$f\"><img src=\"thumb-$f\"></a>" >> index.html
 -    done
 -    echo "
 -  </body>
 -</html>" >> index.html
 -}
 -
  #f5# Set all ulimit parameters to \kbd{unlimited}
  allulimit() {
      ulimit -c unlimited
      ulimit -t unlimited
  }
  
 -#f5# RFC 2396 URL encoding in Z-Shell
 -urlencode() {
 -    emulate -L zsh
 -    setopt extendedglob
 -    input=( ${(s::)1} )
 -    print ${(j::)input/(#b)([^A-Za-z0-9_.!~*\'\(\)-])/%${(l:2::0:)$(([##16]#match))}}
 -}
 -
 -# http://strcat.de/blog/index.php?/archives/335-Software-sauber-deinstallieren...html
 -#f5# Log 'make install' output
 -mmake() {
 -    emulate -L zsh
 -    [[ ! -d ~/.errorlogs ]] && mkdir ~/.errorlogs
 -    make -n install > ~/.errorlogs/${PWD##*/}-makelog
 -}
 -
 -#f5# Indent source code
 -smart-indent() {
 -    indent -npro -kr -i8 -ts8 -sob -l80 -ss -ncs "$@"
 -}
 -
 -# highlight important stuff in diff output, usage example: hg diff | hidiff
 -#m# a2 hidiff \kbd{histring} oneliner for diffs
 -check_com -c histring && \
 -    alias hidiff="histring -fE '^Comparing files .*|^diff .*' | histring -c yellow -fE '^\-.*' | histring -c green -fE '^\+.*'"
 -
 -# rename pictures based on information found in exif headers
 -#f5# Rename pictures based on information found in exif headers
 -exirename() {
 -    emulate -L zsh
 -    if [[ $# -lt 1 ]] ; then
 -        echo 'Usage: jpgrename $FILES' >& 2
 -        return 1
 -    else
 -        echo -n 'Checking for jhead with version newer than 1.9: '
 -        jhead_version=`jhead -h | grep 'used by most Digital Cameras.  v.*' | awk '{print $6}' | tr -d v`
 -        if [[ $jhead_version > '1.9' ]]; then
 -            echo 'success - now running jhead.'
 -            jhead -n%Y-%m-%d_%Hh%M_%f $*
 -        else
 -            echo 'failed - exiting.'
 -        fi
 -    fi
 -}
 -
 -# get_ic() - queries imap servers for capabilities; real simple. no imaps
 -ic_get() {
 -    emulate -L zsh
 -    local port
 -    if [[ ! -z $1 ]] ; then
 -        port=${2:-143}
 -        print "querying imap server on $1:${port}...\n";
 -        print "a1 capability\na2 logout\n" | nc $1 ${port}
 -    else
 -        print "usage:\n  $0 <imap-server> [port]"
 -    fi
 -}
 -
 -# creates a Maildir/ with its {new,cur,tmp} subdirs
 -mkmaildir() {
 -    emulate -L zsh
 -    local root subdir
 -    root=${MAILDIR_ROOT:-${HOME}/Mail}
 -    if [[ -z ${1} ]] ; then print "Usage:\n $0 <dirname>" ; return 1 ; fi
 -    subdir=${1}
 -    mkdir -p ${root}/${subdir}/{cur,new,tmp}
 -}
 -
  #f5# Change the xterm title from within GNU-screen
  xtrename() {
      emulate -L zsh
      return 0
  }
  
 -# hl() highlighted less
 -# http://ft.bewatermyfriend.org/comp/data/zsh/zfunct.html
 -if check_com -c highlight ; then
 -    function hl() {
 -    emulate -L zsh
 -        local theme lang
 -        theme=${HL_THEME:-""}
 -        case ${1} in
 -            (-l|--list)
 -                ( printf 'available languages (syntax parameter):\n\n' ;
 -                    highlight --list-langs ; ) | less -SMr
 -                ;;
 -            (-t|--themes)
 -                ( printf 'available themes (style parameter):\n\n' ;
 -                    highlight --list-themes ; ) | less -SMr
 -                ;;
 -            (-h|--help)
 -                printf 'usage: hl <syntax[:theme]> <file>\n'
 -                printf '    available options: --list (-l), --themes (-t), --help (-h)\n\n'
 -                printf '  Example: hl c main.c\n'
 -                ;;
 -            (*)
 -                if [[ -z ${2} ]] || (( ${#argv} > 2 )) ; then
 -                    printf 'usage: hl <syntax[:theme]> <file>\n'
 -                    printf '    available options: --list (-l), --themes (-t), --help (-h)\n'
 -                    (( ${#argv} > 2 )) && printf '  Too many arguments.\n'
 -                    return 1
 -                fi
 -                lang=${1%:*}
 -                [[ ${1} == *:* ]] && [[ -n ${1#*:} ]] && theme=${1#*:}
 -                if [[ -n ${theme} ]] ; then
 -                    highlight -O xterm256 --syntax ${lang} --style ${theme} ${2} | less -SMr
 -                else
 -                    highlight -O ansi --syntax ${lang} ${2} | less -SMr
 -                fi
 -                ;;
 -        esac
 -        return 0
 -    }
 -    # ... and a proper completion for hl()
 -    # needs 'highlight' as well, so it fits fine in here.
 -    function _hl_genarg()  {
 -        local expl
 -        if [[ -prefix 1 *: ]] ; then
 -            local themes
 -            themes=(${${${(f)"$(LC_ALL=C highlight --list-themes)"}/ #/}:#*(Installed|Use name)*})
 -            compset -P 1 '*:'
 -            _wanted -C list themes expl theme compadd ${themes}
 -        else
 -            local langs
 -            langs=(${${${(f)"$(LC_ALL=C highlight --list-langs)"}/ #/}:#*(Installed|Use name)*})
 -            _wanted -C list languages expl languages compadd -S ':' -q ${langs}
 -        fi
 -    }
 -    function _hl_complete() {
 -        _arguments -s '1: :_hl_genarg' '2:files:_path_files'
 -    }
 -    compdef _hl_complete hl
 -fi
 -
  # TODO:
  # Rewrite this by either using tinyurl.com's API
  # or using another shortening service to comply with
  #    fi
  #}
  
 -#f2# Print a specific line of file(s).
 -linenr () {
 -# {{{
 -    emulate -L zsh
 -    if [ $# -lt 2 ] ; then
 -       print "Usage: linenr <number>[,<number>] <file>" ; return 1
 -    elif [ $# -eq 2 ] ; then
 -         local number=$1
 -         local file=$2
 -         command ed -s $file <<< "${number}n"
 -    else
 -         local number=$1
 -         shift
 -         for file in "$@" ; do
 -             if [ ! -d $file ] ; then
 -                echo "${file}:"
 -                command ed -s $file <<< "${number}n" 2> /dev/null
 -             else
 -                continue
 -             fi
 -         done | less
 -    fi
 -# }}}
 -}
 -
  #f2# Find history events by search pattern and list them by date.
  whatwhen()  {
 -# {{{
      emulate -L zsh
      local usage help ident format_l format_s first_char remain first last
      usage='USAGE: whatwhen [options] <searchstring> <search range>'
              fc -li -m "*${first_char}${remain}*" $first $last
          ;;
      esac
 -# }}}
 -}
 -
 -# change fluxbox keys from 'Alt-#' to 'Alt-F#' and vice versa
 -fluxkey-change() {
 -    emulate -L zsh
 -    [[ -n "$FLUXKEYS" ]] || local FLUXKEYS="$HOME/.fluxbox/keys"
 -    if ! [[ -r "$FLUXKEYS" ]] ; then
 -        echo "Sorry, \$FLUXKEYS file $FLUXKEYS could not be read - nothing to be done."
 -        return 1
 -    else
 -        if grep -q 'Mod1 F[0-9] :Workspace [0-9]' $FLUXKEYS ; then
 -            echo -n 'Switching to Alt-# mode in ~/.fluxbox/keys: '
 -            sed -i -e 's|^\(Mod[0-9]\+[: space :]\+\)F\([0-9]\+[: space :]\+:Workspace.*\)|\1\2|' $FLUXKEYS && echo done || echo failed
 -        elif grep -q 'Mod1 [0-9] :Workspace [0-9]' $FLUXKEYS ; then
 -            echo -n 'Switching to Alt-F# mode in ~/.fluxbox/keys: '
 -            sed -i -e 's|^\(Mod[0-9]\+[: space :]\+\)\([0-9]\+[: space :]\+:Workspace.*\)|\1F\2|' $FLUXKEYS && echo done || echo failed
 -        else
 -            echo 'Sorry, do not know what to do.'
 -            return 1
 -        fi
 -    fi
  }
  
 -# retrieve weather information on the console
 -# Usage example: 'weather LOWG'
 -weather() {
 -    emulate -L zsh
 -    [[ -n "$1" ]] || {
 -        print 'Usage: weather <station_id>' >&2
 -        print 'List of stations: http://en.wikipedia.org/wiki/List_of_airports_by_ICAO_code'>&2
 -        return 1
 -    }
 -
 -    local VERBOSE="yes"    # TODO: Make this a command line switch
 -
 -    local ODIR=`pwd`
 -    local PLACE="${1:u}"
 -    local DIR="${HOME}/.weather"
 -    local LOG="${DIR}/log"
 -
 -    [[ -d ${DIR} ]] || {
 -        print -n "Creating ${DIR}: "
 -        mkdir ${DIR}
 -        print 'done'
 -    }
 -
 -    print "Retrieving information for ${PLACE}:"
 -    print
 -    cd ${DIR} && wget -T 10 --no-verbose --output-file=$LOG --timestamping http://weather.noaa.gov/pub/data/observations/metar/decoded/$PLACE.TXT
 -
 -    if [[ $? -eq 0 ]] ; then
 -        if [[ -n "$VERBOSE" ]] ; then
 -            cat ${PLACE}.TXT
 -        else
 -            DATE=$(grep 'UTC' ${PLACE}.TXT | sed 's#.* /##')
 -            TEMPERATURE=$(awk '/Temperature/ { print $4" degree Celcius / " $2" degree Fahrenheit" }' ${PLACE}.TXT | tr -d '(')
 -            echo "date: $DATE"
 -            echo "temp:  $TEMPERATURE"
 -        fi
 -    else
 -        print "There was an error retrieving the weather information for $PLACE" >&2
 -        cat $LOG
 -        cd $ODIR
 -        return 1
 -    fi
 -    cd $ODIR
 -}
 -# }}}
 -
 -# mercurial related stuff {{{
 +# mercurial related stuff
  if check_com -c hg ; then
      # gnu like diff for mercurial
      # http://www.selenic.com/mercurial/wiki/index.cgi/TipsAndTricks
  
  fi # end of check whether we have the 'hg'-executable
  
 -# }}}
 -
 -# some useful commands often hard to remember - let's grep for them {{{
 -# actually use our zg() function now. :)
 -
 -# Work around ion/xterm resize bug.
 -#if [[ "$SHLVL" -eq 1 ]]; then
 -#       if check_com -c resize ; then
 -#               eval `resize </dev/null`
 -#       fi
 -#fi
 -
 -# enable jackd:
 -#  /usr/bin/jackd -dalsa -dhw:0 -r48000 -p1024 -n2
 -# now play audio file:
 -#  alsaplayer -o jack foobar.mp3
 -
 -# send files via netcat
 -# on sending side:
 -#  send() {j=$*; tar cpz ${j/%${!#}/}|nc -w 1 ${!#} 51330;}
 -#  send dir* $HOST
 -#  alias receive='nc -vlp 51330 | tar xzvp'
 -
 -# debian stuff:
 -# dh_make -e foo@localhost -f $1
 -# dpkg-buildpackage -rfakeroot
 -# lintian *.deb
 -# dpkg-scanpackages ./ /dev/null | gzip > Packages.gz
 -# dpkg-scansources . | gzip > Sources.gz
 -# grep-dctrl --field Maintainer $* /var/lib/apt/lists/*
 -
 -# other stuff:
 -# convert -geometry 200x200 -interlace LINE -verbose
 -# ldapsearch -x -b "OU=Bedienstete,O=tug" -h ldap.tugraz.at sn=$1
 -# ps -ao user,pcpu,start,command
 -# gpg --keyserver blackhole.pca.dfn.de --recv-keys
 -# xterm -bg black -fg yellow -fn -misc-fixed-medium-r-normal--14-140-75-75-c-90-iso8859-15 -ah
 -# nc -vz $1 1-1024   # portscan via netcat
 -# wget --mirror --no-parent --convert-links
 -# pal -d `date +%d`
 -# autoload -U tetris; zle -N tetris; bindkey '...' ; echo "press ... for playing tennis"
 -#
 -# modify console cursor
 -# see http://www.tldp.org/HOWTO/Framebuffer-HOWTO-5.html
 -# print $'\e[?96;0;64c'
 -# }}}
 -
 -# grml-small cleanups {{{
 +# grml-small cleanups
  
  # The following is used to remove zsh-config-items that do not work
  # in grml-small by default.
@@@ -2757,9 -3890,11 +2761,9 @@@ if (( GRMLSMALL_SPECIFIC > 0 )) && isgr
  
  fi
  
 -#}}}
 -
  zrclocal
  
 -## genrefcard.pl settings {{{
 +## genrefcard.pl settings
  
  ### doc strings for external functions from files
  #m# f5 grml-wallpaper() Sets a wallpaper (try completion for possible values)
  ### example: split functions-search 8,16,24,32
  #@# split functions-search 8
  
 -## }}}
 -
  ## END OF FILE #################################################################
  # vim:filetype=zsh foldmethod=marker autoindent expandtab shiftwidth=4
  # Local variables: