1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-07-12 17:11:25 +02:00

48378: complete compadd options for other completion functions

This commit is contained in:
Oliver Kiddle 2021-04-09 21:53:41 +02:00
parent f3caff1536
commit eaff11c748
2 changed files with 87 additions and 37 deletions
ChangeLog
Completion/Zsh/Command

View file

@ -1,5 +1,8 @@
2021-04-09 Oliver Kiddle <opk@zsh.org>
* 48378: Completion/Zsh/Command/_compadd: complete compadd
options for other completion functions
* 48437: Completion/Unix/Command/_gdb: fix pid completion when
cursor is in the middle of the line

View file

@ -1,47 +1,94 @@
#compdef compadd
#compdef compadd -P _*
local curcontext="$curcontext" state line ret=1
local curcontext="$curcontext" ret=1
local -a state line args
typeset -A opt_args
_arguments -C -s -S -A "-*" \
'-P+[specify prefix]:prefix' \
'-S+[specify suffix]:suffix' \
'-p+[specify hidden prefix]:hidden prefix' \
'-s+[specify hidden suffix]:hidden suffix' \
'-i+[specify ignored prefix]:ignored prefix' \
'-I+[specify ignored suffix]:ignored suffix' \
'(-k)-a[matches are elements of specified arrays]' \
'(-a)-k[matches are keys of specified associative arrays]' \
'-d+[specify display strings]:array:_parameters -g "*array*"' \
'-l[list display strings one per line, not in columns]' \
args=(
'-P+[specify prefix]:prefix'
'-S+[specify suffix]:suffix'
'-p+[specify hidden prefix]:hidden prefix'
'-s+[specify hidden suffix]:hidden suffix'
'-i+[specify ignored prefix]:ignored prefix'
'-I+[specify ignored suffix]:ignored suffix'
'-o[specify order for matches by match string not by display string]:: : _values -s , order
"match[order by match not by display string]"
"nosort[matches are pre-ordered]"
"numeric[order numerically]"
"reverse[order backwards]"' \
'(-1 -E)-J+[specify match group]:group' \
'!-V+:group' \
'(-J -E)-1[remove only consecutive duplicates from group]' \
'-2[preserve all duplicates]' \
'(-x)-X[specify explanation]:explanation' \
'(-X)-x[specify unconditional explanation]:explanation' \
'-q[make suffix autoremovable]' \
'-r+[specify character class for suffix autoremoval]:character class' \
'-R+[specify function for suffix autoremoval]:function:_functions' \
'-f[mark matches as being files]' \
'-e[mark matches as being parameters]' \
'-W[specify location for matches marked as files]' \
'-F+[specify array of ignore patterns]:array:_parameters -g "*array*"' \
'-Q[disable quoting of possible completions]' \
'*-M[specify matching specifications]' \
'-n[hide matches in completion listing]' \
'-U[disable internal matching of completion candidates]' \
'-O+[populate array with matches instead of adding them]:array:_parameters -g "*array*"' \
'-A+[populate array with expanded matches instead of adding them]:array:_parameters -g "*array*"' \
'-D+[delete elements from array corresponding to non-matching candidates]:array:_parameters -g "*array*"' \
'-C[add special match that expands to all other matches]' \
'(-1 -J)-E+[add specified number of display only matches]:number' \
'*:candidate:->candidates' && ret=0
"reverse[order backwards]"'
'(-1 -E)-J+[specify match group]:group'
'!-V+:group'
'(-J -E)-1[remove only consecutive duplicates from group]'
'-2[preserve all duplicates]'
'(-x)-X[specify explanation]:explanation'
'(-X)-x[specify unconditional explanation]:explanation'
'-q[make suffix autoremovable]'
'-r+[specify character class for suffix autoremoval]:character class'
'-R+[specify function for suffix autoremoval]:function:_functions'
'-F+[specify array of ignore patterns]:array:_parameters -g "*array*"'
'-Q[disable quoting of possible completions]'
'*-M[specify matching specifications]'
'-n[hide matches in completion listing]'
'-O+[populate array with matches instead of adding them]:array:_parameters -g "*array*"'
'-A+[populate array with expanded matches instead of adding them]:array:_parameters -g "*array*"'
'-D+[delete elements from array corresponding to non-matching candidates]:array:_parameters -g "*array*"'
)
case $service in
compadd|_(path_|)files)
args+=(
'-W[specify location for matches marked as files]'
)
;|
compadd)
args+=(
'(-k)-a[matches are elements of specified arrays]'
'(-a)-k[matches are keys of specified associative arrays]'
'-d+[specify display strings]:array:_parameters -g "*array*"'
'-l[list display strings one per line, not in columns]'
'-f[mark matches as being files]'
'-e[mark matches as being parameters]'
'-C[add special match that expands to all other matches]'
'(-1 -J)-E+[add specified number of display only matches]:number'
'-U[disable internal matching of completion candidates]'
'*:candidate:->candidates'
)
;;
_dates)
args=( ${args:#([(][^)]##\)|)-[12noOAD]*}
'-f[specify format for matches]:format:_date_formats'
'-F[select a future rather than past date]'
)
;;
_(path_|)files)
args=( ${args:#([(][^)]##\)|)-[OAD]*}
'-g+[specify file glob pattern]:glob pattern'
'-/[complete only directories]'
)
;;
_parameters)
args+=(
'-g+[specify pattern to filter parameter type by]:pattern'
)
;;
_pids)
args+=( '-m+[pattern to filter process command line by]:pattern' )
;;
_process_names)
args+=(
'-a[include all processes]'
'-t[use truncated process names]'
)
;;
_sys_calls)
args+=(
'-a[add "all" as an additional match]'
'-n[add "none" as an additional match]'
)
;;
esac
_arguments -C -s -S -A "-*" $args && ret=0
if [[ -n $state ]]; then
if (( $+opt_args[-a] )); then