@@ -4,7 +4,7 @@ _module_comgen_words() {
44 # split candidate list on IFS without triggering shell expansion (command
55 # substitution, arithmetic, ...): candidate words may come from module
66 # names read off disk, which must never be treated as executable code
7- IFS=$' \t\n ' read -r -d ' ' -a words <<< " $1"
7+ IFS=$' \t\n ' read -r -d ' ' -a words <<< " $1" || true
88 for val in " ${words[@]} " ; do
99 case " $val " in
1010 " $2 " * ) COMPREPLY[${# COMPREPLY[@]} ]=" $val " ;;
@@ -112,17 +112,17 @@ _module_not_yet_loaded() {
112112_module_long_arg_list () {
113113 local cur=" ${1} " i
114114 if [[ ${COMP_WORDS[COMP_CWORD-2]} == sw* ]]; then
115- COMPREPLY=( $( compgen -W " $( _module_not_yet_loaded) " -- " ${cur} " ) )
115+ _module_comgen_words " $( _module_not_yet_loaded) " " ${cur} "
116116 return
117117 fi
118118 for (( i = COMP_CWORD - 1 ; i > 0 ; i-- )) ; do
119119 case ${COMP_WORDS[${i}]} in
120120 add|load)
121- COMPREPLY=( $( compgen -W " $( _module_not_yet_loaded) " -- " ${cur} " ) )
121+ _module_comgen_words " $( _module_not_yet_loaded) " " ${cur} "
122122 break
123123 ;;
124124 rm|remove|unload|switch|swap)
125- COMPREPLY=( $( compgen -W " $( _module_loaded_modules) " -- " ${cur} " ) )
125+ _module_comgen_words " $( _module_loaded_modules) " " ${cur} "
126126 break
127127 ;;
128128 esac
@@ -147,38 +147,31 @@ _module() {
147147
148148 case " ${prev} " in
149149 add|load|try-load)
150- # COMPREPLY=( $(compgen -W "$(_module_not_yet_loaded)" -- "${cur}") )
151- _module_comgen_words " $( _module_not_yet_loaded) " " $cur "
150+ _module_comgen_words " $( _module_not_yet_loaded) " " ${cur} "
152151 ;;
153152 rm|remove|unload|switch|swap)
154- # COMPREPLY=( $(compgen -W "$(_module_loaded_modules)" -- "${cur}") )
155- _module_comgen_words " $( _module_loaded_modules) " " $cur "
153+ _module_comgen_words " $( _module_loaded_modules) " " ${cur} "
156154 ;;
157155 restore)
158- # COMPREPLY=( $(compgen -W "$(_module_savelist)" -- "${cur}") )
159- _module_comgen_words " $( _module_savelist) " " $cur "
156+ _module_comgen_words " $( _module_savelist) " " ${cur} "
160157 ;;
161158 spider)
162- # COMPREPLY=( $(compgen -W "$(_module_spider)" -- "${cur}") )
163- _module_comgen_words " $( _module_spider) " " $cur "
159+ _module_comgen_words " $( _module_spider) " " ${cur} "
164160 ;;
165161 unuse)
166- COMPREPLY=( $( IFS=: compgen -W " ${MODULEPATH} " -- " ${cur} " ) )
162+ _module_comgen_words " ${MODULEPATH//:/ } " " ${cur} "
167163 ;;
168164 use|* -a* )
169165 _module_dir " ${cur} "
170166 ;;
171167 help|show|whatis)
172- # COMPREPLY=( $(compgen -W "$(_module_avail)" -- "${cur}") )
173- _module_comgen_words " $( _module_avail) " " $cur "
168+ _module_comgen_words " $( _module_avail) " " ${cur} "
174169 ;;
175170 describe|mcc)
176- # COMPREPLY=( $(compgen -W "$(_module_mcc)" -- "${cur}") )
177- _module_comgen_words " $( _module_mcc) " " $cur "
171+ _module_comgen_words " $( _module_mcc) " " ${cur} "
178172 ;;
179173 disable)
180- # COMPREPLY=( $(compgen -W "$(_module_mcc)" -- "${cur}") )
181- _module_comgen_words " $( _module_mcc) " " $cur "
174+ _module_comgen_words " $( _module_mcc) " " ${cur} "
182175 ;;
183176 * )
184177 if [ ${COMP_CWORD} -gt 2 ]; then
@@ -193,10 +186,10 @@ _module() {
193186 COMPREPLY=' swap'
194187 ;;
195188 -* )
196- COMPREPLY=( $( compgen -W " ${opts} " -- " ${cur} " ) )
189+ _module_comgen_words " ${opts} " " ${cur} "
197190 ;;
198191 * )
199- COMPREPLY=( $( compgen -W " ${cmds} " -- " ${cur} " ) )
192+ _module_comgen_words " ${cmds} " " ${cur} "
200193 ;;
201194 esac
202195 fi
@@ -223,42 +216,36 @@ _ml() {
223216
224217 case " ${prev} " in
225218 rm|remove|unload|switch|swap)
226- # COMPREPLY=( $(compgen -W "$(_module_loaded_modules)" -- "${cur}") )
227- _module_comgen_words " $( _module_loaded_modules) " " $cur "
219+ _module_comgen_words " $( _module_loaded_modules) " " ${cur} "
228220 ;;
229221 restore)
230- # COMPREPLY=( $(compgen -W "$(_module_savelist)" -- "${cur}") )
231- _module_comgen_words " $( _module_savelist) " " $cur "
222+ _module_comgen_words " $( _module_savelist) " " ${cur} "
232223 ;;
233224 spider)
234- # COMPREPLY=( $(compgen -W "$(_module_spider)" -- "${cur}") )
235- _module_comgen_words " $( _module_spider) " " $cur "
225+ _module_comgen_words " $( _module_spider) " " ${cur} "
236226 ;;
237227 unuse)
238- COMPREPLY=( $( IFS=: compgen -W " ${MODULEPATH} " -- " ${cur} " ) )
228+ _module_comgen_words " ${MODULEPATH//:/ } " " ${cur} "
239229 ;;
240230 use|* -a* )
241231 _module_dir " ${cur} "
242232 ;;
243233 help|show|whatis)
244- # COMPREPLY=( $(compgen -W "$(_module_avail)" -- "${cur}") )
245- _module_comgen_words " $( _module_avail) " " $cur "
234+ _module_comgen_words " $( _module_avail) " " ${cur} "
246235 ;;
247236 describe|mcc)
248- # COMPREPLY=( $(compgen -W "$(_module_mcc)" -- "${cur}") )
249- _module_comgen_words " $( _module_mcc) " " $cur "
237+ _module_comgen_words " $( _module_mcc) " " ${cur} "
250238 ;;
251239 disable)
252- # COMPREPLY=( $(compgen -W "$(_module_mcc)" -- "${cur}") )
253- _module_comgen_words " $( _module_mcc) " " $cur "
240+ _module_comgen_words " $( _module_mcc) " " ${cur} "
254241 ;;
255242 * )
256243 case " ${cur} " in
257244 -* )
258245 if [ ${COMP_CWORD} -eq 1 ]; then
259- COMPREPLY=( $( compgen -W " ${opts} $( _module_loaded_modules_negated) " -- " ${cur} " ) )
246+ _module_comgen_words " ${opts} $( _module_loaded_modules_negated) " " ${cur} "
260247 else
261- COMPREPLY=( $( compgen -W " $( _module_loaded_modules_negated) " -- " ${cur} " ) )
248+ _module_comgen_words " $( _module_loaded_modules_negated) " " ${cur} "
262249 fi
263250 ;;
264251 * )
@@ -271,34 +258,34 @@ _ml() {
271258 COMPREPLY=' swap'
272259 ;;
273260 * )
274- COMPREPLY=( $( compgen -W " ${cmds} $( _module_avail) " -- " ${cur} " ) )
261+ _module_comgen_words " ${cmds} $( _module_avail) " " ${cur} "
275262 ;;
276263 esac
277264 else
278265 if [[ ${COMP_WORDS[COMP_CWORD-2]} == sw* ]]; then
279- COMPREPLY=( $( compgen -W " $( _module_not_yet_loaded) " -- " ${cur} " ) )
266+ _module_comgen_words " $( _module_not_yet_loaded) " " ${cur} "
280267 else
281268 for (( i = COMP_CWORD - 1 ; i > 0 ; i-- )) ; do
282269 case ${COMP_WORDS[$i]} in
283270 show|whatis)
284- COMPREPLY=( $( compgen -W " $( _module_avail) " -- " ${cur} " ) )
271+ _module_comgen_words " $( _module_avail) " " ${cur} "
285272 found=1
286273 break
287274 ;;
288275 rm|remove|unload)
289- COMPREPLY=( $( compgen -W " $( _module_loaded_modules) " -- " ${cur} " ) )
276+ _module_comgen_words " $( _module_loaded_modules) " " ${cur} "
290277 found=1
291278 break
292279 ;;
293280 spider)
294- COMPREPLY=( $( compgen -W " $( _module_spider) " -- " ${cur} " ) )
281+ _module_comgen_words " $( _module_spider) " " ${cur} "
295282 found=1
296283 break
297284 ;;
298285 esac
299286 done
300287 if [ -z " ${found} " ]; then
301- COMPREPLY=( $( compgen -W " $( _module_avail) " -- " ${cur} " ) )
288+ _module_comgen_words " $( _module_avail) " " ${cur} "
302289 fi
303290 fi
304291 fi
0 commit comments