Skip to content

Commit

Permalink
Don't print messages when a feature can't be loaded
Browse files Browse the repository at this point in the history
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
  • Loading branch information
ft committed Sep 27, 2020
1 parent 8a7aa39 commit e01bb8f
Show file tree
Hide file tree
Showing 2 changed files with 78 additions and 4 deletions.
10 changes: 10 additions & 0 deletions doc/grmlzshrc.t2t
Expand Up @@ -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
Expand Down
72 changes: 68 additions & 4 deletions etc/zsh/zshrc
Expand Up @@ -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 <<EOF
grml_status_features [-h|--help|-|+|+-|FEATURE]
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 "+-".
EOF
return 0
fi
if [[ $mode != - ]] && [[ $mode != + ]] && [[ $mode != +- ]]; then
this="${GRML_STATUS_FEATURES[$mode]}"
if [[ -z $this ]]; then
printf 'unknown\n'
return 1
else
printf '%s\n' $this
fi
return 0
fi
for key in ${(ok)GRML_STATUS_FEATURES}; do
this="${GRML_STATUS_FEATURES[$key]}"
if [[ $this == success ]] && [[ $mode == *+* ]]; then
printf '%-16s %s\n' $key $this
fi
if [[ $this == failure ]] && [[ $mode == *-* ]]; then
printf '%-16s %s\n' $key $this
fi
done
return 0
}

# load .zshrc.pre to give the user the chance to overwrite the defaults
[[ -r ${ZDOTDIR:-${HOME}}/.zshrc.pre ]] && source ${ZDOTDIR:-${HOME}}/.zshrc.pre

Expand Down Expand Up @@ -657,7 +716,8 @@ typeset -U path PATH cdpath CDPATH fpath FPATH manpath MANPATH
# Load a few modules
is4 && \
for mod in parameter complist deltochar mathfunc ; do
zmodload -i zsh/${mod} 2>/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
Expand All @@ -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

Expand Down Expand Up @@ -2433,14 +2494,15 @@ 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.
prompt_themes+=( grml grml-chroot grml-large )
# 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
Expand Down Expand Up @@ -3843,6 +3905,8 @@ fi

zrclocal

unfunction grml_status_feature

## genrefcard.pl settings

### doc strings for external functions from files
Expand Down

0 comments on commit e01bb8f

Please sign in to comment.