Subject: bug#58933: 28.2; project-buffers should take an optional filter

From: Sean Devlin <[email-masked]>
Date: Fri, 4 Nov 2022 13:11:07 -0400

> On Nov 4, 2022, at 1:07 PM, Philip Kaludercic <[email-masked]> wrote:
> 
> Sean Devlin <[email-masked] <mailto:[email-masked]>> writes:
> 
>> Hi folks,
>> 
>>> On Nov 4, 2022, at 2:47 AM, Philip Kaludercic <[email-masked] <mailto:[email-masked]>> wrote:
>>> 
>>> Dmitry Gutov <[email-masked] <mailto:[email-masked]> <mailto:[email-masked]>> writes:
>>> 
>>>> On 02.11.2022 16:17, Sean Devlin wrote:
>>>>> Hi Dmitry,
>>>>> 
>>>>>> On Nov 1, 2022, at 7:38 PM, Dmitry Gutov<[email-masked]>  wrote:
>>>>>> 
>>>>>> Hi Sean,
>>>>>> 
>>>>>> On 01.11.2022 00:04, Sean Devlin wrote:
>>>>>> 
>>>>>>> Project.el provides a function project-buffers that returns a list of
>>>>>>> buffers associated with the given project. The list is unfiltered,
>>>>>>> meaning any program using it will have to do some work to pick out the
>>>>>>> buffers of interest. It would be useful if the function had an optional
>>>>>>> argument to do this work.
>>>>>>> Project.el already has a function project--buffer-check that validates a
>>>>>>> buffer against a list of conditions. Maybe it should be wired into
>>>>>>> project-buffers to do the job of filtering?
>>>>>> There is also 'match-buffers' and 'buffer-match-p' in the core
>>>>>> Emacs starting with Emacs 29 (should also be available with the
>>>>>> 'compat' package).
>>>>>> 
>>>>>> What do you think about these alternatives?
>>>>> Thanks for the pointer—I wasn’t aware of these functions. (I’m still on 28.2.)
>>>>> It looks like these do fit the bill. For example, it looks like I
>>>>> could write:
>>>>> (match-buffers condition (project-buffers project))
>>>>> I can’t see these functions in my local installation of compat
>>>>> (056e3cc), but maybe definitions from Emacs 29 haven’t been added
>>>>> yet? In any case, I’m happy to wait a little bit.
>>>> 
>>>> Right, I'm not seeing it in there either. Perhaps it'll get there
>>>> after Emacs 29 is released.
>>> 
>>> Right, Emacs 29 support is under development, but hasn't been completed
>>> yet: https://git.sr.ht/~pkal/compat/tree/emacs-29.1/item/compat-29.el.
>>> 
>>>> Philip, is that the plan?
>>> 
>>> The plan is to be ready by the time Emacs 29 is released.  If possible
>>> and I get to it, it might also be released earlier, but at the very
>>> least I'll be waiting for the feature freeze later this month.
>> 
>> That sounds good to me. I have a workaround in the meantime, so I’m
>> happy to wait for the new release. 
> 
> I don't know what your workaround is, but since both functions
> (buffer-match-p, match-buffers) are self-contained, you can also just
> copy the current implementation into your local configuration.

Right now, I’m using project--buffer-check, which does a very similar thing. Your suggestion might be better, so I don’t need to rely on a project.el-internal function. I’ll take a look. Thanks again!

> 
>>                                   Thanks both for your help, and feel
>> free to close this at your discretion.
> 
> OK, done :)