blob: 00c181e112958a624698b4d85620fb8b39f55bf1 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
#autoload
# This should be used to complete parameter names if you need some of the
# extra options of compadd. It completes only non-local parameters.
# If you specify a -g option with a pattern, the pattern will be used to
# restrict the type of parameters matched.
if compset -P '*:'; then
_history_modifiers p
return
fi
local MATCH i pfilt
local -i MBEGIN MEND nm=$compstate[nmatches]
local -a expl pattern=(-g \*) normal described verbose faked fakes tmp
zstyle -t ":completion:${curcontext}:parameters" prefix-needed &&
[[ $PREFIX != [_.]* ]] &&
pfilt='[^_.]'
_description parameters expl parameter
zparseopts -D -K -E g:=pattern
if zstyle -t ":completion:${curcontext}:parameters" extra-verbose; then
described=(
"${(@M)${(@k)parameters[(R)$~pattern[2]~*(hideval|local|special)*]}:#$~pfilt*}"
)
compadd "$@" "$expl[@]" -D described -a - described
if (( $#described )); then
verbose=(
${described[@]:/(#m)*/"${MATCH}:${(@q+)${(Pkv@q+)MATCH}//\\/\\\\}"} )
_describe -t parameters parameter verbose "$@" "$expl[@]"
fi
normal=(
"${(@M)${(@k)parameters[(R)$~pattern[2]~^(*(hideval|special)*)~*local*]}:#$~pfilt*}"
)
else
normal=( "${(@M)${(@k)parameters[(R)$~pattern[2]~*local*]}:#$~pfilt*}" )
fi
if zstyle -a ":completion:${curcontext}:" fake-parameters tmp; then
for i in "$tmp[@]"; do
if [[ "$i" = *:* ]]; then
faked=( "$faked[@]" "$i" )
else
fakes=( "$fakes[@]" "$i" )
fi
done
fi
compadd "$@" "$expl[@]" - "$normal[@]" "${(@)fakes:|described}" \
"${(@)${(@)${(@M)faked:#${~pattern[2]}}%%:*}:|described}"
(( compstate[nmatches] > nm ))
return 0
|