Subject: RE: bug#41862: 27.0.91; Isearch menu added to menu-bar

From: Drew Adams <[email-masked]>
Date: Mon, 15 Jun 2020 18:25:00 -0700 (PDT)

> > 2. `C-s'
> >
> > This causes the frame to be redisplayed to add menu-bar menu `Isearch',
> > which, in effect, moves everything down a line visually, because it
> > causes the menu-bar to wrap (since the frame was only wide enough to
> > show the menu-bar without the added `Isearch'.
> >
> > 3. `C-g', or otherwise end Isearch.
> >
> > This causes the frame to be redisplayed to remove menu-bar menu
> > `Isearch', with the inverse jarring redisplay.
> 
> I wonder why are you talking about Isearch only.  Doesn't the same
> problem exist for other modes, e.g. Dired menu-bar menus are quite long.

I think the answer is because I've never run into
this problem elsewhere.  It's not about the length
of the menu-bar (well, that's a precondition for
the problem to manifest).  It's about the dynamic
addition and removal of a menu.

For a given window/frame width that shows the whole
menu-bar, you don't see the problem.  The frame
jerking around each time you use `C-s' is a very
different story.

So yes, the phenomenon isn't specific to Isearch.
It's specific to something that adds and removes
a menu often, dynamically, I guess.

For Isearch, the solution/workaround I suggested is
a user option.  Let me return to the unannoying
old behavior, at least.

I don't expect a real solution to the menu-bar
wrapping problem anytime soon - that's been
longstanding.  Please find some good way to mitigate
the problem introduced by the Isearch change.

Obviously people use Isearch a lot, and adding &
removing the menu each time can really be annoying.
Perhaps you have a better suggestion.  I guess users
could maybe customize to always use 2 in their
`default-frame-alist' for `menu-bar-lines', but it
would be a shame for them to have to do that, I
think.

Here's maybe another possibility (dunno how
reasonable it is): If I use Dired, and then use
`M-x' (not in my setup but in `emacs -Q') then menu
`Minbuf' gets added dynamically, for the duration
of an active minibuffer.  But the difference is
that other Dired menus are temporarily removed, so
there's no frame-jerking menu-bar wrapping.

I don't know of other such temporary additions of
a menu, but there probably are some.  I know of
only `Minibuf' and `Isearch'.  The problem is only
with Isearch, between those two.  Maybe Isearch
could/should remove some menus while it adds menu
`Isearch'?  Dunno.