+}
+compdef _functions reload freload
+
+#f1# List symlinks in detail (more detailed version of 'readlink -f' and 'whence -s')
+sll() {
+ [[ -z "$1" ]] && printf 'Usage: %s <file(s)>\n' "$0" && return 1
+ for i in "$@" ; do
+ file=$i
+ while [[ -h "$file" ]] ; do
+ ls -l $file
+ file=$(readlink "$file")
+ done
+ 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" - ; }
+ # manzsh() { /usr/bin/man zshall | most +/"$1" ; }
+ # [[ -f ~/.terminfo/m/mostlike ]] && MYLESS='LESS=C TERMINFO=~/.terminfo TERM=mostlike less' || MYLESS='less'
+ # manzsh() { man zshall | $MYLESS -p $1 ; }
+fi
+
+if check_com -c $PAGER ; then
+ #f1# View Debian's changelog of a given package
+ dchange() {
+ if [[ -r /usr/share/doc/${1}/changelog.Debian.gz ]] ; then
+ $PAGER /usr/share/doc/${1}/changelog.Debian.gz
+ elif [[ -r /usr/share/doc/${1}/changelog.gz ]] ; then
+ $PAGER /usr/share/doc/${1}/changelog.gz
+ else
+ if check_com -c aptitude ; then
+ echo "No changelog for package $1 found, using aptitude to retrieve it."
+ if isgrml ; then
+ aptitude -t unstable changelog ${1}
+ else
+ aptitude changelog ${1}
+ fi
+ else
+ echo "No changelog for package $1 found, sorry."
+ return 1
+ fi
+ fi
+ }
+ _dchange() { _files -W /usr/share/doc -/ }
+ compdef _dchange dchange
+
+ #f1# View Debian's NEWS of a given package
+ dnews() {
+ if [[ -r /usr/share/doc/${1}/NEWS.Debian.gz ]] ; then
+ $PAGER /usr/share/doc/${1}/NEWS.Debian.gz
+ else
+ if [[ -r /usr/share/doc/${1}/NEWS.gz ]] ; then
+ $PAGER /usr/share/doc/${1}/NEWS.gz
+ else
+ echo "No NEWS file for package $1 found, sorry."
+ return 1
+ fi
+ fi
+ }
+ _dnews() { _files -W /usr/share/doc -/ }
+ compdef _dnews dnews
+
+ #f1# View upstream's changelog of a given package
+ uchange() {
+ if [[ -r /usr/share/doc/${1}/changelog.gz ]] ; then
+ $PAGER /usr/share/doc/${1}/changelog.gz
+ else
+ echo "No changelog for package $1 found, sorry."
+ return 1
+ fi
+ }
+ _uchange() { _files -W /usr/share/doc -/ }
+ compdef _uchange uchange
+fi
+
+# zsh profiling
+profile() {
+ ZSH_PROFILE_RC=1 $SHELL "$@"
+}
+
+#f1# Edit an alias via zle
+edalias() {
+ [[ -z "$1" ]] && { echo "Usage: edalias <alias_to_edit>" ; return 1 } || vared aliases'[$1]' ;
+}
+compdef _aliases edalias
+
+#f1# Edit a function via zle
+edfunc() {
+ [[ -z "$1" ]] && { echo "Usage: edfun <function_to_edit>" ; return 1 } || zed -f "$1" ;
+}
+compdef _functions edfunc
+
+# use it e.g. via 'Restart apache2'
+#m# f6 Start() \kbd{/etc/init.d/\em{process}}\quad\kbd{start}
+#m# f6 Restart() \kbd{/etc/init.d/\em{process}}\quad\kbd{restart}
+#m# f6 Stop() \kbd{/etc/init.d/\em{process}}\quad\kbd{stop}
+#m# f6 Reload() \kbd{/etc/init.d/\em{process}}\quad\kbd{reload}
+#m# f6 Force-Reload() \kbd{/etc/init.d/\em{process}}\quad\kbd{force-reload}
+if [[ -d /etc/init.d ]] ; then
+ for i in Start Restart Stop Force-Reload Reload ; do
+ eval "$i() { $SUDO /etc/init.d/\$1 ${i:l} \$2 ; }"
+ done
+fi
+
+#f1# Provides useful information on globbing
+H-Glob() {
+ echo -e "
+ / directories
+ . plain files
+ @ symbolic links
+ = sockets
+ p named pipes (FIFOs)
+ * executable plain files (0100)
+ % device files (character or block special)
+ %b block special files
+ %c character special files
+ r owner-readable files (0400)
+ w owner-writable files (0200)
+ x owner-executable files (0100)
+ A group-readable files (0040)
+ I group-writable files (0020)
+ E group-executable files (0010)
+ R world-readable files (0004)
+ W world-writable files (0002)
+ X world-executable files (0001)
+ s setuid files (04000)
+ S setgid files (02000)
+ t files with the sticky bit (01000)
+
+ print *(m-1) # Files modified up to a day ago
+ print *(a1) # Files accessed a day ago
+ print *(@) # Just symlinks
+ print *(Lk+50) # Files bigger than 50 kilobytes
+ print *(Lk-50) # Files smaller than 50 kilobytes
+ print **/*.c # All *.c files recursively starting in \$PWD
+ print **/*.c~file.c # Same as above, but excluding 'file.c'
+ print (foo|bar).* # Files starting with 'foo' or 'bar'
+ print *~*.* # All Files that do not contain a dot
+ chmod 644 *(.^x) # make all plain non-executable files publically readable
+ print -l *(.c|.h) # Lists *.c and *.h
+ print **/*(g:users:) # Recursively match all files that are owned by group 'users'
+ echo /proc/*/cwd(:h:t:s/self//) # Analogous to >ps ax | awk '{print $1}'<"
+}
+alias help-zshglob=H-Glob