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: Gregory Heytings
Subject: Re: Stop frames stealing eachothers' minibuffers!
Date: Fri, 27 Nov 2020 10:36:35 +0000
User-agent: Alpine 2.22 (NEB 394 2020-01-19)


Hi Alan,

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.


No it is not. Another, perhaps more precise definition would be: in Emacs 21 to 27, when minibuffers MB1 to MBn are active on a frame F1, and an operation which activates the minibuffer is used on a frame F2, the minibuffers MB1 to MBn are moved to frame F2, and the minibuffer MBn+1 is created.

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.


Yes, this is normal, C-r does not use the minibuffer, but the echo area (you can see this because the cursor does not move leave the buffer in which you are). The minibuffers and echo area are both displayed in the miniwindow, but they are different.


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 normal again, C-x 8 RET starts an operation which uses the minibuffer, and the cursor leaves the buffer in which you are and moves to the miniwindow. As explained above, when an operation which activates a minibuffer is used on a frame while other minibuffers are active on another frame, they are moved to that frame. I honestly can't see what's wrong with this.

IMO the only other reasonable behavior is to make sure that _all_ minibuffers are moved from frame F1 to frame F2 whenever one switches from a frame F1 to a frame F2. This is not feasible with Emacs 21-27, and still not feasible with Emacs 28.



reply via email to

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