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

Re: bug: _files depends on extendedglob



On Fri, Mar 29, 2024 at 3:43 PM Oliver Kiddle <opk@xxxxxxx> wrote:
>
> Ben Knoble wrote:
> >
> > In the linked commit from the original mail I explain the emulation
> > mode: it is because the contributed Git completion script sets the
> > emulation mode to ksh in order to leave most of the work to the bash
> > completion scripts. I therefore (assume I) have to revert to zsh mode
> > for _files to behave sensibly: not doing so produced a strange IIRC.
>
> git doc is not an official git command so I'm not sure whether what
> you're doing falls within the scope of what that contributed completion
> supports but if it does then forcing ksh emulation on your function is
> arguably a bug in that git completion.

Correct; I'm adding completion for a custom command (implemented by a
script called git-doc). I think the author would argue it's by design,
though it does make extension harder (unless you like writing bash
completion scripts). Author's post from 2013 indicated some
performance issues with the Zsh-provided script
(https://felipec.wordpress.com/2013/07/31/how-i-fixed-git-zsh-completion/);
have those been resolved? [The post itself seems a bit inflammatory,
so please don't read its tone into my words.]

> I'd be very interested if you could elucidate on why you choose to use
> that completion instead of the git completion that comes with zsh. It
> is perhaps faster due to reduced functionality but in wrapping the bash
> completion it has a much more limited interface that prevents it taking
> advantage of many of zsh's more powerful features. Zsh's completion does
> support handling additional commands in the same manner with, e.g. a
> _git-doc function. There can be benefits to upstream projects carrying
> completion functions but I usually avoid anything that wraps a bash
> function.

See https://github.com/benknoble/Dotfiles/commit/9c7dd6d1ec8b3caac670f1a2a030769a4c90c06c
and https://github.com/Homebrew/legacy-homebrew/issues/16992: the zsh
contrib script from Git is installed in a location such that it
supersedes the default script. At this point it's what I'm used to,
and I haven't spent time trying the other yet. It works well enough
for me at the moment. (Perhaps it's less a choice and more a "default"
that works, where by "default" I mean "that's what my package manager
did and I don't have the time to fight with it at the moment.)

> > > reason insist on doing this, then you can setopt $_comp_options to
> >
> > That’s probably a much better workaround than what I had, thanks.
> > I’ve confirmed that it works. Is this documented anywhere that I can
> > rely on?
>
> That's relying on internal implementation details of the completion
> system so you can't really rely on it.

Bart indicated it was undocumented but deserved to be.

-- 
D. Ben Knoble




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