Subject: bug#65797: `buffer-match-p` should not use `func-arity`

From: Dmitry Gutov <[email-masked]>
Date: Tue, 19 Sep 2023 19:13:40 +0300

On 19/09/2023 16:56, Philip Kaludercic wrote:
> Dmitry Gutov<[email-masked]>  writes:
> 
>> On 19/09/2023 11:34, Philip Kaludercic wrote:
>>>> [ BTW, changing the code to use `&rest args` instead of `&optional arg`
>>>>     would help for this, right?  ]
>>> How come?
>> In project.el buffer-match-p would be called without an extra
>> argument, so the predicates would be called without an extra argument
>> as well.
>>
>> That should take care of that compatibility, I think.
> But what does that have to do with &rest vs &optional?

Stringly speaking, nothing, because you can manage the same scheme with 
&optional - just dispatching to pred with different number of arguments 
depending on whether the &optional arg is nil. Though that breaks a 
little when nil is a meaningful value (probably a rare case).

Rewriting the function in terms of &rest just makes this solution the 
most natural one, I suppose.

Though we'll still have to document the distinction in the docstrings of 
project-kill-buffer-conditions and etc (the number of the arguments 
called with).