emacs-devel
[Top][All Lists]
Advanced

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

Re: Stop frames stealing eachothers' minibuffers!


From: Alan Mackenzie
Subject: Re: Stop frames stealing eachothers' minibuffers!
Date: Fri, 27 Nov 2020 10:02:46 +0000

Hello, Gregory.

On Wed, Nov 25, 2020 at 22:23:17 +0000, Gregory Heytings wrote:

> >>> The behaviour in Emacs 27 is chaotic.  Sometimes a minibuffer moves 
> >>> with a frame switch, sometimes it doesn't.

> >> I wouldn't write it is "chaotic".  The behavior you consider "chaotic" 
> >> is well-defined, and has been there since Emacs 21 at least: the 
> >> minibuffer moves from frame F1 to frame F2 if and only if the 
> >> minibuffer is active on frame F1 and a recursive minibuffer is entered 
> >> on frame F2.

> > I'm not sure what you mean by "is" in that sentence.


> I've reread what I wrote five times, and I don't understand the question 
> ;-)

It seems somewhat indefinite _when_ the recursive minibuffer "is"
entered on frame F2, relative to the other operations.

> >> There are other possible behaviors of course, but IMO the current one 
> >> is a reasonable one.

> > If a recursive minibuffer operation has been carried out, then the 
> > minibuffer moves, if it hasn't it doesn't. That means Emacs has some 
> > invisible internal state, something which doesn't seem desirable.


> What do you mean?

In Emacs 27, emacs -Q, C-x 5 2, giving a two-frame setup.  In F1, C-x b.
C-x 5 o, moving to F2.  C-r SPACE.  Note that the open minibuffer
remains on F1.

Now type C-x 8 RET SPACE RET.  This sucks the open minibuffer over to
F2, despite the C-r operation having nothing to do with the suspended
operation in the minibuffer.  This is not good and has been/is in the
process of being fixed for Emacs 28.

> By definition a recursive minibuffer is entered when a minibuffer has
> been entered and not yet left, that is, when the operation has not yet
> been completed.  After typing C-x C-f in frame F1 and M-: in frame F2,
> the two minibuffers have been moved to frame F2.

More precisely, if we're talking about Emacs 28 with
minibuffer-follows-selected-frame at its default of t, the C-x C-f
minibuffer moves to F2 when F2 gets selected.  The M-: then gives an
error message in F2, or (when enable-recursive-minibuffers is t) opens a
recursive minibuffer in F2.

-- 
Alan Mackenzie (Nuremberg, Germany).



reply via email to

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