Subject: Re: bug#22324: 25.0.50; completion-category-defaults style doesn't override completion-styles (gets prepended instead)

From: Stefan Monnier <[email-masked]>
Date: Wed, 26 Jan 2022 08:36:34 -0500

>> Apparently this config is recommended in the README of both Corfu and
>> Vertico (https://github.com/minad/vertico#configuration), both projects
>> by Daniel Mendler.
>> I guess we should ask Daniel whether he has been aware of the
>> completion-styles failover mechanic, and what he thinks about it.
> Yes, I've been aware of the failover mechanic and I think it is not
> good. From my experience, I would prefer if the override is a real
> override, which this issue is about. Users can still opt-in to the
> default styles on a case by case basis if this is desired.

We can probably have our cake and eat it too by adding a `fail`
completion style.  Such a style would always take responsibility
(i.e. would never return nil to delegate to subsequent styles), but
would always return a "useless" value that gives no completions.

Then entries in `completion-category-override/defaults` could choose to
either be mere additions to the global default (as now) or be a full
override (which they'd get by having this `fail` style at the end).

> Furthermore we've also got `completion-category-defaults`. It may make
> sense to distinguish them by making the override a real override and
> keep the current behavior for the defaults.

No, the role of those two is already quite different:
`completion-category-defaults` is for packages to set, whereas
`completion-category-override` is to be set by end-users.

        Stefan