emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: New multi-command facility displays in the wrong echo area.


From: Alan Mackenzie
Subject: Re: New multi-command facility displays in the wrong echo area.
Date: Sat, 10 Oct 2020 12:44:46 +0000

Hello, Eli.

On Sat, Oct 10, 2020 at 14:13:32 +0300, Eli Zaretskii wrote:
> > Date: Sat, 10 Oct 2020 10:32:33 +0000
> > From: Alan Mackenzie <acm@muc.de>
> > Cc: monnier@iro.umontreal.ca, emacs-devel@gnu.org

> > > Do you intend to leave the active minibuffer on the original frame, and
> > > use the other frame for Isearch?  Note that Isearch also uses the
> > > minibuffer.

> > I'm not understanding that, properly.  When I enter characters into
> > isearch in F2, this doesn't throw an error when the F1 minibuffer is
> > still active.  Is isearch perhaps just using the echo area, here?

> > Anyway, I tried the suggestion of Gregory Heytings from yesterday evening
> > at 21:48:49 +0000.  He put an extra condition into
> > set-minibuffer-message, so that it only does its thing when the current
> > frame is also the minibuffer's frame.  It appears to work well.

> Does that work if you set tty-menu-open-use-tmm non-nil, then press
> f10 while the I-search: prompt is active?  This is one case where
> Isearch reads from the minibuffer.

Ah, yes.  Sorry for being a bit dim, there.

When just the isearch is active, f10 does indeed work.  When,
additionally, C-x b is active on another frame, it throws the error
"Command attempted to use minibuffer while in minibuffer".  This is
surely correct.  However, the isearch highlighting doesn't get removed in
this error case.  That is incorrect.

> Another, perhaps more important, use case is when you type "M-s e"
> during Isearch: that enters the minibuffer to let you edit the search
> string.

This works fine.  Without the C-x b in another frame, it just works.
With the C-x b in the other frame it throws the "Command ... minibuffer"
error and removes the highlighting.

> Yet another similar use case is when you type "C-x 8 RET" during
> Isearch: that reads the character's name/codepoint from the minibuffer.

This goes wrong.  With C-x b active on frame F1, move to F2, start an
isearch, C-x 8 RET, use TAB completion to select a character and RET.
This displays

    Switch to buffer (default xdisp.c):  [Failing I-search: su�] 

on F2.  On terminating the isearch and completing the C-x b action in
F2's minibufer, the buffer switch has worked in frame F1.

At a guess, C-x 8 RET uses a recursive edit, but fails to bind the
variable holding the minibuffer frame.  It changes this variable, but on
exiting the recursive edit, fails to restore it.  Or something like that.

> These are the use cases I had in mind when I asked about Isearch using
> the minibuffer.

OK.

-- 
Alan Mackenzie (Nuremberg, Germany).



reply via email to

[Prev in Thread] Current Thread [Next in Thread]