# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
# Bug-Reports: see http://grml.org/bugs/
# License: This file is licensed under the GPL v2.
-# Latest change: Mit Mär 14 15:41:03 CET 2007 [mika]
+# Latest change: Son Apr 29 13:16:44 CEST 2007 [mika]
################################################################################
# This file is sourced only for interactive shells. It
# should contain commands to set up aliases, functions,
# Search path for the cd comman
# cdpath=(.. ~)
-# Support our own site-functions
- [ -d /etc/zsh/site-functions ] && FPATH=/etc/zsh/site-functions:$FPATH
+# completion functions go to /etc/zsh/completion.d
+# function files may be put into /etc/zsh/functions.d, from where they
+# will be automatically autoloaded.
+ [[ -d /etc/zsh/completion.d ]] && fpath+=( /etc/zsh/completion.d )
+ if [[ -d /etc/zsh/functions.d ]] ; then
+ fpath+=( /etc/zsh/functions.d )
+ for func in /etc/zsh/functions.d/[^_]*[^~] ; do
+ autoload -U ${func:t}
+ done
+ fi
# automatically remove duplicates from these arrays
typeset -U path cdpath fpath manpath
bindkey '^Xi' insert-unicode-char
# just type 'cd ...' to get 'cd ../..'
- rationalise-dot() {
- if [[ $LBUFFER = *.. ]]; then
- LBUFFER+=/..
- else
- LBUFFER+=.
- fi
- }
- zle -N rationalise-dot
- bindkey . rationalise-dot
+# rationalise-dot() {
+# if [[ $LBUFFER = *.. ]]; then
+# LBUFFER+=/..
+# else
+# LBUFFER+=.
+# fi
+# }
+# zle -N rationalise-dot
+# bindkey . rationalise-dot
# bindkey '\eq' push-line-or-edit
# }}}
autoload history-search-end
# we don't want to quote/espace URLs on our own...
- if autoload -U url-quote-magic ; then
- zle -N self-insert url-quote-magic
- else
- print 'Notice: no url-quote-magic available :('
- fi
+ # if autoload -U url-quote-magic ; then
+ # zle -N self-insert url-quote-magic
+ # zstyle ':url-quote-magic:*' url-metas '*?[]^()~#{}='
+ # else
+ # print 'Notice: no url-quote-magic available :('
+ # fi
+ alias url-quote='autoload -U url-quote-magic ; zle -N self-insert url-quote-magic'
alias run-help >&/dev/null && unalias run-help
autoload run-help # use via 'esc-h'
# precmd () { setopt promptsubst; [[ -o interactive ]] && jobs -l;
+ # make sure to use right prompt only when not running a command
+ is4 && setopt transient_rprompt
+
is4 && [[ -z $NOPRECMD ]] && precmd () {
[[ -n $NOPRECMD ]] && return 0
+ # allow manual overwriting of RPROMPT
+ if [[ -n $RPROMPT ]] ; then
+ [[ $TERM == screen* ]] && echo -n $'\ekzsh\e\\'
+ return 0
+ fi
# just use DONTSETRPROMPT=1 to be able to overwrite RPROMPT
- if [[ -z ${DONTSETRPROMPT} ]] ; then
- if [ -n "$BATTERY" ] ; then
- # RPROMPT="%(?..:()% ${PERCENT}${SCREENTITLE}"
- RPROMPT="${PERCENT}${SCREENTITLE}"
- else
- # RPROMPT="%(?..:()% ${SCREENTITLE}"
- RPROMPT="${SCREENTITLE}"
- fi
+ if [[ -z $DONTSETRPROMPT ]] ; then
+ if [[ -n $BATTERY ]] ; then
+ RPROMPT="%(?..:()% ${PERCENT}${SCREENTITLE}"
+ # RPROMPT="${PERCENT}${SCREENTITLE}"
+ else
+ RPROMPT="%(?..:()% ${SCREENTITLE}"
+ # RPROMPT="${SCREENTITLE}"
+ fi
fi
# adjust title of xterm
# see http://www.faqs.org/docs/Linux-mini/Xterm-Title.html
# 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|-*)]} # dont't use hostname
- local CMD="${1[(wr)^(*=*|sudo|ssh|-*)]}$NAME" # use hostname
- echo -ne "\ek$CMD\e\\"
+ # local CMD=${1[(wr)^(*=*|sudo|ssh|-*)]} # dont't use hostname
+ local CMD="${1[(wr)^(*=*|sudo|ssh|-*)]}$NAME" # use hostname
+ echo -ne "\ek$CMD\e\\"
fi
# set the screen title to "zsh" when sitting at the command prompt:
if [[ "$TERM" == screen* ]]; then
- SCREENTITLE=$'%{\ekzsh\e\\%}'
+ SCREENTITLE=$'%{\ekzsh\e\\%}'
else
- SCREENTITLE=''
+ SCREENTITLE=''
fi
# adjust title of xterm
case $TERM in (xterm*|rxvt)
# don't use colors on dumb terminals (like emacs):
if [[ "$TERM" == dumb ]] ; then
- PROMPT="${EXITCODE}${debian_chroot:+($debian_chroot)}%n@%m %40<...<%B%~%b%<< %# "
+ 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)
- if [[ -n "$GRMLPROMPT" ]]; then
+ if [[ -n $GRMLPROMPT ]]; then
PROMPT="${RED}${EXITCODE}${CYAN}[%j running job(s)] ${GREEN}{history#%!} ${RED}%(3L.+.) ${BLUE}%* %D
${BLUE}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< %# "
else
alias l='ls -lF'
fi
+ alias mdstat='cat /proc/mdstat'
+ alias ...='cd ../../'
+
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 rd='rmdir'
alias md='mkdir'
- alias swspeak="setopt singlelinezle ; unsetopt prompt_cr ; export PS1='%m%# ' ; speechd-up" # set up software synth.
+ # see http://www.cl.cam.ac.uk/~mgk25/unicode.html#term for details
+ alias term2iso="echo 'Setting terminal to iso mode' ; echo -e '\e%@'"
+ alias term2utf="echo 'Setting terminal to utf-8 mode'; echo -e '\e%G'"
+
+ alias utf2iso='if isutfenv ; then
+ for ENV in `env | grep UTF` ; do
+ eval export "$(echo $ENV | sed 's/UTF-8/iso885915/')"
+ done
+ fi'
+ alias iso2utf='if isutfenv ; then
+ for ENV in `env | grep '\.iso'` ; do
+ eval export "$(echo $ENV | sed 's/iso.*/UTF-8/')"
+ done
+ fi'
+
+# set up software synthesizer via speakup
+ alias swspeak='
+ aumix -w 90 -v 90 -p 90 -m 90
+ if ! [ -r /dev/softsynth ] ; then
+ flite -o play -t "Sorry, software synthesizer not available. Did you boot with swspeak bootoption?"
+ return 1
+ else
+ setopt singlelinezle
+ unsetopt prompt_cr
+ export PS1="%m%# "
+ nice -n -20 speechd-up
+ sleep 2
+ flite -o play -t "Finished setting up software synthesizer"
+ fi
+ '
# I like clean prompt, so provide simple way to get that
alias 0 &>/dev/null || functions 0 &>/dev/null || alias 0='return 0'
alias acp='apt-cache policy'
alias adg="$SUDO apt-get dist-upgrade"
alias agi="$SUDO apt-get install"
+ alias ati="$SUDO aptitude install"
alias ag="$SUDO apt-get upgrade"
alias au="$SUDO apt-get update"
+ alias up="$SUDO aptitude update ; $SUDO aptitude upgrade"
alias dbp='dpkg-buildpackage'
alias ge='grep-excuses'
fi
fi
+# get_tw_cli has been renamed into get_3ware
+ if [ -x /usr/bin/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 compability, so provide an alternative therefore
if ! [ -x /usr/sbin/apache2-ssl-certificate ] ; then
function apache2-ssl-certificate(){
# {{{ completion stuff
-# Where to look for autoloaded function definitions
- if [ -d /etc/zsh/completion.d ] ; then
- local comp=/etc/zsh/completion.d
- for func in $comp/*(N-.:t); . ${comp}/${func}
- fi
-
# called later (via is4 && grmlcomp)
# notice: 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
}
# some people don't like the automatic correction - so run 'NOCOR=1 zsh' to deactivate it
if [[ -n "$NOCOR" ]] ; then
- zstyle ':completion:*' completer _oldlist _expand _force_rehash _complete
+ zstyle ':completion:*' completer _oldlist _expand _force_rehash _complete _files
setopt nocorrect # do not try to correct the spelling if possible
else
-# zstyle ':completion:*' completer _oldlist _expand _force_rehash _complete _correct _approximate
+# zstyle ':completion:*' completer _oldlist _expand _force_rehash _complete _correct _approximate _files
setopt correct # try to correct the spelling if possible
zstyle -e ':completion:*' completer '
if [[ $_last_try != "$HISTNO$BUFFER$CURSOR" ]]; then
_last_try="$HISTNO$BUFFER$CURSOR"
- reply=(_complete _match _prefix)
+ reply=(_complete _match _prefix _files)
else
if [[ $words[1] = (rm|mv) ]]; then
- reply=(_complete)
+ reply=(_complete _files)
else
- reply=(_oldlist _expand _force_rehash _complete _correct _approximate)
+ reply=(_oldlist _expand _force_rehash _complete _correct _approximate _files)
fi
fi'
fi
}
compdef _functions reload freload
+ # 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 type -p qma &>/dev/null ; then
manzsh() { qma zshall "$1" }
# manzsh() { man zshall | $MYLESS -p $1 ; }
fi
-# use "dchange <package-name>" to view Debian's changelog of the package:
- dchange() {
- if [ -r /usr/share/doc/${1}/changelog.Debian.gz ] ; then
- most /usr/share/doc/${1}/changelog.Debian.gz
- else
- if [ -r /usr/share/doc/${1}/changelog.gz ] ; then
- most /usr/share/doc/${1}/changelog.gz
- else
- echo "No changelog for package $1 found, sorry."
- return 1
- fi
- fi
- }
- _dchange() { _files -W /usr/share/doc -/ }
- compdef _dchange dchange
+ if [ -x /usr/bin/most ] ; then
+ # use "dchange <package-name>" to view Debian's changelog of the package:
+ dchange() {
+ if [ -r /usr/share/doc/${1}/changelog.Debian.gz ] ; then
+ most /usr/share/doc/${1}/changelog.Debian.gz
+ else
+ if [ -r /usr/share/doc/${1}/changelog.gz ] ; then
+ most /usr/share/doc/${1}/changelog.gz
+ else
+ echo "No changelog for package $1 found, sorry."
+ return 1
+ fi
+ fi
+ }
+ _dchange() { _files -W /usr/share/doc -/ }
+ compdef _dchange dchange
-# use "uchange <package-name>" to view upstream's changelog of the package:
- uchange() {
- if [ -r /usr/share/doc/${1}/changelog.gz ] ; then
- most /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
+ # use "uchange <package-name>" to view upstream's changelog of the package:
+ uchange() {
+ if [ -r /usr/share/doc/${1}/changelog.gz ] ; then
+ most /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 () {