blob: 46b847785738b7da8e8f03afdbea0417375c0929 (
plain)
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
|
#compdef eselect
common_values=(
"help[Display help text]"
"usage[Display usage information]"
"version[Display version information]"
)
_eselect_env () {
if (( $words[(I)(update)] )); then
_values "update options" \
"makelinks[force updating of links]" \
"noldconfig[Do not alter the ld.so cache or configuration]" && return 0
fi
_values "env options" $common_values \
'update[Collect environment variables from all scripts in /etc/env.d/]' && return 0
}
_eselect_binutils () {
local binutilslist
if (( $words[(I)(set)] )); then
binutilslist=(${(f)"$(eselect --brief --color=no binutils list)"})
_values "available binutils version" $binutilslist[@] && return 0
fi
_values "binutils options" $common_values \
"list[List all installed version of binutils]" \
"show[Print the currently active binutils version]" \
"set[Activate one of the installed binutils]" && return 0
}
_eselect_kernel () {
local kernellist
if (( $words[(I)(set)] )); then
kernellist=(${(f)"$(eselect --brief --color=no kernel list)"})
_values "available kernel version" $kernellist[@] && return 0
fi
_values "kernel options" $common_values \
"list[List available kernel symlink targets]" \
"show[Show the current kernel symlink]" \
"set[Set a new kernel symlink target]" && return 0
}
_eselect_ctags () {
local ctagslist
if (( $words[(I)(set)] )); then
ctagslist=(${(f)"$(eselect --brief --color=no ctags list)"})
_values "available ctags version" $ctagslist[@] && return 0
fi
_values "ctags options" $common_values \
"list[List available ctags symlink targets]" \
"show[Show the current target of the ctags symlink]" \
"update[Automatically update the ctags symlink]" \
"set[Set a new ctags symlink target]" && return 0
}
_eselect_profile () {
local profilelist
if (( $words[(I)(set)] )); then
profilelist=(${${(f)"$(eselect --brief --color=no profile list)"}/:/\\:})
_values -w "available profiles" $profilelist[@] \
"--force[Forcibly set the symlink]" && return 0
fi
_values "profile options" $common_values \
"list[List available profile symlink targets]" \
"show[Show the current make.profile symlink]" \
"set[Set a new profile symlink target]" && return 0
}
_eselect_fontconfig () {
local fclistenabled fclistdisabled
if (( $words[(I)(enable)] )); then
fclistdisabled=(${${${${(M)${(f)"$(eselect --color=no fontconfig list)"}## *}#*\*}// \**/}//( \[*\] | \[*\] )/})
_values -w ".conf to enable" $fclistdisabled[@] && return 0
elif (( $words[(I)(disable)] )); then
fclistenabled=(${${${(M)${(M)${(f)"$(eselect --color=no fontconfig list)"}## *}#*\*}// \**/}//( \[*\] | \[*\] )/})
_values -w ".conf to disable" $fclistenabled[@] && return 0
fi
_values "fontconfig options" $common_values \
"list[List available fontconfig .conf files]" \
"disable[Disable specified fontconfig .conf file(s)]" \
"enable[Enable specified fontconfig .conf file(s)]" && return 0
}
_eselect_opengl () {
local opengllist
if (( $words[(I)(set)] )); then
opengllist=(${(f)"$(eselect --brief --color=no opengl list)"})
_values -w "opengl implementations and options" $opengllist[@] \
"--use-old[If an implementation is already set, use that one instead]" \
"--prefix[Set the source prefix]:path:_files -/" \
"--dst-prefix[Set the destination prefix]:path:_files -/" \
"--ignore-missing[Ignore missing files when setting a new implementation]" && return 0
fi
_values "opengl options" $common_values \
"list[List the available OpenGL implementations]" \
"set[Select the OpenGL implementation]" \
"show[Print the current OpenGL implementation]" && return 0
}
_eselect_vi () {
local vilist
if (( $words[(I)(set)] )); then
vilist=(${(f)"$(eselect --brief --color=no vi list)"})
_values -w "vi implementation" $vilist[@] && return 0
elif (( $words[(I)(update)] )); then
_values -w "option" "--if-unset[Do not override existing implementation]" && return 0
fi
_values "vi options" $common_values \
"list[List available vi implementations]" \
"set[Set a new vi implementation provider]" \
"show[Show the current vi implementation]" \
"update[Automatically update the vi provider]"
}
_eselect_news() {
## TODO: Normal numeric sorting.
## I've spent many time on trying to rewrite this
## function to normally sort (to DO NOT sort, actually) items,
## but it growing bigger and bigger and going to be too complicated.
## So, I (mva) either need to help to make it in the "right way".
## Or, maybe, to completely rewrite this compdef.
local -a newslist;
if ((CURRENT == 3)); then
_values 'news options' $stdopts[@] \
'list[List news items]' \
'count[Display number of news items]' \
'purge[Purge read news]' \
'read[Read news items]' \
'unread[Mark read news items as unread again]' && return 0
elif ((CURRENT == 4)); then
if (( $words[(I)(count)] )); then
_values -w 'news' 'new[Count only new news items]' 'all[Count all news items]' && return 0
fi
newslist=(${${${${${${${(M)${(f)"$(eselect --color=no news list)"}## *}// \**/}/ \[/}/\] ##/\[}/%/]}/ \[/ (}/\] /) })
if (( $words[(I)(read)] )); then
newslist+=( "new[Read unread news items (default)]" "all[Read all news items]" "--mbox[Output in mbox format]" "--quiet[Suppress output, only change status]" "--raw[Output in raw format]" )
fi;
if (( $words[(I)(unread)] )); then
newslist+=( "all[Unread all news items]" )
fi
_values -w 'news' $newslist[@] && return 0
fi
}
_eselect () {
local globopts modnames modopts
globopts=(
"--brief[Make output shorter]"
"--colour=no[Disable coloured output]"
"--color=no[Disable coloured output]"
)
modnames=(${${${(M)${(f)"$(eselect --brief --color=no modules list)"}## *}// */}// /})
if ((CURRENT == 2)); then
_arguments -s \
"$globopts[@]" \
"*:portage:_values 'eselect modules' \$modnames[@]" && return 0
elif ((CURRENT == 3)); then
if [[ $words[2] == --colour=no || $words[2] == --color=no ]]; then
_arguments -s \
"*:portage:_values 'eselect modules' \$modnames[@]" && return 0
elif (( $modnames[(I)$words[2]] )); then
if [[ "$words[2]" == (env|binutils|kernel|ctags|profile|fontconfig|opengl|vi|news) ]]; then
_eselect_$words[2] "$@"
else
modopts=(${${${(M)${(f)"$(eselect --brief --color=no $words[2] usage)"}## *}// */}// /})
_arguments -s \
"*:portage:_values 'eselect $words[2] options' \$modopts[@]" && return 0
fi
fi
elif ((CURRENT >= 4)); then
if (( $words[(I)(--color=no|--colour=no)] )); then
if (( $modnames[(I)$words[3]] )); then
if [[ "$words[3]" == (env|binutils|kernel|ctags|profile|fontconfig|opengl|vi|news) ]]; then
_eselect_$words[3] "$@"
else
modopts=(${${${${(M)${(f)"$(eselect --brief --color=no $words[3] usage)"}## *}// */}// /}// *})
_arguments -s \
"*:portage:_values 'eselect $words[3] options' \$modopts[@]" && return 0
fi
fi
else
if (( $modnames[(I)$words[2]] )); then
(( $+functions[_eselect_$words[2]] )) && _eselect_$words[2] "$@"
fi
fi
fi
}
_eselect "$@"
# vim: set et sw=2 ts=2 ft=zsh:
|