X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=etc%2Fzsh%2Fzshrc;h=734a697ae41baf59142d4e11b5d2288634b24e95;hb=c0c162e75f6602f2cf654cdb5be3d982b42b1115;hp=4ee87375f8f15d9e3f6ea620b23415e24fa9509a;hpb=3cf8371bd1ed9e7d95dff34653bfe0ac90ab75a1;p=grml-etc-core.git diff --git a/etc/zsh/zshrc b/etc/zsh/zshrc index 4ee8737..734a697 100644 --- a/etc/zsh/zshrc +++ b/etc/zsh/zshrc @@ -1,4 +1,4 @@ -# Filename: zshrc +# Filename: /etc/zsh/zshrc # Purpose: config file for zsh (z shell) # Authors: grml-team (grml.org), (c) Michael Prokop # Bug-Reports: see http://grml.org/bugs/ @@ -233,7 +233,12 @@ NOPRECMD=${NOPRECMD:-0} BATTERY=${BATTERY:-0} GRMLSMALL_SPECIFIC=${GRMLSMALL_SPECIFIC:-1} GRML_ALWAYS_LOAD_ALL=${GRML_ALWAYS_LOAD_ALL:-0} -GRML_WARN_SKEL=${GRML_WARN_SKEL:-1} + +if isgrmlcd ; then + GRML_WARN_SKEL=${GRML_WARN_SKEL:-0} +else + GRML_WARN_SKEL=${GRML_WARN_SKEL:-1} +fi if (( GRML_WARN_SKEL != 0 )) ; then @@ -249,11 +254,12 @@ second file being the .zshrc file from /etc/skel. If you have a .zshrc file in your home directory that originally came from the skel directory, please remove it. This is also the case if you followed earlier instructions from the grml-zsh-refcard or -from on non-grml systems. +from on non-grml systems. -Please see the current grml-zsh-refcard for updated installation -information. In short, you don'\''t want a .zshrc.global file. Install -the global zshrc to ~/.zshrc and be done. +Please see the current grml-zsh-refcard (available at +) for updated installation information. In short, +you don'\''t want a .zshrc.global file. Install the global zshrc to +~/.zshrc and be done. If you need changes to the configuration, use ~/.zshrc.pre and ~/.zshrc.local. @@ -270,8 +276,32 @@ function grml_do_not_warn_skel() { printf 'GRML_WARN_SKEL=0\n' >>! ~/.zshrc.pre } -grml_warn_skel_main -grml_warn_skel_remove +# let's try to guess how the user uses us. +if is-at-least 4.3.7 ; then + # funcsourcetrace requires at least version 4.3.7 of zsh. + GRML_SRC_FILE="${${funcsourcetrace[1]}%:*}" + + grml_warn_skel_main + case ${GRML_SRC_FILE} in + (${HOME}/.zshrc.global) + grml_warn_skel_remove + printf '\nIt looks like you copied the grml zshrc to '\''~/.zshrc.global'\''.\n' + printf 'Nowadays you just copy the global zshrc to '\''~/.zshrc'\'' to use\n' + printf 'it on a non-grml-system.\n' + ;; + (${HOME}/.zshrc) + printf '\nIt looks like you copied the grml zshrc to '\''~/.zshrc'\''.\n' + printf 'We'\''ll disable this warning automatically for later sessions.\n' + grml_do_not_warn_skel + ;; + (*) + grml_do_not_warn_skel + ;; + esac +else + grml_warn_skel_main + grml_warn_skel_remove +fi unfunction grml_warn_skel_remove grml_warn_skel_main @@ -488,12 +518,6 @@ fi # do Fink setup on darwin isdarwin && xsource /sw/bin/init.sh -# set width of man pages to 80 for more convenient reading -# export MANWIDTH=${MANWIDTH:-80} - -# Search path for the cd command -# cdpath=(.. ~) - # 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. @@ -502,10 +526,12 @@ if [[ -n "$BROKEN_COMPLETION_DIR" ]] ; then else [[ -d /etc/zsh/completion.d ]] && fpath=( $fpath /etc/zsh/completion.d ) if [[ -d /etc/zsh/functions.d ]] ; then - fpath+=( /etc/zsh/functions.d ) - for func in /etc/zsh/functions.d/[^_]*[^~](N.) ; do - zrcautoload -U ${func:t} + fdir='/etc/zsh/functions.d' + fpath=( ${fdir} ${fdir}/**/*(/N) ${fpath} ) + for func in ${fdir}/**/[^_]*[^~](N.) ; do + zrcautoload ${func:t} done + unset fdir fi fi @@ -1949,7 +1975,7 @@ is4 && [[ $NOPRECMD -eq 0 ]] && precmd () { # adjust title of xterm # see http://www.faqs.org/docs/Linux-mini/Xterm-Title.html case $TERM in - (xterm*|rxvt) + (xterm*|rxvt*) print -Pn "\e]0;%n@%m: %~\a" ;; esac @@ -2034,12 +2060,14 @@ hash -d www=/var/www # }}} # {{{ some aliases -if [[ $UID -eq 0 ]] ; then - [[ -r /etc/grml/screenrc ]] && alias screen='/usr/bin/screen -c /etc/grml/screenrc' -elif [[ -r $HOME/.screenrc ]] ; then - alias screen="/usr/bin/screen -c $HOME/.screenrc" -else - [[ -r /etc/grml/screenrc_grml ]] && alias screen='/usr/bin/screen -c /etc/grml/screenrc_grml' +if check_com -c screen ; then + if [[ $UID -eq 0 ]] ; then + [[ -r /etc/grml/screenrc ]] && alias screen="${commands[screen]} -c /etc/grml/screenrc" + elif [[ -r $HOME/.screenrc ]] ; then + alias screen="${commands[screen]} -c $HOME/.screenrc" + else + [[ -r /etc/grml/screenrc_grml ]] && alias screen="${commands[screen]} -c /etc/grml/screenrc_grml" + fi fi # do we have GNU ls with color-support? @@ -2321,7 +2349,7 @@ limit -s # {{{ completion system # called later (via is4 && grmlcomp) -# notice: use 'zstyle' for getting current settings +# 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 @@ -2410,6 +2438,9 @@ grmlcomp() { 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 @@ -3274,7 +3305,7 @@ if [[ -r ~/.terminfo/m/mostlike ]] ; then fi # d():Copyright 2005 Nikolai Weibull -# notice: option AUTO_PUSHD has to be set +# note: option AUTO_PUSHD has to be set #f5# Jump between directories d() { emulate -L zsh @@ -3538,7 +3569,7 @@ status() { print "" print "Date..: "$(date "+%Y-%m-%d %H:%M:%S")"" print "Shell.: Zsh $ZSH_VERSION (PID = $$, $SHLVL nests)" - print "Term..: $TTY ($TERM), $BAUD bauds, $COLUMNS x $LINES cars" + print "Term..: $TTY ($TERM), ${BAUD:+$BAUD bauds, }$COLUMNS x $LINES cars" print "Login.: $LOGNAME (UID = $EUID) on $HOST" print "System: $(cat /etc/[A-Za-z]*[_-][rv]e[lr]*)" print "Uptime:$(uptime)" @@ -3811,16 +3842,21 @@ mkmaildir() { mkdir -p ${root}/${subdir}/{cur,new,tmp} } -# xtrename() rename xterm from within GNU-screen +#f5# Change the xterm title from within GNU-screen xtrename() { - if [[ -z ${DISPLAY} ]] ; then - printf 'xtrename only makes sense in X11.\n' - return 1 + if [[ ${1} != "-f" ]] ; then + if [[ -z ${DISPLAY} ]] ; then + printf 'xtrename only makes sense in X11.\n' + return 1 + fi + else + shift fi if [[ -z ${1} ]] ; then - printf 'usage: xtrename() "title for xterm"\n' + printf 'usage: xtrename [-f] "title for xterm"\n' printf ' renames the title of xterm from _within_ screen.\n' - printf ' Also works without screen.\n' + printf ' also works without screen.\n' + printf ' will not work if DISPLAY is unset, use -f to override.\n' return 0 fi print -n "\eP\e]0;${1}\C-G\e\\"