1
1
# cvs(1) completion -*- shell-script -*-
2
2
3
- _comp_cmd_cvs__entries ()
3
+ # Usage: _comp_cmd_cvs__compgen_entries [base_path]
4
+ # @param[opt] $1
5
+ # shellcheck disable=SC2120
6
+ _comp_cmd_cvs__compgen_entries ()
4
7
{
5
- local prefix=${cur%/* } / IFS=$' \n '
6
- [[ -e ${prefix-} CVS/Entries ]] || prefix=" "
7
- entries=($( cut -d/ -f2 -s " ${prefix-} CVS/Entries" 2> /dev/null) )
8
- if (( ${# entries[@]} )) ; then
9
- _comp_compgen -Rv entries -- -P " ${prefix-} " -W ' "${entries[@]}"'
8
+ local base_path=${1-$cur }
9
+ local _prefix=${base_path%/* } /
10
+ [[ -e ${_prefix-} CVS/Entries ]] || _prefix=" "
11
+ _comp_compgen -c " ${cur# " $_prefix " } " split -lP " $_prefix " -- " $( cut -d/ -f2 -s " ${_prefix-} CVS/Entries" 2> /dev/null) " &&
10
12
compopt -o filenames
11
- fi
12
13
}
13
14
14
15
_comp_cmd_cvs__modules ()
@@ -156,7 +157,7 @@ _comp_cmd_cvs()
156
157
esac
157
158
158
159
if [[ $cur != -* ]]; then
159
- _comp_cmd_cvs__entries
160
+ _comp_compgen -Rv entries -i cvs entries " ${cur-} "
160
161
if [[ ! $cur ]]; then
161
162
_comp_expand_glob files ' !(CVS)'
162
163
else
@@ -201,9 +202,7 @@ _comp_cmd_cvs()
201
202
if [[ $cur == -* ]]; then
202
203
_comp_cmd_cvs__compgen_command_options " $1 " " $mode "
203
204
else
204
- _comp_cmd_cvs__entries
205
- (( ${# entries[@]} )) &&
206
- _comp_compgen -- -W ' "${entries[@]}"'
205
+ _comp_cmd_cvs__compgen_entries
207
206
fi
208
207
;;
209
208
annotate)
@@ -212,9 +211,7 @@ _comp_cmd_cvs()
212
211
if [[ $cur == -* ]]; then
213
212
_comp_cmd_cvs__compgen_command_options " $1 " " $mode "
214
213
else
215
- _comp_cmd_cvs__entries
216
- (( ${# entries[@]} )) &&
217
- _comp_compgen -- -W ' "${entries[@]}"'
214
+ _comp_cmd_cvs__compgen_entries
218
215
fi
219
216
;;
220
217
checkout)
@@ -269,9 +266,7 @@ _comp_cmd_cvs()
269
266
s/^cvs diff: \([^ ]*\) .*, no comparison available$/\1/p
270
267
' ) "
271
268
else
272
- _comp_cmd_cvs__entries
273
- (( ${# entries[@]} )) &&
274
- _comp_compgen -- -W ' "${entries[@]}"'
269
+ _comp_cmd_cvs__compgen_entries
275
270
fi
276
271
else
277
272
_comp_cmd_cvs__compgen_command_options " $1 " " $mode "
@@ -285,18 +280,14 @@ _comp_cmd_cvs()
285
280
_comp_cmd_cvs__compgen_command_options " $1 " " $mode "
286
281
[[ ${COMPREPLY-} == * = ]] && compopt -o nospace
287
282
else
288
- _comp_cmd_cvs__entries
289
- (( ${# entries[@]} )) &&
290
- _comp_compgen -- -W ' "${entries[@]}"'
283
+ _comp_cmd_cvs__compgen_entries
291
284
fi
292
285
;;
293
286
editors | watchers)
294
287
if [[ $cur == -* ]]; then
295
288
_comp_cmd_cvs__compgen_command_options " $1 " " $mode "
296
289
else
297
- _comp_cmd_cvs__entries
298
- (( ${# entries[@]} )) &&
299
- _comp_compgen -- -W ' "${entries[@]}"'
290
+ _comp_cmd_cvs__compgen_entries
300
291
fi
301
292
;;
302
293
export)
@@ -355,7 +346,7 @@ _comp_cmd_cvs()
355
346
;;
356
347
remove)
357
348
if [[ $cur != -* ]]; then
358
- _comp_cmd_cvs__entries
349
+ _comp_compgen -Rv entries -i cvs entries " ${cur-} "
359
350
if [[ $prev != -f ]]; then
360
351
# find out what files are missing
361
352
for i in " ${! entries[@]} " ; do
@@ -383,9 +374,7 @@ _comp_cmd_cvs()
383
374
if [[ $cur == -* ]]; then
384
375
_comp_cmd_cvs__compgen_command_options " $1 " " $mode "
385
376
else
386
- _comp_cmd_cvs__entries
387
- (( ${# entries[@]} )) &&
388
- _comp_compgen -- -W ' "${entries[@]}"'
377
+ _comp_cmd_cvs__compgen_entries
389
378
fi
390
379
;;
391
380
" " )
0 commit comments