Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: context for globbing qualifiers based on command
(It wasn't necessary to send this inquiry twice. It sometimes takes a
little while for a response.)
On Feb 27, 11:20am, Martin Richter wrote:
>
> Is it possible to tweak the completion such that shell functions are
> grouped at the top when pressing TAB when using (:e...) on a given command?
> print -l *(e:TAB --> gives a lot of possible functions etc
> but
> special_command *(e:TAB
> gives only shell function matching some regexp or gives only the single
> function 'foo' or members of an array of functions?
Unfortunately, no. The zstyle context after *(e: is identical to the
context in any other command position.
However, the $words array hasn't been altered, so you could write a
function to be installed in your "completer" style that examines the
values of $words[1] and $words[CURRENT], something like this:
_special_command_glob_completer() {
if [[ CURRENT -gt 1 &&
"$words[1]" = 'special_command' &&
"$words[CURRENT]" = *\(*e:* ]]
then
compset -p ${#words[CURRENT]}
compadd -J special-globbers sum_equals product_equals
return 0
else
return 1
fi
}
zstyle ':completion:*' completer _expand \
_special_command_glob_completer \
_complete _match _ignored _approximate _prefix
(the rest of that completer style is just for example, but you probably
want at least _complete in there after your special one).
It might also be possible to do this more generically with a "matcher"
zstyle in the context :completion::complete:-command-::* but I'll leave
that for someone else to work out. (It'd have to use "zstyle -e" and
some kind of test similar to the "if" above.)
Messages sorted by:
Reverse Date,
Date,
Thread,
Author