Subject: Re: bug#14013: 24.3.50; dired-isearch-filenames-regexp is matching text outside filenames

From: Juri Linkov <[email-masked]>
Date: Sun, 03 Jul 2022 21:23:19 +0300

>> -		   (looking-at (cond
>> -				((functionp isearch-regexp-function)
>> -				 (funcall isearch-regexp-function isearch-string t))
>> -				(isearch-regexp-function (word-search-regexp isearch-string t))
>> -				(isearch-regexp isearch-string)
>> -				(t (regexp-quote isearch-string)))))
>> +		   ;; Like `looking-at' but uses search functions:
>> +		   (let ((isearch-forward t))
>> +		     (isearch-search-string
>> +		      (concat "\\=\\(?:" isearch-string "\\)") nil t)))
>>  	       (error nil))
>
> These lines seem to break backwards char-fold isearch for me.  Test
> case:
>
> Insert "creme" in an empty buffer (yes, all just ascii latin chars), go
> to eob, and C-r M-s ' creme ==> fails.
>
> Works with forward search and non-char-folding backward search.

Thanks for testing.  So this is a new reason why this hunk should be left out.
Another reason is that some search functions are unsuitable to be called
instead of looking-at, such as when the search function in the minibuffer
starts to visit history items here.

I hope that ‘(replace-search (concat "\\=\\(?:"’ in perform-replace
has no such problems.