]> gitweb.pimeys.fr Git - config-20-100.git/blobdiff - .zshrc
Ajout du zshrc, même s'il manque encore de commentaires etc.
[config-20-100.git] / .zshrc
diff --git a/.zshrc b/.zshrc
new file mode 100644 (file)
index 0000000..2dda0cb
--- /dev/null
+++ b/.zshrc
@@ -0,0 +1,583 @@
+# Ceci est un zshrc proposé par PEB.
+# Il est issu d'un zshrc pompé allègrement chez une ancienne nounou
+# qui l'avait elle-même pompé chez une ancienne nounou, qui l'avait...
+# Bref.
+#
+# La conf est stockée dans le dossier .zsh, en plusieurs parties, base, extra, et local.
+# local est la conf que vous devriez regarder et éventuellement changer. Cherchez les
+# #~# dans les fichiers, il y aura des mentions de quoi changer.
+#
+# Ce fichier sert à orchestrer tout le bordel.
+#
+# Pour faire marcher ce .zshrc, soit vous copiez .zshrc et .zsh dans votre home, soit
+# vous faites des liens symboliques vers l'endroit de votre home où ils se trouvent.
+#
+###############################################################################
+# This file is sourced only for interactive shells. It
+# should contain commands to set up aliases, functions,
+# options, key bindings, etc.
+#
+# Global Order: zshenv, zprofile, zshrc, zlogin
+################################################################################
+
+ZSHDIR=$HOME/.zsh
+
+# source conf files.
+for file in $ZSHDIR/rc/base/*; do
+    source $file
+done
+# done
+
+# zmv is a zsh massive renaming tool
+# Usage:
+#   zmv [OPTIONS] oldpattern newpattern
+# where oldpattern contains parenthesis surrounding patterns which will
+# be replaced in turn by $1, $2, ... in newpattern.  For example,
+#   zmv '(*).lis' '$1.txt'
+# renames 'foo.lis' to 'foo.txt', 'my.old.stuff.lis' to 'my.old.stuff.txt',
+# and so on.  Something simpler (for basic commands) is the -W option:
+#   zmv -W '*.lis' '*.txt'
+# This does the same thing as the first command, but with automatic conversion
+# of the wildcards into the appropriate syntax.  If you combine this with
+# noglob, you don't even need to quote the arguments.  For example,
+#   alias mmv='noglob zmv -W'
+#   mmv *.c.orig orig/*.c
+zrcautoload zmv
+
+# I'm not pretty sure of what it does. :D
+zrcautoload history-search-end
+
+#m# k ESC-h Call \kbd{run-help} for the 1st word on the command line
+alias run-help >&/dev/null && unalias run-help
+for rh in run-help{,-git,-svk,-svn}; do
+    zrcautoload $rh
+done; unset rh
+
+# loads completion system
+if zrcautoload compinit ; then
+    compinit || print 'Notice: no compinit available :('
+else
+    # creates fake functions
+    print 'Notice: no compinit available :('
+    function zstyle { }
+    function compdef { }
+fi
+
+# zed - /usr/share/zsh/functions/Misc/zed
+#
+# No other shell could do this.
+# Edit small files with the command line editor.
+# Use ^X^W to save, ^C to abort.
+# Option -f: edit shell functions.  (Also if called as fned.)
+zrcautoload zed
+
+# Loads .so modules in /usr/lib/i386-linux-gnu/zsh/${ZSHVERSION}/zsh/
+for mod in complist deltochar mathfunc ; do
+    zmodload -i zsh/${mod} 2>/dev/null || print "Notice: no ${mod} available :("
+done
+
+# autoload zsh modules when they are referenced
+# uses bidimensionnal array to give option to zmodload
+tmpargs=(
+    a   stat
+    a   zpty
+    ap  mapfile
+)
+
+while (( ${#tmpargs} > 0 )) ; do
+    zmodload -${tmpargs[1]} zsh/${tmpargs[2]} ${tmpargs[2]}
+    shift 2 tmpargs
+done
+unset tmpargs
+
+# dirstack handling
+# I wasn't able to find a good .zsh/rc/* file for this
+DIRSTACKSIZE=${DIRSTACKSIZE:-20}
+DIRSTACKFILE=${DIRSTACKFILE:-${HOME}/.zdirs}
+
+if [[ -f ${DIRSTACKFILE} ]] && [[ ${#dirstack[*]} -eq 0 ]] ; then
+    dirstack=( ${(f)"$(< $DIRSTACKFILE)"} )
+    # "cd -" won't work after login by just setting $OLDPWD, so
+    [[ -d $dirstack[0] ]] && cd $dirstack[0] && cd $OLDPWD
+fi
+
+chpwd() {
+    local -ax my_stack
+    my_stack=( ${PWD} ${dirstack} )
+    builtin print -l ${(u)my_stack} >! ${DIRSTACKFILE}
+}
+
+# In order to set prompt, and because we love comfort
+# These files are not mandatory, but removing them
+# would break the PS1 prompt.
+for file in $ZSHDIR/rc/extra/*; do
+    source $file
+done
+
+# {{{ set prompt
+if zrcautoload promptinit && promptinit 2>/dev/null ; then
+    promptinit # people should be able to use their favourite prompt
+else
+    print 'Notice: no promptinit available :('
+fi
+
+setopt prompt_subst
+
+# make sure to use right prompt only when not running a command
+setopt transient_rprompt
+
+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}
+    for item in "$@" ; do
+        printf '%s ' "$item"
+    done
+    printf '%s' "${esc_end}"
+}
+
+#+--------------------------------------+
+#|            PROMPT                    |
+#+--------------------------------------+
+
+# set colors for use in prompts (no longer useful, I'll trash it some day) {{{
+if zrcautoload colors 2> /dev/null && colors 2>/dev/null ; then
+    BLUE="${fg[blue]}"
+    RED="${fg_bold[red]}"
+    GREEN="${fg[green]}"
+    CYAN="${fg[cyan]}"
+    MAGENTA="${fg[magenta]}"
+    YELLOW="${fg[yellow]}"
+    WHITE="${fg[white]}"
+    NO_COLOUR="${reset_color}"
+else
+    BLUE=$'\e[1;34m'
+    RED=$'\e[1;31m'
+    GREEN=$'\e[1;32m'
+    CYAN=$'\e[1;36m'
+    WHITE=$'\e[1;37m'
+    MAGENTA=$'\e[1;35m'
+    YELLOW=$'\e[1;33m'
+    NO_COLOUR=$'\e[0m'
+fi
+
+# Change vcs_info formats for the grml prompt. The 2nd format sets up
+# $vcs_info_msg_1_ to contain "zsh: repo-name" used to set our screen title.
+# TODO: The included vcs_info() version still uses $VCS_INFO_message_N_.
+#       That needs to be the use of $VCS_INFO_message_N_ needs to be changed
+#       to $vcs_info_msg_N_ as soon as we use the included version.
+if [[ "$TERM" == dumb ]] ; then
+    zstyle ':vcs_info:*' actionformats "(%s)-[%r/%b|%a]" "(%s)-[%r/%b|%a]"
+    zstyle ':vcs_info:*' formats       "(%s)-[%r/%b]"    "(%s)-[%r/%b]"
+else
+    # these are the same, just with a lot of colours:
+    zstyle ':vcs_info:*' actionformats "%F{magenta}(%F{no}%s%F{magenta})%F{yellow}-%F{magenta}[%F{green}%r%F{yellow}/%F{green}%b%F{yellow}|%F{red}%a%F{magenta}]%F{no}" \
+                                       "(%s)-[%r/%b|%a]" 
+    zstyle ':vcs_info:*' formats       "%F{magenta}(%F{no}%s%F{magenta})%F{yellow}-%F{magenta}[%F{green}%r%F{yellow}/%F{green}%b%F{magenta}]%F{no}" \
+                                       "(%s)-[%r/%b]"
+    zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat "%b%F{red}:%F{yellow}%r"
+fi
+
+# Built using /usr/share/zsh/functions/Prompts/prompt_adam2…
+EXITCODE="%(?..[%?]%1v)"
+
+# Set of chars used in prompt
+prompt_tlc='.'
+prompt_mlc='|'
+prompt_blc='\`'
+prompt_hyphen='-'
+
+# Set of colors used in prompt.
+#~# Couleurs du prompt
+prompt_color1='cyan'    # hyphens
+prompt_color2='green'   # current directory
+prompt_color3='yellow'  # user@host
+prompt_color4='cyan'    # user input
+prompt_color5='red'     # date
+
+# see man zshmisc for explanation about %B, %F, %b…
+prompt_tbox="%B%F{$prompt_color1}${prompt_tlc}%b%F{$prompt_color1}${prompt_hyphen}"
+prompt_bbox="%B%F{$prompt_color1}${prompt_blc}${prompt_hyphen}%b%F{$prompt_color1}"
+
+# This is a cute hack. Well I like it, anyway.
+prompt_bbox_to_mbox=$'%{\e[A\r'"%}%B%F{$prompt_color1}${prompt_mlc}%b%F{$prompt_color1}${prompt_hyphen}%{"$'\e[B%}'
+
+# left and right parenthesis
+prompt_l_paren="%B%F{black}("
+prompt_r_paren="%B%F{black})"
+
+# User : %n, host : %M
+prompt_user_host="%b%F{$prompt_color3}%n%B%F{$prompt_color3}@%b%F{$prompt_color3}%M"
+
+# line 1 is pwd, username, host, hour…
+prompt_line_1a="$prompt_tbox$prompt_l_paren%B%F{$prompt_color5}%*$prompt_r_paren%b%F{$prompt_color1}$prompt_hyphen$prompt_l_paren%B%F{$prompt_color2}%~$prompt_r_paren%b%F{$prompt_color1}"
+prompt_line_1b="$prompt_l_paren$prompt_user_host$prompt_r_paren%b%F{$prompt_color1}${prompt_hyphen}"
+
+# line 2 is prompt
+prompt_line_2="$prompt_bbox${prompt_hyphen}%B%F{white}"
+prompt_char="%(!.#.>)"
+prompt_opts=(cr subst percent)
+
+# This function is called before each prompt regenation
+precmd () {
+    setopt noxtrace localoptions extendedglob
+    local prompt_line_1
+    # update VCS information
+    vcs_info
+
+    if [[ $TERM == screen* ]] ; then
+        if [[ -n ${VCS_INFO_message_1_} ]] ; then
+            ESC_print ${VCS_INFO_message_1_}
+        else
+            ESC_print "zsh"
+        fi
+    fi
+
+    RPROMPT="%(?..:()"
+    
+    # Generates battery info
+    batcolor
+    RPROMPT="${BATTERY} ${RPROMPT}"
+    
+    # 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
+
+    local prompt_line_1a_width=${#${(S%%)prompt_line_1a//(\%([KF1]|)\{*\}|\%[Bbkf])}}
+    local prompt_line_1b_width=${#${(S%%)prompt_line_1b//(\%([KF1]|)\{*\}|\%[Bbkf])}}
+    local prompt_vcs_width=${#${(S%%)VCS_INFO_message_0_//(\%([KF1]|)\{*\}|\%[Bbkf])}}
+  
+    local prompt_padding_size=$(( COLUMNS - prompt_line_1a_width - prompt_line_1b_width - prompt_vcs_width - 2 ))
+
+    # Try to fit in long path and user@host, and vcs_info
+    if (( prompt_padding_size > 0 )); then
+      local prompt_padding
+      eval "prompt_padding=\${(l:${prompt_padding_size}::${prompt_hyphen}:)_empty_zz}"
+      prompt_line_1="$prompt_line_1a$prompt_padding$prompt_hyphen$VCS_INFO_message_0_%F{$prompt_color1}$prompt_hyphen$prompt_line_1b"
+    else
+        prompt_padding_size=$(( COLUMNS - prompt_line_1a_width - prompt_vcs_width - 2 ))
+      
+        # Didn't fit; try to fit in long path and vcs_info
+        if (( prompt_padding_size > 0 )); then
+            local prompt_padding
+            eval "prompt_padding=\${(l:${prompt_padding_size}::${prompt_hyphen}:)_empty_zz}"
+            prompt_line_1="$prompt_line_1a$prompt_padding$prompt_hyphen$VCS_INFO_message_0_%F{$prompt_color1}$prompt_hyphen"
+        else
+            prompt_padding_size=$(( COLUMNS - prompt_line_1a_width ))
+
+            # Didn't fit; try to fit in just long path
+            if (( prompt_padding_size > 0 )); then
+                eval "prompt_padding=\${(l:${prompt_padding_size}::${prompt_hyphen}:)_empty_zz}"
+                prompt_line_1="$prompt_line_1a$prompt_padding"
+            else
+                # Still didn't fit; truncate 
+                local prompt_pwd_size=$(( COLUMNS - 5 ))
+                prompt_line_1="$prompt_tbox$prompt_l_paren%B%F{$prompt_color2}%$prompt_pwd_size<...<%~%<<$prompt_r_paren%b%F{$prompt_color1}$prompt_hyphen"
+            fi
+        fi
+    fi
+  
+  
+    # And, makes it good
+    PS1="$prompt_line_1$prompt_newline$prompt_line_2%B%F{red}${EXITCODE}%b%F{$prompt_color1}$prompt_hyphen%B%F{white}$prompt_char %b%f%k"
+    PS2="$prompt_line_2$prompt_bbox_to_mbox%B%F{white}%_> %b%f%k"
+    PS3="$prompt_line_2$prompt_bbox_to_mbox%B%F{white}?# %b%f%k"
+
+    # Text color and style for prompt
+    zle_highlight[(r)default:*]="default:fg=$prompt_color4,bold"
+}
+
+# preexec() => a function running before every command
+preexec () {
+    # set hostname if not running on host with name 'grml'
+    if [[ -n "$HOSTNAME" ]] && [[ "$HOSTNAME" != $(hostname) ]] ; then
+       NAME="@$HOSTNAME"
+    fi
+    # 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|-*)]}       # don't use hostname
+        local CMD="${1[(wr)^(*=*|sudo|ssh|-*)]}$NAME" # use hostname
+        ESC_print ${CMD}
+    fi
+    # adjust title of xterm
+    [[ ${NOTITLE} -gt 0 ]] && return 0
+    case $TERM in
+        (xterm*|rxvt*)
+            set_title "${(%):-"%n@%m:"}" "$1"
+            ;;
+    esac
+}
+
+
+# # set variable debian_chroot if running in a chroot with /etc/debian_chroot
+# if [[ -z "$debian_chroot" ]] && [[ -r /etc/debian_chroot ]] ; then
+#     debian_chroot=$(cat /etc/debian_chroot)
+# fi
+# 
+# # don't use colors on dumb terminals (like emacs):
+# if [[ "$TERM" == dumb ]] ; then
+#     PROMPT="${debian_chroot:+($debian_chroot)}%n@%m %# "
+# 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)
+#     if [[ $GRMLPROMPT -gt 0 ]] ; then
+#         PROMPT="${CYAN}[%j running job(s)] ${GREEN}{history#%!} ${RED}%(3L.+.) ${BLUE}%* %D${BLUE}%n${NO_COLOUR}@%m %# "
+#     else
+#         # This assembles the primary prompt string
+#         if (( EUID != 0 )); then
+#             PROMPT="%{${WHITE}%}${debian_chroot:+($debian_chroot)}%{${BLUE}%}%n%{${NO_COLOUR}%}@%m %# "
+#         else
+#             PROMPT="%{${WHITE}%}${debian_chroot:+($debian_chroot)}%{${RED}%}%n%{${NO_COLOUR}%}@%m %# "
+#         fi
+#     fi
+# fi
+
+# if we are inside a grml-chroot set a specific prompt theme
+# 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
+#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
+# }}}
+
+# I like clean prompt, so provide simple way to get that
+check_com 0 || alias 0='return 0'
+
+unlimit
+limit stack 8192
+limit -s
+
+# called later (via grmlcomp)
+# note: use 'zstyle' for getting current settings
+#         press ^Xh (control-x h) for getting tags in context; ^X? (control-x ?) to run complete_debug with trace output
+grmlcomp() {
+    # TODO: This could use some additional information
+
+    # allow one error for every three characters typed in approximate completer
+    zstyle ':completion:*:approximate:'    max-errors 'reply=( $((($#PREFIX+$#SUFFIX)/3 )) numeric )'
+
+    # don't complete backup files as executables
+    zstyle ':completion:*:complete:-command-::commands' ignored-patterns '(aptitude-*|*\~)'
+
+    # start menu completion only if it could find no unambiguous initial string
+    zstyle ':completion:*:correct:*'       insert-unambiguous true
+    zstyle ':completion:*:corrections'     format $'%{\e[0;31m%}%d (errors: %e)%{\e[0m%}'
+    zstyle ':completion:*:correct:*'       original true
+
+    # activate color-completion
+    zstyle ':completion:*:default'         list-colors ${(s.:.)LS_COLORS}
+
+    # format on completion
+    zstyle ':completion:*:descriptions'    format $'%{\e[0;31m%}completing %B%d%b%{\e[0m%}'
+
+    # complete 'cd -<tab>' with menu
+    zstyle ':completion:*:*:cd:*:directory-stack' menu yes select
+
+    # insert all expansions for expand completer
+    zstyle ':completion:*:expand:*'        tag-order all-expansions
+    zstyle ':completion:*:history-words'   list false
+
+    # activate menu
+    zstyle ':completion:*:history-words'   menu yes
+
+    # ignore duplicate entries
+    zstyle ':completion:*:history-words'   remove-all-dups yes
+    zstyle ':completion:*:history-words'   stop yes
+
+    # match uppercase from lowercase
+    zstyle ':completion:*'                 matcher-list 'm:{a-z}={A-Z}'
+
+    # separate matches into groups
+    zstyle ':completion:*:matches'         group 'yes'
+    zstyle ':completion:*'                 group-name ''
+
+    # if there are more than 5 options allow selecting from a menu
+    zstyle ':completion:*'               menu select=5
+
+    zstyle ':completion:*:messages'        format '%d'
+    zstyle ':completion:*:options'         auto-description '%d'
+
+    # describe options in full
+    zstyle ':completion:*:options'         description 'yes'
+
+    # on processes completion complete all user processes
+    zstyle ':completion:*:processes'       command 'ps -au$USER'
+
+    # offer indexes before parameters in subscripts
+    zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters
+
+    # provide verbose completion information
+    zstyle ':completion:*'                 verbose true
+
+    # recent (as of Dec 2007) zsh versions are able to provide descriptions
+    # for commands (read: 1st word in the line) that it will list for the user
+    # to choose from. The following disables that, because it's not exactly fast.
+    zstyle ':completion:*:-command-:*:'    verbose false
+
+    # set format for warnings
+    zstyle ':completion:*:warnings'        format $'%{\e[0;31m%}No matches for:%{\e[0m%} %d'
+
+    # define files to ignore for zcompile
+    zstyle ':completion:*:*:zcompile:*'    ignored-patterns '(*~|*.zwc)'
+    zstyle ':completion:correct:'          prompt 'correct to: %e'
+
+    # Ignore completion functions for commands you don't have:
+    zstyle ':completion::(^approximate*):*:functions' ignored-patterns '_*'
+
+    # Provide more processes in completion of programs like killall:
+    zstyle ':completion:*:processes-names' command 'ps c -u ${USER} -o command | uniq'
+
+    # complete manual by their section
+    zstyle ':completion:*:manuals'    separate-sections true
+    zstyle ':completion:*:manuals.*'  insert-sections   true
+    zstyle ':completion:*:man:*'      menu yes select
+
+    # provide .. as a completion
+    zstyle ':completion:*' special-dirs ..
+
+    # run rehash on completion so new installed program are found automatically:
+    _force_rehash() {
+        (( CURRENT == 1 )) && rehash
+        return 1
+    }
+
+    ## correction
+    # try to be smart about when to use what completer...
+    setopt correct
+    zstyle -e ':completion:*' completer '
+        if [[ $_last_try != "$HISTNO$BUFFER$CURSOR" ]] ; then
+            _last_try="$HISTNO$BUFFER$CURSOR"
+            reply=(_complete _match _ignored _prefix _files)
+        else
+            if [[ $words[1] == (rm|mv) ]] ; then
+                reply=(_complete _files)
+            else
+                reply=(_oldlist _expand _force_rehash _complete _ignored _correct _approximate _files)
+            fi
+        fi'
+
+    # command for process lists, the local web server details and host completion
+    zstyle ':completion:*:urls' local 'www' '/var/www/' 'public_html'
+
+    # caching
+    [[ -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-) {{{ */
+    [[ -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=()
+    hosts=(
+        $(hostname)
+        "$_ssh_hosts[@]"
+        "$_etc_hosts[@]"
+        grml.org
+        localhost
+    )
+    zstyle ':completion:*:hosts' hosts $hosts
+    # TODO: so, why is this here?
+    #  zstyle '*' hosts $hosts
+
+    # use generic completion system for programs not yet defined; (_gnu_generic works
+    # with commands that provide a --help option with "standard" gnu-like output.)
+    for compcom in cp deborphan df feh fetchipac head hnb ipacsum mv \
+                   pal stow tail uname ; do
+        [[ -z ${_comps[$compcom]} ]] && compdef _gnu_generic ${compcom}
+    done; unset compcom
+
+    # see upgrade function in this file
+    compdef _hosts upgrade
+}
+
+grmlstuff() {
+# people should use 'grml-x'!
+    startx() {
+        if [[ -e /etc/X11/xorg.conf ]] ; then
+            [[ -x /usr/bin/startx ]] && /usr/bin/startx "$@" || /usr/X11R6/bin/startx "$@"
+        else
+            echo "Please use the script \"grml-x\" for starting the X Window System
+because there does not exist /etc/X11/xorg.conf yet.
+If you want to use startx anyway please call \"/usr/bin/startx\"."
+            return -1
+        fi
+    }
+
+    xinit() {
+        if [[ -e /etc/X11/xorg.conf ]] ; then
+            [[ -x /usr/bin/xinit ]] && /usr/bin/xinit || /usr/X11R6/bin/xinit
+        else
+            echo "Please use the script \"grml-x\" for starting the X Window System.
+because there does not exist /etc/X11/xorg.conf yet.
+If you want to use xinit anyway please call \"/usr/bin/xinit\"."
+            return -1
+        fi
+    }
+
+    if check_com -c 915resolution; then
+        855resolution() {
+            echo "Please use 915resolution as resolution modifying tool for Intel \
+graphic chipset."
+            return -1
+        }
+    fi
+
+    #a1# Output version of running grml
+    alias grml-version='cat /etc/grml_version'
+
+    if check_com -c rebuildfstab ; then
+        #a1# Rebuild /etc/fstab
+        alias grml-rebuildfstab='rebuildfstab -v -r -config'
+    fi
+
+    if check_com -c grml-debootstrap ; then
+        debian2hd() {
+            echo "Installing debian to harddisk is possible by using grml-debootstrap."
+            return 1
+        }
+    fi
+}
+
+grmlcomp
+
+# {{{ keephack
+xsource "/etc/zsh/keephack"
+# }}}
+
+#########################################
+##      YOUR PERSONNAL STUFF HERE      ##
+#########################################
+
+# Loads local files
+for file in $ZSHDIR/rc/local/*; do
+    source $file
+done
+
+# Delete remaining xfunctions
+xunfunction
+
+# }}}