Subject: Re: bug#79409: 31.0.50; project.el uses define-completion-category but depends on 26.1

From: Daniel Mendler <[email-masked]>
Date: Mon, 08 Sep 2025 21:19:18 +0200

Dmitry Gutov <[email-masked]> writes:

> On 08/09/2025 19:18, Daniel Mendler wrote:
>> Eshel Yaron<[email-masked]> writes:
>> 
>>> Daniel Mendler writes:
>>>
>>>> Since a few days ago project.el uses define-completion-category which is
>>>> not yet available on old Emacs versions. project.el is published on ELPA
>>>> and depends on Emacs 26.1.
>>> Right, thanks, should now be fixed on master (with commit 6b6cfa8e40b).
>> Thanks, I didn't see that you've already sent a mail to devel a short
>> while before my report. I wonder if some fallback code is needed, such
>> that project-buffer is treated like the buffer completion category on
>> older Emacs versions?
>
> Thanks for the report.
>
> I've asked what Stefan thinks about a fallback route in this case.
>
> Maybe it would be a good use for the 'compat' dependency, in addition to the FR
> in bug#79327.

I don't think we can use Compat here, since we cannot replace the
completion-metadata-get function such that callers magically learn about
category inheritance. We could provide a poor implementation for
define-completion-category which either does nothing or which copies the
completion category overrides and defaults from the parent to the
inherited category, but as such would behave differently than the new
mechanism. Neither is a satisfactory solution.

(buffer-match-p from the other bug report has been ported back, so this
can be used.)

Daniel