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

From: Juri Linkov <[email-masked]>
Date: Wed, 16 Feb 2022 20:11:09 +0200

>> This works reliably only because the search function puts point at the
>> beginning of every file name during search.
>
> I'm not about non-interactive searches, seldom use them - can something
> like `dired-isearch-filenames-regexp' be done non-interactively?

It should work non-interactively as well.

> Anyway, my complete idea was: whenever we provide a special search
> command that limits isearch to certain entities, like file names in a
> dired buffer, we always guarantee that point can be matched at the
> beginning of each entity with \= (and maybe also \` and ^).  In an
> interactive search \= is quite useless (right?), so we can use it for
> that and avoid hacks that would probably be worse.

This is more complicated for backward search where \= should match
at the end of the file name, so \' and $ should be replaced with \=.

> We would still not have a solution to match the end of the entities,
> however.  Fortunately for files in dired $ works (by coincidence).

This is still not reliable since the dired line doesn't always end
with the end of the file name such as "filename -> symlink" format.

But with the previous patch this works because of the BOUND argument
of the search function set to the end of the file name.

For the backward search, the BOUND argument corresponds to $.
This makes the search function more complicated, but
this is doable, just needs more special-casing.