summaryrefslogtreecommitdiff
path: root/lib/diagnostics.zsh
diff options
context:
space:
mode:
Diffstat (limited to 'lib/diagnostics.zsh')
-rw-r--r--lib/diagnostics.zsh30
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"