zsh-workers
 help / color / mirror / code / Atom feed
e13a91081f1aa3a9559ac635dbc5b01babf1c485 blob 1354 bytes (raw)

 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
 
#compdef zparseopts

local ret=1
local -a context line state state_descr alts opts
local -A opt_args

_arguments -A '-*' : \
  '-a+[specify array in which to store parsed options]:array:_parameters -g "*array*~*readonly*"' \
  '-A+[specify association in which to store parsed options]:association:_parameters -g "*association*~*readonly*"' \
  '-D[remove parsed options from positional parameters]' \
  "-E[don't stop parsing at first parameter not described by specs]" \
  '-F[abort parsing and print error at first option-like parameter not described by specs]' \
  '-K[preserve contents of arrays/associations when specs are not matched]' \
  '-M[enable mapping among equivalent options with opt1=opt2 spec form]' \
  '(-)-[end zparseopts options; specs follow]' \
  '*: :->spec' \
&& ret=0

[[ $state == spec ]] &&
if compset -P '*='; then
  alts=()
  (( $+opt_args[-M] )) && {
    opts=( $line )
    [[ $opts[1] == (-|--) ]] && shift opts
    opts=( ${(@)opts%%(+|)(:|:-|::|)(=*|)} )
    opts=( ${(@)opts:#${words[CURRENT]%%=*}} )
    alts+=( "spec-opt-names:spec option name:(${(j< >)${(@q+)opts}})" )
  }
  alts+=( 'parameters:array:_parameters -g "*array*~*readonly*"' )
  _alternative $alts && ret=0
else
  # Not great, but close enough for now
  compset -S '=*'
  _message -e spec-opts 'spec option (name[+][:|:-|::])' && ret=0
fi

return ret
debug log:

solving e13a91081 ...
found e13a91081 in https://git.vuxu.org/mirror/zsh/

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).