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

Re: Help Request/Bug Report: comparguments causes _arguments to fail in certain cases

Dan Arad wrote on Fri, 15 May 2020 17:39 +0300:
> I got it working using the hook method: I added another script with
> `#compdef -first-` that saves the words array.

Nice :)

> The thing is, that now I'm faced with a different problem:
> When the command line is `./ps.py`, completions are generated correctly.
> When the command line is `python ps.py`, the actual completions are joined
> by the list of files in the current directory.
> This appears to be a byproduct of going through the `_python`
> auto-completion script.
> I was wondering if there is a way to remove existing completion matches
> before adding my own to make sure I provide only correct matches.

I don't think there's a way to remove already-added matches.

How would that help if it existed?  I assume -first- runs before
_python, not after, so you should look for a way to prevent _python from
running when your function has added matches.  For starters, does your
function return 0 when it has added matches?

Or you could arrange for «python ps.py» to call your script without
a -first- completion function.  That should prevent _python from
falling back to completing files.  Additionally, overwriting -first- is
not a composable approach: users who already overwrite -first- won't be
able to install your completion function alongside their existing

> Also, might this be a bug in the `_python` completion script?

I don't see how.  It's normal for completion to offer files as a
fallback for unknown commands, as in «nosuchcommand <TAB>».

I don't recall offhand how to disable or modify the fallback behaviour.

> Thanks for all the help,
> Dan

You're welcome.



P.S. While I wrote the above I ran into this:

diff --git a/Doc/Zsh/compsys.yo b/Doc/Zsh/compsys.yo
index 98ab46d8a..8d2813c5a 100644
--- a/Doc/Zsh/compsys.yo
+++ b/Doc/Zsh/compsys.yo
@@ -1685,6 +1685,9 @@ example(zstyle ':completion:*' group-name '')
 All matches for which no group name is defined will be put in a group
 named tt(-default-).
+To display the group name in the output, see the tt(format) style (q.v.)
+under the tt(descriptions) tag.
 kindex(group-order, completion style)

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