+ if [[ "$TERM" == dumb ]] ; then
+ zstyle ":prompt:grml(|-large|-chroot):*:items:grml-chroot" pre ''
+ zstyle ":prompt:grml(|-large|-chroot):*:items:grml-chroot" post ' '
+ for i in rc user path jobs history date time shell-level; do
+ zstyle ":prompt:grml(|-large|-chroot):*:items:$i" pre ''
+ zstyle ":prompt:grml(|-large|-chroot):*:items:$i" post ''
+ done
+ unset i
+ zstyle ':prompt:grml(|-large|-chroot):right:setup' use-rprompt false
+ elif (( EUID == 0 )); then
+ zstyle ':prompt:grml(|-large|-chroot):*:items:user' pre '%B%F{red}'
+ fi
+
+ # Finally enable one of the prompts.
+ if [[ -n $GRML_CHROOT ]]; then
+ prompt grml-chroot
+ elif [[ $GRMLPROMPT -gt 0 ]]; then
+ prompt grml-large
+ else
+ prompt grml
+ fi
+else
+ grml_prompt_fallback
+fi
+
+# Terminal-title wizardry
+
+function ESC_print () {
+ info_print $'\ek' $'\e\\' "$@"
+}
+function set_title () {
+ info_print $'\e]0;' $'\a' "$@"
+}
+
+function info_print () {
+ local esc_begin esc_end
+ esc_begin="$1"
+ esc_end="$2"
+ shift 2
+ printf '%s' ${esc_begin}
+ printf '%s' "$*"
+ printf '%s' "${esc_end}"
+}
+
+function grml_reset_screen_title () {
+ # adjust title of xterm
+ # see http://www.faqs.org/docs/Linux-mini/Xterm-Title.html
+ [[ ${NOTITLE:-} -gt 0 ]] && return 0
+ case $TERM in
+ (xterm*|rxvt*)
+ set_title ${(%):-"%n@%m: %~"}
+ ;;
+ esac
+}
+
+function grml_vcs_to_screen_title () {
+ if [[ $TERM == screen* ]] ; then
+ if [[ -n ${vcs_info_msg_1_} ]] ; then
+ ESC_print ${vcs_info_msg_1_}
+ else
+ ESC_print "zsh"
+ fi
+ fi
+}
+
+function grml_maintain_name () {
+ # set hostname if not running on host with name 'grml'
+ if [[ -n "$HOSTNAME" ]] && [[ "$HOSTNAME" != $(hostname) ]] ; then
+ NAME="@$HOSTNAME"
+ fi
+}
+
+function grml_cmd_to_screen_title () {
+ # get the name of the program currently running and hostname of local
+ # machine set screen window title if running in a screen
+ if [[ "$TERM" == screen* ]] ; then
+ local CMD="${1[(wr)^(*=*|sudo|ssh|-*)]}$NAME"
+ ESC_print ${CMD}
+ fi
+}
+
+function grml_control_xterm_title () {
+ case $TERM in
+ (xterm*|rxvt*)
+ set_title "${(%):-"%n@%m:"}" "$1"
+ ;;
+ esac
+}
+
+zrcautoload add-zsh-hook || add-zsh-hook () { :; }
+if [[ $NOPRECMD -eq 0 ]]; then
+ add-zsh-hook precmd grml_reset_screen_title
+ add-zsh-hook precmd grml_vcs_to_screen_title
+ add-zsh-hook preexec grml_maintain_name
+ add-zsh-hook preexec grml_cmd_to_screen_title
+ if [[ $NOTITLE -eq 0 ]]; then
+ add-zsh-hook preexec grml_control_xterm_title
+ fi
+fi
+
+# 'hash' some often used directories
+#d# start
+hash -d deb=/var/cache/apt/archives
+hash -d doc=/usr/share/doc
+hash -d linux=/lib/modules/$(command uname -r)/build/
+hash -d log=/var/log
+hash -d slog=/var/log/syslog
+hash -d src=/usr/src
+hash -d templ=/usr/share/doc/grml-templates
+hash -d tt=/usr/share/doc/texttools-doc
+hash -d www=/var/www
+#d# end
+
+# some aliases
+if check_com -c screen ; then
+ if [[ $UID -eq 0 ]] ; then
+ 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
+ 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 [[ "$TERM" != dumb ]]; then
+ #a1# List files with colors (\kbd{ls -F \ldots})
+ alias ls='ls -F '${ls_options:+"${ls_options[*]}"}
+ #a1# List all files, with colors (\kbd{ls -la \ldots})
+ alias la='ls -la '${ls_options:+"${ls_options[*]}"}
+ #a1# List files with long colored list, without dotfiles (\kbd{ls -l \ldots})
+ alias ll='ls -l '${ls_options:+"${ls_options[*]}"}
+ #a1# List files with long colored list, human readable sizes (\kbd{ls -hAl \ldots})
+ alias lh='ls -hAl '${ls_options:+"${ls_options[*]}"}
+ #a1# List files with long colored list, append qualifier to filenames (\kbd{ls -lF \ldots})\\&\quad(\kbd{/} for directories, \kbd{@} for symlinks ...)
+ alias l='ls -lF '${ls_options:+"${ls_options[*]}"}
+else
+ alias ls='ls -F'
+ alias la='ls -la'
+ alias ll='ls -l'
+ alias lh='ls -hAl'
+ alias l='ls -lF'
+fi
+
+alias mdstat='cat /proc/mdstat'
+alias ...='cd ../../'
+
+# generate alias named "$KERNELVERSION-reboot" so you can use boot with kexec:
+if [[ -x /sbin/kexec ]] && [[ -r /proc/cmdline ]] ; then
+ alias "$(uname -r)-reboot"="kexec -l --initrd=/boot/initrd.img-"$(uname -r)" --command-line=\"$(cat /proc/cmdline)\" /boot/vmlinuz-"$(uname -r)""
+fi
+
+# 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'"
+
+# make sure it is not assigned yet
+[[ -n ${aliases[utf2iso]} ]] && unalias utf2iso
+utf2iso() {
+ if isutfenv ; then
+ for ENV in $(env | command grep -i '.utf') ; do
+ eval export "$(echo $ENV | sed 's/UTF-8/iso885915/ ; s/utf8/iso885915/')"
+ done
+ fi
+}
+
+# make sure it is not assigned yet
+[[ -n ${aliases[iso2utf]} ]] && unalias iso2utf
+iso2utf() {
+ if ! isutfenv ; then
+ for ENV in $(env | command grep -i '\.iso') ; do
+ eval export "$(echo $ENV | sed 's/iso.*/UTF-8/ ; s/ISO.*/UTF-8/')"
+ done
+ fi
+}
+
+# especially for roadwarriors using GNU screen and ssh:
+if ! check_com asc &>/dev/null ; then
+ asc() { autossh -t "$@" 'screen -RdU' }
+ compdef asc=ssh
+fi
+
+#f1# Hints for the use of zsh on grml
+zsh-help() {
+ print "$bg[white]$fg[black]
+zsh-help - hints for use of zsh on grml
+=======================================$reset_color"
+
+ print '
+Main configuration of zsh happens in /etc/zsh/zshrc.
+That file is part of the package grml-etc-core, if you want to
+use them on a non-grml-system just get the tar.gz from
+http://deb.grml.org/ or (preferably) get it from the git repository:
+
+ http://git.grml.org/f/grml-etc-core/etc/zsh/zshrc
+
+This version of grml'\''s zsh setup does not use skel/.zshrc anymore.
+The file is still there, but it is empty for backwards compatibility.
+
+For your own changes use these two files:
+ $HOME/.zshrc.pre
+ $HOME/.zshrc.local
+
+The former is sourced very early in our zshrc, the latter is sourced
+very lately.
+
+System wide configuration without touching configuration files of grml
+can take place in /etc/zsh/zshrc.local.