From d15521d09dfa59da664aca6ddd40928d1031c5ad Mon Sep 17 00:00:00 2001 From: Andrew Janke Date: Thu, 8 Oct 2015 22:31:39 -0400 Subject: [PATCH] diagnostics: fix for reserved-word changes in zsh 5.1 Reference: https://github.com/zsh-users/zsh/blob/zsh-5.1.1/NEWS#L20-L32 --- lib/diagnostics.zsh | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/lib/diagnostics.zsh b/lib/diagnostics.zsh index afc33829..9c9905e4 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"