Zsh completion arguments: Difference between revisions
From wikinotes
No edit summary |
|||
Line 1: | Line 1: | ||
The <code>_arguments</code> function is one method available for producing completions. | The <code>_arguments</code> function is one method available for producing completions. | ||
= | = Syntax = | ||
<blockquote> | <blockquote> | ||
== Basics == | == Basics == | ||
Line 121: | Line 121: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
</blockquote><!-- State Setting/Parsing --> | </blockquote><!-- State Setting/Parsing --> | ||
</blockquote><!-- | </blockquote><!-- Syntax --> |
Revision as of 22:15, 24 July 2021
The _arguments
function is one method available for producing completions.
Syntax
Basics
arguments \ '( ${excludes} )${param}:[:]${message}:${action}'# ${excludes} is an array of param ${state_descr}s # arguments \ # '::one:_normal' \ # '::two:_normal' \ # '(one)::three:(foo bar baz)' # # don't complete 'three' if 'one' has been used# ${param} has different formats depending the param # (or the next param, depending on param type) # ex: '-h[show help]' # flag # ex: '1' # positional # ex: '' # optional# ':' vs '::' # here ${param}:${message}:${action} is a required param # here ${param}::${message}:${action} is an optional param# ${message} is the name of the param # this is the name of the param, when referred to in other completer functions. # it gets bound to ${state_descr}.# ${action} is instructions on how to complete the next param # '1:one:' # ? valid ? # '1:one:(one two three)' # argument must be one, two, or three # '1:one:_user' # argument uses '_user' (function) to provide completionsFlag Arguments
_arguments \ {-h,--help}'[show help]' \ # param: -h/--help # desc: show help # action: (none) '-o[output file]:::_files' \ # param: -o # desc: output file # action: (complete any file)Positional Arguments
# ex: ${position}:${state_descr}:${action} _arguments \ '1:user:_users' \ # 1st positional arg (required) '2:priority:(low med high)' \ # 2nd positional arg (required) (complete to low/med/high) '3::group:_groups' \ # 3nd positional arg (optional)The argument-name is bound to
$state_descr
.Value for last defined Param
:${message}:${action} # reqd completion for prev command ::${message}:${action} # optional completion for prev command_arguments \ {-h,--help}'[show help]' \ '*::extra:(foo bar baz)' \ # any extra parameters, (complete to (foo bar baz)) ':value:(foo bar baz)' # after prev param (extra), always complete one of these wordsRest Arguments
Any arguments not consumed earlier use this completer.
*:${message}:${action} # *::${message}:${action} # *:::${message}:${action} #State Setting/Parsing
The
-C
argument enables state-setting.
This lets you determine the parser that gets used based on the state you set.local state # scope state locally _arguments -C \ '*:extra:->my-state' # sets `$state='my-state'` case $state in (my-state) _arguments '1:foo:(one two three four)' ;; esac