Subject: bug#66806: 30.0.50; [PATCH] 'project-find-regexp' passes Git submodules to the search program

From: Dmitry Gutov <[email-masked]>
Date: Mon, 30 Oct 2023 00:14:48 +0200

On 29/10/2023 08:06, Eli Zaretskii wrote:
>> Cc:[email-masked]
>> Date: Sat, 28 Oct 2023 22:36:07 -0700
>> From: Jim Porter<[email-masked]>
>>
>> --- a/lisp/progmodes/project.el
>> +++ b/lisp/progmodes/project.el
>> @@ -960,7 +960,8 @@ project-find-regexp
>>            (default-directory (project-root pr))
>>            (files
>>             (if (not current-prefix-arg)
>> -              (project-files pr)
>> +              ;; XXX: See the comment in project-query-replace-regexp.
>> +              (cl-delete-if-not #'file-regular-p (project-files pr))
>                    ^^^^^^^^^^^^^^^^
> I think we want to prefer using seq.el functions, since seq.el is
> nowadays preloaded.  Is there a good reason to use cl-delete-if-not
> here?

I'm okay with using seq with other things equal, but in this case both 
cl- approaches are too slow, and seq-difference is no better because of 
consing and indirection overhead (about 10-20% slower than current). I'd 
say it's a shortcoming of seq.el: only having non-destructive versions.

I had some hope for cl-nset-difference, but looking at the 
implementation it just delegates to the non-destructive cousin (I guess 
providing the optimized implementation was left as TODO).