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 11:14:58 +0000

Hello, Gregory.

On Fri, Nov 27, 2020 at 10:36:35 +0000, Gregory Heytings wrote:

> Hi Alan,

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

[ .... ]

> >>> 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.

I can see a lot wrong with it, from a UI point of view.  Whether the MB
gets moved depends on _how_ a user enters characters into C-r.  This is
bad.  The MB should either move when you type C-r or it shouldn't.  Emacs
28 fixes this.

Also we shouldn't force users to have to understand the difference
between the echo area and the minibuffer.  Some of them will understand,
many will not.  That most of isearch uses the echo area, but some of it
uses the minibuffer, is an arcane implementation issue which users
shouldn't have to worry about.  We should leave them in peace.

> 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.

As you note in your next post, it is feasible with Emacs 28, or at least
will be when the bugs are fixed.

-- 
Alan Mackenzie (Nuremberg, Germany).



reply via email to

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