about summary refs log tree commit diff
path: root/Completion/Core/_parameters
blob: fdb7862311f318be563dbb559fcb7137ec2dd879 (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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#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.

local pars expl

_description expl parameter

pars=( ${(k)parameters[(R)^*local*]} )

compadd "$expl[@]" "$@" - $pars



# The `-e' option does everything for parameter expansions of us. If
# we wouldn't have it, we would use something like:

# If the first argument is `-s' or `-b' auto_param_slash will be tested
# and slashes will be added to parameters containing a directory. `-s' is
# for parameter expansions without braces and `-b' is for expansions with
# braces. A `-' as the first argument is ignored and in all cases all
# other arguments will be given to `compadd'.

# setopt localoptions extendedglob

# local pars expl slash suf

# if [[ "$1" = -s ]]; then
#   slash=normal
#   suf="$2"
#   shift 2
# elif [[ "$1" = -b ]]; then
#   slash=brace
#   suf="$2"
#   shift 2
# elif [[ "$1" = - ]]; then
#   shift
# fi

# _description expl parameter

# if [[ -n "$slash" && -o autoparamslash ]]; then
#   local i dirs nodirs ret=1

#   dirs=()
#   nodirs=()

#   if zmodload -e parameter; then
#     setopt localoptions extendedglob
#     nodirs=( ${(k)parameters[(R)undefined]} )
#     pars=( ${(k)parameters[(R)^*(local|undefined)*]} )
#   else
#     nodirs=( ${${(M)${(f)"$(typeset +)"}:#undefined *}##* } )
#     pars=( ${${${(f)"$(typeset +)"}:#*(local|undefined) *}##* } )
#   fi

#   for i in $pars; do
#     if [[ -d "${(P)i}" ]]; then
#       dirs=( $dirs $i )
#     else
#       nodirs=( $nodirs $i )
#     fi
#   done

#   if [[ "$slash" = normal ]]; then
#     compadd -S "/${suf%% #}" -r ' [/:' "$expl[@]" "$@" - $dirs && ret=0
#     compadd -S "$suf" -r ' [:' "$expl[@]" "$@" - $nodirs && ret=0
#   elif [[ "$slash" = brace ]]; then
#     compadd -S "}/${suf%% #}" -r '-:?#%+=[/}' "$expl[@]" "$@" - $dirs && ret=0
#     compadd -S "}$suf" -r '-:?#%+=[/}' "$expl[@]" "$@" - $nodirs && ret=0
#   fi

#   return ret
# else
#   if zmodload -e parameter; then
#     pars=( ${(k)parameters[(R)^*local*]} )
#   else
#     pars=( ${${${(f)"$(typeset +)"}:#*local *}##* } )
#   fi

#   if [[ "$slash" = normal ]]; then
#     compadd -S "$suf" -r ' [:' "$expl[@]" "$@" - $pars
#   elif [[ "$slash" = brace ]]; then
#     compadd -S "}$suf" -r '-:?#%+=[/}' "$expl[@]" "$@" - $pars
#   else
#     compadd "$expl[@]" "$@" - $pars
#   fi
# fi