1
0
mirror of git://git.code.sf.net/p/zsh/code synced 2024-09-27 22:40:20 +02:00

46280: compinit: add -w to explain why compdump runs

This commit is contained in:
Mikael Magnusson 2020-07-28 18:06:50 +02:00
parent b74635aa74
commit 6f4cf79140
2 changed files with 33 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2020-08-05 Mikael Magnusson <mikachu@gmail.com>
* 46280: Completion/compinit: add -w to explain why compdump runs
* unposted: Completion/compinit: add help text for -w
2020-07-29 Roman Perepelitsa <roman.perepelitsa@gmail.com>
* unposted: Src/zsh.h: comments explaining how hashtable must

View File

@ -60,6 +60,10 @@
# the end). This takes the dumpfile as an argument. -d (with the
# default dumpfile) is now the default; to turn off dumping use -D.
# If the dumpfile is being regenerated and you don't know why, you can use
# the -w flag to see if it was because -D was passed, zsh version mismatched,
# or number of files in $fpath differed.
# The -C flag bypasses both the check for rebuilding the dump file and the
# usual call to compaudit; the -i flag causes insecure directories found by
# compaudit to be ignored, and the -u flag causes all directories found by
@ -71,9 +75,9 @@ emulate -L zsh
setopt extendedglob
typeset _i_dumpfile _i_files _i_line _i_done _i_dir _i_autodump=1
typeset _i_tag _i_file _i_addfiles _i_fail=ask _i_check=yes _i_name
typeset _i_tag _i_file _i_addfiles _i_fail=ask _i_check=yes _i_name _i_why
while [[ $# -gt 0 && $1 = -[dDiuC] ]]; do
while [[ $# -gt 0 && $1 = -[dDiuCw] ]]; do
case "$1" in
-d)
_i_autodump=1
@ -99,6 +103,10 @@ while [[ $# -gt 0 && $1 = -[dDiuC] ]]; do
_i_check=
shift
;;
-w)
_i_why=1
shift
;;
esac
done
@ -484,11 +492,28 @@ if [[ -f "$_comp_dumpfile" ]]; then
then
builtin . "$_comp_dumpfile"
_i_done=yes
elif [[ _i_why -eq 1 ]]; then
print -nu2 "Loading dump file skipped, regenerating"
local pre=" because: "
if [[ _i_autodump -ne 1 ]]; then
print -nu2 $pre"-D flag given"
pre=", "
fi
if [[ $_i_line[2] -ne $#_i_files ]]; then
print -nu2 $pre"number of files in dump $_i_line[2] differ from files found in \$fpath $#_i_files"
pre=", "
fi
if [[ $ZSH_VERSION != $_i_line[4] ]]; then
print -nu2 $pre"zsh version changed from $_i_line[4] to $ZSH_VERSION"
fi
print -u2
fi
else
builtin . "$_comp_dumpfile"
_i_done=yes
fi
elif [[ _i_why -eq 1 ]]; then
print -u2 "No existing compdump file found, regenerating"
fi
if [[ -z "$_i_done" ]]; then
typeset -A _i_test