Subject: bug#71927: 29.4; ibuffer-do-isearch and ibuffer-do-isearch-regexp not prompting for input

From: Eli Zaretskii <[email-masked]>
Date: Thu, 04 Jul 2024 17:12:43 +0300

> From: Stephen Berman <[email-masked]>
> Cc: [email-masked],  [email-masked],  [email-masked],
>   [email-masked],  [email-masked],  [email-masked]
> Date: Thu, 04 Jul 2024 15:32:05 +0200
> 
> On Thu, 04 Jul 2024 15:50:56 +0300 Eli Zaretskii <[email-masked]> wrote:
> 
> >> From: Stephen Berman <[email-masked]>
> >> Cc: Eshel Yaron <[email-masked]>,  [email-masked],
> >>   [email-masked],  [email-masked],  [email-masked],
> >>   [email-masked]
> >> Date: Thu, 04 Jul 2024 12:06:40 +0200
> >>
> >> >> FWIW, AFAICT everything is working correctly, it's just that the
> >> >> "Operation finished" message hides the prompt.  ibuffer-do-isearch
> >> >> should tell define-ibuffer-op not to display that message, somehow.
> >> >
> >> > I don't see how this could be considered "correct": the "Operation
> >> > finished" message is supposed to be shown only after the Isearch is
> >> > finished in all the marked buffer, not before.  It looks like we need
> >> > a function that will not return until all the buffers where searched,
> >> > because that's what define-ibuffer-op expects.  Don't you agree?
> >>
> >> The attached patch appears to DTRT, but I only tested it briefly.
> >
> > Thanks, but does it really make sense to change define-ibuffer-op to
> > fix the functions which (evidently) use it incorrectly?  I think the
> > fix needs to be in the same place where the bug is.
> 
> That's what I thought, too, but I don't see a way to do that, because
> define-ibuffer-op hard-codes displaying a message at the end of the
> body.  But in this case that message seems superfluous, in addition to
> hiding the isearch prompt, because when isearch goes through the marked
> buffers, it then displays its own message that the operation is
> complete.  So this looks like a case when define-ibuffer-op is currently
> too rigid.

Then maybe these two commands should be defined using defun, not
define-ibuffer-op?  There's nothing forcing us to define each ibuffer
command via define-ibuffer-op, is it?

> However, I acknowledge that I don't really grok the interaction with
> isearch, i.e., why the "Operation finished" message is shown
> although isearch hasn't even begun.

Juri will know for sure, but AFAIU all the commands that invoke
Isearch just enter a special mode (including the conditions/commands
to exit Isearch).  IOW, when isearch-forward returns, the search did
not yet begin; instead, Emacs is in a special mode where typing
characters adds them to search string and triggers another round of
search.