1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-09-10 12:40:58 +02:00

temporarily remove global aliases to avoid error message inside the evals (12942)

This commit is contained in:
Sven Wischnowsky 2000-10-10 09:00:15 +00:00
parent 7bb0338a78
commit ae4ba457c4
2 changed files with 25 additions and 4 deletions

View file

@ -1,5 +1,8 @@
2000-10-10 Sven Wischnowsky <wischnow@zsh.org> 2000-10-10 Sven Wischnowsky <wischnow@zsh.org>
* 12942: Completion/Core/_expand: temporarily remove global
aliases to avoid error message inside the evals
* 12941: Src/Zle/compmatch.c: follow-up to 12930, make it first * 12941: Src/Zle/compmatch.c: follow-up to 12930, make it first
try exact character matches, but enable it to go back to try match try exact character matches, but enable it to go back to try match
specs if it fails after accepting such character matches specs if it fails after accepting such character matches

View file

@ -12,6 +12,7 @@ setopt localoptions nonomatch
[[ _matcher_num -gt 1 ]] && return 1 [[ _matcher_num -gt 1 ]] && return 1
local exp word sort expr expl subd suf=" " force opt asp tmp opre pre epre local exp word sort expr expl subd suf=" " force opt asp tmp opre pre epre
local gal
(( $# )) && (( $# )) &&
while getopts gsco opt; do while getopts gsco opt; do
@ -48,6 +49,12 @@ zstyle -t ":completion:${curcontext}:" accept-exact ||
( "$word" = *\$[a-zA-Z0-9_]## && ( "$word" = *\$[a-zA-Z0-9_]## &&
${#parameters[(I)${word##*\$}*]} -ne 1 ) ]] && return 1 } ${#parameters[(I)${word##*\$}*]} -ne 1 ) ]] && return 1 }
# We have to temporarily remove the global aliases because they can make
# the evals fail.
gal=( ${(kv)galiases} )
(( $#gal )) && builtin unalias ${(k)galiases}
# In exp we will collect the expansions. # In exp we will collect the expansions.
exp=("$word") exp=("$word")
@ -83,14 +90,20 @@ subd=("$exp[@]")
(( $#exp )) || exp=("$subd[@]") (( $#exp )) || exp=("$subd[@]")
[[ $#exp -eq 1 && "${exp[1]//\\}" = "${word//\\}"(|\(N\)) ]] && return 1 if [[ $#exp -eq 1 && "${exp[1]//\\}" = "${word//\\}"(|\(N\)) ]]; then
galiases=( $gal )
return 1
fi
# With subst-globs-only we bail out if there were no glob expansions, # With subst-globs-only we bail out if there were no glob expansions,
# regardless of any substitutions # regardless of any substitutions
{ [[ "$force" = *o* ]] || if { [[ "$force" = *o* ]] ||
zstyle -t ":completion:${curcontext}:" subst-globs-only } && zstyle -t ":completion:${curcontext}:" subst-globs-only } &&
[[ "$subd" = "$exp"(|\(N\)) ]] && return 1 [[ "$subd" = "$exp"(|\(N\)) ]]; then
galiases=( $gal )
return 1
fi
zstyle -s ":completion:${curcontext}:" keep-prefix tmp || tmp=changed zstyle -s ":completion:${curcontext}:" keep-prefix tmp || tmp=changed
if [[ "$word" = [\~\$]*/* && "$tmp" = (yes|true|on|1|changed) ]]; then if [[ "$word" = [\~\$]*/* && "$tmp" = (yes|true|on|1|changed) ]]; then
@ -101,7 +114,12 @@ if [[ "$word" = [\~\$]*/* && "$tmp" = (yes|true|on|1|changed) ]]; then
[[ "$tmp" != changed || $#exp -gt 1 || [[ "$tmp" != changed || $#exp -gt 1 ||
"${opre}${exp[1]#${pre}}" != "$word" ]] && exp=( ${opre}${^exp#${pre}} ) "${opre}${exp[1]#${pre}}" != "$word" ]] && exp=( ${opre}${^exp#${pre}} )
fi fi
galiases=( $gal )
[[ $#exp -eq 1 && "$exp[1]" = "$word" ]] && return 1 [[ $#exp -eq 1 && "$exp[1]" = "$word" ]] && return 1
else
galiases=( $gal )
fi fi
# Now add as matches whatever the user requested. # Now add as matches whatever the user requested.