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

Re: Bug: Completion of the 'zsh' command.



On Oct 9,  8:01pm, Bart Schaefer wrote:
}
} Furthermore, I don't remember what '*:' does for _arguments

Figured out that it's shorthand for '*:::' which causes _arguments to
go though this branch (some whitespace removed for compactness):

    if [[ "$action" = \ # ]]; then
      # An empty action means that we should just display a message.
      _message -e "$subc" "$descr"

} there is first a call to _arguments which has the unintended (?) side-
} effect of erasing compstate[insert].

That's coming from "_message -e ..." which has:

  (( $compstate[nmatches] )) || compstate[insert]=

The problem of course is that we haven't finished generating all the
matches yet, so it's premature to test (( $compstate[nmatches] )).

Several possible approaches come to mind:

(1) The patch I already sent, which assures that this call to _message
happens late enough for $compstate[nmatches] to be valid.

(2) Instead of '*:' aka '*:::' as the last argument of _arguments in _sh,
actually give it an action, '*:::_default' (or something more clever).
This bypasses the call to _message -e, but makes it appear that every
zsh option (except -c) takes an argument, which (I think) changes the
zstyle context ... which probably hardly ever matters, but ...

(3) Fiddle with _message somehow, for example, shove the assignment to
compstate[insert] into a comppostfuncs callback -- except then I'm not
sure it happens soon enough, so we've exchanged one problem for another.

Anybody have an opinion?



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