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

Re: Strange behavior about option completion of `git push`



From: Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx>
Subject: Re: Strange behavior about option completion of `git push`
Date: Thu, 17 Sep 2020 11:05:43 -0700

> I think the difference is that --force-with-lease has a required
> argument, which differs from the other two --f options, whereas none
> of the --r completions has an argument.

Oh, I didn't notice it.

From: Oliver Kiddle <opk@xxxxxxx>
Subject: Re: Strange behavior about option completion of `git push`
Date: Thu, 17 Sep 2020 21:36:19 +0200

> This appears to be a bug in the zsh completion internals. The difference
> between --f and --r is that for --f, the options are added with more
> than one call to compadd because there's a mix of suffix characters
> required on those options.
> 
> Any further discussion on this line should probably go to -workers but a
> minimal function to reproduce the issue is as follows:
> 
>   compadd -M 'r:|.=*' one
>   compadd -M 'r:|-=*' - --follow-tags --force
>   compadd -M 'r:|-=*' - --force-with-lease
>   return 0
> 
> With _git_push the first of these compadd calls is from _ssh_hosts. The
> matching control options are needed. The latter two with - as a pivot
> but the first can use any character. The case with --r is equivalent to
> combining the latter two compadd calls into a single call.
> 
> Matching control is known to have some gnarly issues.

It seems too much for me to handle this issue. So I would like to
leave the investigation of it to someone familiar with the internals
of zsh completion.

---
Yasuhiro KIMURA




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