diff options
| -rw-r--r-- | lib/diagnostics.zsh | 30 | 
1 files changed, 24 insertions, 6 deletions
| diff --git a/lib/diagnostics.zsh b/lib/diagnostics.zsh index afc33829b..9c9905e4d 100644 --- a/lib/diagnostics.zsh +++ b/lib/diagnostics.zsh @@ -52,6 +52,9 @@  # * Consider whether to move default output file location to TMPDIR. More robust  #     but less user friendly.  # + +autoload -Uz is-at-least +  function omz_diagnostic_dump() {    emulate -L zsh @@ -247,7 +250,7 @@ function _omz_diag_dump_one_big_text() {  function _omz_diag_dump_check_core_commands() {    builtin echo "Core command check:" -  local redefined name builtins externals +  local redefined name builtins externals reserved_words    redefined=()    # All the zsh non-module builtin commands    # These are taken from the zsh reference manual for 5.0.2 @@ -255,17 +258,32 @@ function _omz_diag_dump_check_core_commands() {    # (For back-compatibility, if any of these are newish, they should be removed,    # or at least made conditional on the version of the current running zsh.)    # "history" is also excluded because OMZ is known to redefine that +  reserved_words=( do done esac then elif else fi for case if while function  +    repeat time until select coproc nocorrect foreach end '!' '[[' '{' '}'  +    )    builtins=( alias autoload bg bindkey break builtin bye cd chdir command      comparguments compcall compctl compdescribe compfiles compgroups compquote comptags -    comptry compvalues continue declare dirs disable disown echo echotc echoti emulate -    enable eval exec exit export false fc fg float functions getln getopts hash -    integer jobs kill let limit local log logout noglob popd print printf -    pushd pushln pwd r read readonly rehash return sched set setopt shift -    source suspend test times trap true ttyctl type typeset ulimit umask unalias +    comptry compvalues continue dirs disable disown echo echotc echoti emulate +    enable eval exec exit false fc fg functions getln getopts hash +    jobs kill let limit log logout noglob popd print printf +    pushd pushln pwd r read rehash return sched set setopt shift +    source suspend test times trap true ttyctl type ulimit umask unalias      unfunction unhash unlimit unset unsetopt vared wait whence where which zcompile      zle zmodload zparseopts zregexparse zstyle ) +  if is-at-least 5.1; then +    reserved_word+=( declare export integer float local readonly typeset ) +  else +    builtins+=( declare export integer float local readonly typeset ) +  fi    builtins_fatal=( builtin command local )    externals=( zsh ) +  for name in $reserved_words; do +    if [[ $(builtin whence -w $name) != "$name: reserved" ]]; then +      builtin echo "reserved word '$name' has been redefined" +      builtin which $name +      redefined+=$name +    fi +  done    for name in $builtins; do      if [[ $(builtin whence -w $name) != "$name: builtin" ]]; then        builtin echo "builtin '$name' has been redefined" | 
