X-Git-Url: https://git.grml.org/?a=blobdiff_plain;f=etc%2Fzsh%2Fzshrc;h=9f3d87a94e8e5d46b8460891edaa7f56dd7aeda2;hb=9663863a1c17ded15cc687a06ede6305a6e48b26;hp=4ee87375f8f15d9e3f6ea620b23415e24fa9509a;hpb=3cf8371bd1ed9e7d95dff34653bfe0ac90ab75a1;p=grml-etc-core.git diff --git a/etc/zsh/zshrc b/etc/zsh/zshrc index 4ee8737..9f3d87a 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. @@ -2034,12 +2058,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 +2347,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 +2436,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 +3303,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 +3567,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 +3840,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\\"