Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Possible to use _arguments with _regex_arguments?

On Tue Sep 17, 2019 at 7:31 PM Ronan Pigott wrote:
> One thing I thought to try was set '{words=("$line[@]"); _myfunc}' for
> the action, but it did not seem to work.
> If it cannot be done, is there another way that I can transform the line
> to be completed before running (or re-running) the completion to make
> this idea possible?

I've since found that _arguments itself has the ability to transform the
words and CURRENT special parameters by specifying the argument like:
'*::message:action', but unfortunately it still does not produce the
desired result when 'action' is a function generated by
_regex_arguments. Can anyone explain the behavior I see?

What I observe is that when _myfunc is created by _regex_arguments, and
the command argument is passed to _arguments like so: '*:message:_myfunc'

	`command arg1 arg2` is completed correctly as expected by _myfunc
	`command -o option arg1` is offered no completions by _myfunc, as it
	does not match.

When I use '*::message:_myfunc', completion is no longer tripped up by
options, but _myfunc always acts as if it is completing the first word
for all normal arguments, as if $words was empty and CURRENT=1 even if
there are many normal arguments. I'm looking for a way to have _myfunc
when invoked as an action of _arguments see only (and all of) the normal
arguments, but for some reason the _regex_arguments functions don't seem
to behave that way.

Messages sorted by: Reverse Date, Date, Thread, Author