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

Re: detect if compinit was run and rerun

On 1 June 2018 at 19:12, Mikael Magnusson <mikachu@xxxxxxxxx> wrote:
> regenerations of the cache instead of 0. Instead, you should not do
> that. Just make sure your code that changes fpath is run before the
> user runs compinit (by asking the user to configure their shell

If this would be about startup of zsh, I would agree as second
compinit call with $fpath changed adds 820 ms. But for some dynamic
Zsh use with things plugged in and out, compinit should be a good
choice, it is specifically adapted to detect changes (it checks number
of _* files AFAIR?).

> correctly). If you absolutely want to add a completer at runtime, it
> is probably better to use only compdef+autoload and not compinit. I
> don't see any reason why the user would want to avoid having these
> completers always configured though.

Good point, compinit interiors are quite easy to grasp and manual
plugging is possible. For example, this code is generated by Zplugin's

autoload -Uz _zplugin
(( ${+_comps} )) && _comps[zplugin]=_zplugin

This plugs zplugin completion into already initialized completion
system. I'm doing this because until user organizes his .zshrc, some
time typically passes, and with above, during this time zplugin will
have a working completion. The ${+_comps} check detects if completion
is already initialized.

Best regards,
Sebastian Gniazdowski

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