X-Git-Url: https://git.grml.org/?a=blobdiff_plain;f=etc%2Fzsh%2Fzshrc;h=7e74bfcfd1f41a1e58aa9f486deb9c8078df00a4;hb=575c92ff4335c1fb35a8dc4995ff12e298058eee;hp=f034880a62fc8c886156284459fb6edd56785209;hpb=5b84a72e933748d16e67e6abfa8ee55879a97440;p=grml-etc-core.git diff --git a/etc/zsh/zshrc b/etc/zsh/zshrc index f034880..7e74bfc 100644 --- a/etc/zsh/zshrc +++ b/etc/zsh/zshrc @@ -3,7 +3,7 @@ # Authors: grml-team (grml.org), (c) Michael Prokop # Bug-Reports: see http://grml.org/bugs/ # License: This file is licensed under the GPL v2. -# Latest change: Sam Mär 17 20:12:26 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, @@ -88,8 +88,16 @@ # 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 @@ -255,11 +263,13 @@ fi 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' @@ -433,17 +443,25 @@ fi # 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 @@ -466,15 +484,15 @@ 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|-*)]} # 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) @@ -512,11 +530,11 @@ fi # 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 @@ -569,6 +587,9 @@ ${BLUE}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< %# " 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 @@ -603,6 +624,7 @@ ${BLUE}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< %# " unsetopt prompt_cr export PS1="%m%# " nice -n -20 speechd-up + sleep 2 flite -o play -t "Finished setting up software synthesizer" fi ' @@ -721,6 +743,14 @@ Please use the wodim binary instead' ; return 1" 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(){ @@ -751,12 +781,6 @@ Run "grml-tips ssl-certificate" if you need further instructions. # {{{ 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 @@ -807,20 +831,20 @@ grmlcomp() { } # 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 @@ -971,6 +995,18 @@ If you want to use xinit anyway please call \"/usr/bin/xinit\"." } compdef _functions reload freload + # list symlinks in detail (more detailed version of 'readlink -f' and 'whence -s') + sll() { + [ -z "$1" ] && printf 'Usage: %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" } @@ -981,33 +1017,35 @@ If you want to use xinit anyway please call \"/usr/bin/xinit\"." # manzsh() { man zshall | $MYLESS -p $1 ; } fi -# use "dchange " 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 " 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 " 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 " 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 () { @@ -1113,6 +1151,17 @@ If you want to use xinit anyway please call \"/usr/bin/xinit\"." } functions peval &>/dev/null && alias calc=peval + # brltty seems to have problems with utf8 environment and/or font Uni3-Terminus16 under + # certain circumstances, so work around it, no matter which environment we have + brltty() { + if [ -z "$DISPLAY" ] ; then + consolechars -f /usr/share/consolefonts/default8x16.psf.gz + command brltty "$@" + else + command brltty "$@" + fi + } + # Switching shell safely and efficiently? http://www.zsh.org/mla/workers/2001/msg02410.html # bash() { # NO_SWITCH="yes" command bash "$@"