X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=etc%2Fzsh%2Fzshrc;h=e21c77227bc9622f5ff2aa3d37040a30c76f3d40;hb=e01bb8fd4f1afa24ac37638aee2ba1e68959ae2b;hp=2690cfdfb427810a7e1dc9cbb0f51c958d858090;hpb=d336df85259da98b36d8b4db20351e2b0448fd0f;p=grml-etc-core.git diff --git a/etc/zsh/zshrc b/etc/zsh/zshrc index 2690cfd..e21c772 100644 --- a/etc/zsh/zshrc +++ b/etc/zsh/zshrc @@ -108,6 +108,65 @@ if [[ $ZSH_PROFILE_RC -gt 0 ]] ; then zmodload zsh/zprof fi +typeset -A GRML_STATUS_FEATURES + +function grml_status_feature () { + emulate -L zsh + local f=$1 + local -i success=$2 + if (( success == 0 )); then + GRML_STATUS_FEATURES[$f]=success + else + GRML_STATUS_FEATURES[$f]=failure + fi + return 0 +} + +function grml_status_features () { + emulate -L zsh + local mode=${1:-+-} + local this + if [[ $mode == -h ]] || [[ $mode == --help ]]; then + cat </dev/null || print "Notice: no ${mod} available :(" + zmodload -i zsh/${mod} 2>/dev/null + grml_status_feature mod:$mod $? done && builtin unset -v mod # autoload zsh modules when they are referenced @@ -672,10 +732,11 @@ COMPDUMPFILE=${COMPDUMPFILE:-${ZDOTDIR:-${HOME}}/.zcompdump} if zrcautoload compinit ; then typeset -a tmp zstyle -a ':grml:completion:compinit' arguments tmp - compinit -d ${COMPDUMPFILE} "${tmp[@]}" || print 'Notice: no compinit available :(' + compinit -d ${COMPDUMPFILE} "${tmp[@]}" + grml_status_feature compinit $? unset tmp else - print 'Notice: no compinit available :(' + grml_status_feature compinit 1 function compdef { } fi @@ -2433,6 +2494,7 @@ function grml_prompt_fallback () { } if zrcautoload promptinit && promptinit 2>/dev/null ; then + grml_status_feature promptinit 0 # Since we define the required functions in here and not in files in # $fpath, we need to stick the theme's name into `$prompt_themes' # ourselves, since promptinit does not pick them up otherwise. @@ -2440,7 +2502,7 @@ if zrcautoload promptinit && promptinit 2>/dev/null ; then # Also, keep the array sorted... prompt_themes=( "${(@on)prompt_themes}" ) else - print 'Notice: no promptinit available :(' + grml_status_feature promptinit 1 grml_prompt_fallback function precmd () { (( ${+functions[vcs_info]} )) && vcs_info; } fi @@ -2478,6 +2540,9 @@ else function precmd () { (( ${+functions[vcs_info]} )) && vcs_info; } fi +# make sure to use right prompt only when not running a command +is41 && setopt transient_rprompt + # Terminal-title wizardry function ESC_print () { @@ -2502,7 +2567,7 @@ function grml_reset_screen_title () { # see http://www.faqs.org/docs/Linux-mini/Xterm-Title.html [[ ${NOTITLE:-} -gt 0 ]] && return 0 case $TERM in - (xterm*|rxvt*) + (xterm*|rxvt*|alacritty) set_title ${(%):-"%n@%m: %~"} ;; esac @@ -2539,7 +2604,7 @@ function grml_cmd_to_screen_title () { function grml_control_xterm_title () { case $TERM in - (xterm*|rxvt*) + (xterm*|rxvt*|alacritty) set_title "${(%):-"%n@%m:"}" "$2" ;; esac @@ -3840,6 +3905,8 @@ fi zrclocal +unfunction grml_status_feature + ## genrefcard.pl settings ### doc strings for external functions from files