From: Frank Terbeck Date: Sun, 27 Sep 2020 15:13:43 +0000 (+0200) Subject: Don't print messages when a feature can't be loaded X-Git-Tag: v0.18.0~5 X-Git-Url: http://git.grml.org/?p=grml-etc-core.git;a=commitdiff_plain;h=e01bb8fd4f1afa24ac37638aee2ba1e68959ae2b Don't print messages when a feature can't be loaded Instead record the status of the load and make it possible to query the results later on. With this to replicate the old behaviour you could put: grml_status_features - into your "~/.zshrc.local". Fixes: #113 --- diff --git a/doc/grmlzshrc.t2t b/doc/grmlzshrc.t2t index 3829c76..d6e6325 100644 --- a/doc/grmlzshrc.t2t +++ b/doc/grmlzshrc.t2t @@ -719,6 +719,16 @@ Edit given shell function. : **freload()** Reloads an autoloadable shell function (See autoload in zshbuiltins(1)). +: **grml_status_features()** +Prints a summary of features the grml setup is trying to load. The result of +loading a feature is recorded. This function lets you query the result. The +function takes one argument: "-h" or "--help" to display this help text, "+" to +display a list of all successfully loaded features, "-" for a list of all +features that failed to load. "+-" to show a list of all features with their +statuses. Any other word is considered to by a feature and prints its status. + +The default mode is "+-". + : **grml_vcs_info_toggle_colour()** Toggles between coloured and uncoloured formats in vcs_info configuration. This is useful with prompts that break if colour codes are in vcs_info diff --git a/etc/zsh/zshrc b/etc/zsh/zshrc index 50b1730..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 @@ -3843,6 +3905,8 @@ fi zrclocal +unfunction grml_status_feature + ## genrefcard.pl settings ### doc strings for external functions from files