unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Stop frames stealing eachothers' minibuffers!
@ 2020-10-13 19:02 Alan Mackenzie
  2020-10-13 19:20 ` Eli Zaretskii
                   ` (2 more replies)
  0 siblings, 3 replies; 206+ messages in thread
From: Alan Mackenzie @ 2020-10-13 19:02 UTC (permalink / raw)
  To: emacs-devel

Hello, Emacs.

In recent versions of master (and, I believe the emacs-27 branch) frames
steal eachothers' minibuffers.

By this I mean:
(i) Have two frames open displaying buffers.
(ii) On frame F1 do C-x b.  This leaves a minibuffer open there.
(iii) Move to F2.
(iv) Do C-x 8 RET <enter some character>.

F1's minibuffer is now on F2.  This is bad.

Seeing as how a minibuffer often has a strong association with its frame
(e.g., C-x C-f opens a buffer in the same frame it was invoked from),
this shifting of minibuffers from one frame to another is confusing.

The following patch is a first attempt at fixing this.  Note that it
adds no code, it merely takes away code which was hindering the desired
operation, and simplifies minibuf.c appreciably.  I might well have
missed subtle points in this proposed change.

It has also changed (?improved) the error handling behaviour somewhat.
In the above scenario, after applying the patch:
(v) in F2 do M-x.

This errors with "Command attempted to use minibuffer while in
minibuffer", yet no longers aborts the command which has opened the
(first) minibuffer.  Personally, I think this is less confusing and
potentially less annoying than the current behaviour.

Comments?



diff --git a/src/minibuf.c b/src/minibuf.c
index f957b2ae17..10e58cc86b 100644
--- a/src/minibuf.c
+++ b/src/minibuf.c
@@ -76,37 +76,13 @@ choose_minibuf_frame (void)
       && !EQ (minibuf_window, XFRAME (selected_frame)->minibuffer_window))
     {
       struct frame *sf = XFRAME (selected_frame);
-      Lisp_Object buffer;
-
       /* I don't think that any frames may validly have a null minibuffer
 	 window anymore.  */
       if (NILP (sf->minibuffer_window))
 	emacs_abort ();
 
-      /* Under X, we come here with minibuf_window being the
-	 minibuffer window of the unused termcap window created in
-	 init_window_once.  That window doesn't have a buffer.  */
-      buffer = XWINDOW (minibuf_window)->contents;
-      if (BUFFERP (buffer))
-	/* Use set_window_buffer instead of Fset_window_buffer (see
-	   discussion of bug#11984, bug#12025, bug#12026).  */
-	set_window_buffer (sf->minibuffer_window, buffer, 0, 0);
       minibuf_window = sf->minibuffer_window;
     }
-
-  /* Make sure no other frame has a minibuffer as its selected window,
-     because the text would not be displayed in it, and that would be
-     confusing.  Only allow the selected frame to do this,
-     and that only if the minibuffer is active.  */
-  {
-    Lisp_Object tail, frame;
-
-    FOR_EACH_FRAME (tail, frame)
-      if (MINI_WINDOW_P (XWINDOW (FRAME_SELECTED_WINDOW (XFRAME (frame))))
-	  && !(EQ (frame, selected_frame)
-	       && minibuf_level > 0))
-	Fset_frame_selected_window (frame, Fframe_first_window (frame), Qnil);
-  }
 }
 
 DEFUN ("active-minibuffer-window", Factive_minibuffer_window,
@@ -362,9 +338,6 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt,
   Lisp_Object histstring;
   Lisp_Object histval;
 
-  Lisp_Object empty_minibuf;
-  Lisp_Object dummy, frame;
-
   specbind (Qminibuffer_default, defalt);
   specbind (Qinhibit_read_only, Qnil);
 
@@ -416,11 +389,7 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt,
     {
       Lisp_Object str
 	= build_string ("Command attempted to use minibuffer while in minibuffer");
-      if (EQ (selected_window, minibuf_window))
-	Fsignal (Quser_error, (list1 (str)));
-      else
-	/* If we're in another window, cancel the minibuffer that's active.  */
-	Fthrow (Qexit, str);
+      Fsignal (Quser_error, (list1 (str)));
     }
 
   if ((noninteractive
@@ -566,23 +535,6 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt,
   if (minibuf_level == 1 || !EQ (minibuf_window, selected_window))
     minibuf_selected_window = selected_window;
 
-  /* Empty out the minibuffers of all frames other than the one
-     where we are going to display one now.
-     Set them to point to ` *Minibuf-0*', which is always empty.  */
-  empty_minibuf = get_minibuffer (0);
-
-  FOR_EACH_FRAME (dummy, frame)
-    {
-      Lisp_Object root_window = Fframe_root_window (frame);
-      Lisp_Object mini_window = XWINDOW (root_window)->next;
-
-      if (! NILP (mini_window) && ! EQ (mini_window, minibuf_window)
-	  && !NILP (Fwindow_minibuffer_p (mini_window)))
-	/* Use set_window_buffer instead of Fset_window_buffer (see
-	   discussion of bug#11984, bug#12025, bug#12026).  */
-	set_window_buffer (mini_window, empty_minibuf, 0, 0);
-    }
-
   /* Display this minibuffer in the proper window.  */
   /* Use set_window_buffer instead of Fset_window_buffer (see
      discussion of bug#11984, bug#12025, bug#12026).  */


-- 
Alan Mackenzie (Nuremberg, Germany).



^ permalink raw reply related	[flat|nested] 206+ messages in thread

end of thread, other threads:[~2021-01-10 19:05 UTC | newest]

Thread overview: 206+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-13 19:02 Stop frames stealing eachothers' minibuffers! Alan Mackenzie
2020-10-13 19:20 ` Eli Zaretskii
2020-10-13 19:51   ` Alan Mackenzie
2020-10-13 20:25     ` Gregory Heytings via Emacs development discussions.
2020-10-13 20:44       ` Alan Mackenzie
2020-10-13 21:02         ` Drew Adams
2020-10-14 14:34         ` Eli Zaretskii
2020-10-14 16:02           ` Alan Mackenzie
2020-10-14 16:14             ` Eli Zaretskii
2020-10-14 16:35               ` Alan Mackenzie
2020-10-14 17:05                 ` Eli Zaretskii
2020-10-14 18:45                   ` Alan Mackenzie
2020-10-14 18:58                     ` Eli Zaretskii
2020-10-14 19:49                       ` Alan Mackenzie
2020-10-15 13:44                         ` Eli Zaretskii
2020-10-15 18:01                           ` Alan Mackenzie
2020-10-15 18:18                             ` Eli Zaretskii
2020-10-21 15:19                               ` Alan Mackenzie
2020-10-21 16:49                                 ` Drew Adams
2020-10-21 19:13                                   ` Alan Mackenzie
2020-10-21 18:32                                 ` Stefan Monnier
2020-10-21 19:38                                   ` Alan Mackenzie
2020-10-21 20:04                                 ` Alan Mackenzie
2020-10-22 16:14                                   ` Eli Zaretskii
2020-10-23 20:42                                     ` C-x o is moving between frames. [Was: Stop frames stealing eachothers' minibuffers!] Alan Mackenzie
2020-10-23 20:55                                       ` Stefan Monnier
2020-10-24  7:26                                       ` Eli Zaretskii
2020-10-24 15:44                                         ` Alan Mackenzie
2020-10-24 18:40                                           ` Stefan Monnier
2020-10-24 19:29                                             ` Alan Mackenzie
2020-10-30 22:09                                     ` Stop frames stealing eachothers' minibuffers! Alan Mackenzie
2020-10-31  7:25                                       ` Eli Zaretskii
2020-10-31 16:14                                         ` Alan Mackenzie
2020-10-31 16:45                                           ` Eli Zaretskii
2020-10-31 19:44                                             ` Alan Mackenzie
2020-10-31 20:00                                               ` Eli Zaretskii
2020-10-31 20:39                                                 ` Alan Mackenzie
2020-11-01 18:35                                                   ` Eli Zaretskii
2020-11-01 19:53                                                     ` Alan Mackenzie
2020-11-01 20:52                                                       ` Non-nested minibuffers (was: Stop frames stealing eachothers' minibuffers!) Stefan Monnier
2020-11-02 17:19                                                       ` Stop frames stealing eachothers' minibuffers! Eli Zaretskii
2020-11-02 18:51                                                         ` Alan Mackenzie
2020-11-02 19:19                                                           ` Eli Zaretskii
2020-11-03 21:08                                                             ` Alan Mackenzie
2020-11-04 16:47                                                               ` Eli Zaretskii
2020-11-04 17:39                                                                 ` Alan Mackenzie
2020-11-09 15:09                                                                   ` Madhu
2020-11-09 20:34                                                                     ` Andrii Kolomoiets
2020-11-10  3:25                                                                       ` Eli Zaretskii
2020-11-10  8:08                                                                         ` Andrii Kolomoiets
2020-11-10  8:52                                                                           ` Eli Zaretskii
2020-11-10 13:21                                                                             ` Stefan Monnier
2020-11-10 17:27                                                                               ` Andrii Kolomoiets
2020-11-10 18:26                                                                                 ` Eli Zaretskii
2020-11-10 22:43                                                                                   ` Andrii Kolomoiets
2020-11-11 15:38                                                                                     ` Eli Zaretskii
2020-11-10 19:57                                                                                 ` Stefan Monnier
2020-11-10 22:54                                                                                   ` Andrii Kolomoiets
2020-11-10 23:18                                                                                     ` Stefan Monnier
2020-11-11  7:47                                                                                       ` Andrii Kolomoiets
2020-11-11 16:07                                                                                         ` Eli Zaretskii
2020-11-11 20:37                                                                                           ` Alan Mackenzie
2020-11-14 13:36                                                                                             ` Eli Zaretskii
2020-11-14 17:12                                                                                               ` Eli Zaretskii
2020-11-14 18:48                                                                                                 ` Alan Mackenzie
2020-11-14 19:11                                                                                                   ` Eli Zaretskii
2020-11-14 19:24                                                                                                   ` martin rudalics
2020-11-14 21:37                                                                                                     ` Alan Mackenzie
2020-11-15  8:48                                                                                                       ` martin rudalics
2020-11-19 10:40                                                                                         ` Alan Mackenzie
2020-11-19 11:40                                                                                           ` Andrii Kolomoiets
2020-11-19 13:30                                                                                             ` Alan Mackenzie
2020-11-20 18:47                                                                                           ` martin rudalics
2020-11-20 21:00                                                                                             ` Alan Mackenzie
2020-11-20 21:36                                                                                               ` Stefan Monnier
2020-11-21  9:02                                                                                               ` martin rudalics
2020-11-21 10:27                                                                                                 ` Alan Mackenzie
2020-11-21 11:55                                                                                                   ` martin rudalics
2020-11-21 12:45                                                                                                     ` Alan Mackenzie
2020-11-21 15:53                                                                                                       ` martin rudalics
2020-11-22 10:59                                                                                                         ` Alan Mackenzie
2020-11-22 15:13                                                                                                           ` Stefan Monnier
2020-11-22 17:11                                                                                                             ` Alan Mackenzie
2020-11-22 19:58                                                                                                               ` Stefan Monnier
2020-11-22 17:57                                                                                                           ` martin rudalics
2020-11-22 18:38                                                                                                             ` Alan Mackenzie
2020-11-23  9:10                                                                                                               ` martin rudalics
2020-11-23 13:36                                                                                                                 ` Alan Mackenzie
2020-11-23 14:22                                                                                                                   ` martin rudalics
2020-11-23 16:07                                                                                                                     ` Alan Mackenzie
2020-11-23 18:08                                                                                                                       ` martin rudalics
2020-11-23 20:16                                                                                                                         ` Andrii Kolomoiets
2020-11-24  8:46                                                                                                                           ` martin rudalics
2020-11-23 20:22                                                                                                                         ` Gregory Heytings via Emacs development discussions.
2020-11-23 20:26                                                                                                                           ` Andrii Kolomoiets
2020-11-24  8:47                                                                                                                             ` martin rudalics
2020-11-24  8:46                                                                                                                           ` martin rudalics
2020-11-24 10:25                                                                                                                             ` martin rudalics
2020-11-24 11:37                                                                                                                               ` Gregory Heytings via Emacs development discussions.
2020-11-24 19:24                                                                                                                                 ` martin rudalics
2020-11-25  9:25                                                                                                                                   ` martin rudalics
2020-11-25 21:09                                                                                                                                     ` Alan Mackenzie
2020-11-25 21:31                                                                                                                                       ` Gregory Heytings via Emacs development discussions.
2020-11-25 21:54                                                                                                                                         ` Alan Mackenzie
2020-11-25 22:23                                                                                                                                           ` Gregory Heytings via Emacs development discussions.
2020-11-27 10:02                                                                                                                                             ` Alan Mackenzie
2020-11-27 10:36                                                                                                                                               ` Gregory Heytings via Emacs development discussions.
2020-11-27 10:47                                                                                                                                                 ` Gregory Heytings via Emacs development discussions.
2020-11-27 11:20                                                                                                                                                   ` Alan Mackenzie
2020-11-27 12:03                                                                                                                                                     ` Gregory Heytings via Emacs development discussions.
2020-11-27 11:14                                                                                                                                                 ` Alan Mackenzie
2020-11-27 12:03                                                                                                                                                   ` Gregory Heytings via Emacs development discussions.
2020-11-27 15:42                                                                                                                                                     ` martin rudalics
2020-11-27 15:54                                                                                                                                                       ` Gregory Heytings via Emacs development discussions.
2020-11-27 17:14                                                                                                                                                         ` martin rudalics
2020-11-27 17:43                                                                                                                                                           ` Gregory Heytings via Emacs development discussions.
2020-11-27 18:08                                                                                                                                                             ` martin rudalics
2020-11-27 20:02                                                                                                                                                               ` Gregory Heytings via Emacs development discussions.
2020-11-27 18:50                                                                                                                                                             ` Eli Zaretskii
2020-11-26 15:44                                                                                                                                         ` martin rudalics
2020-11-26 20:32                                                                                                                                           ` Gregory Heytings via Emacs development discussions.
2020-11-27  7:33                                                                                                                                           ` Gregory Heytings via Emacs development discussions.
2020-11-27  9:34                                                                                                                                             ` martin rudalics
2020-11-27 10:06                                                                                                                                               ` Gregory Heytings via Emacs development discussions.
2020-11-27 10:36                                                                                                                                                 ` martin rudalics
2020-11-27 10:43                                                                                                                                                   ` Gregory Heytings via Emacs development discussions.
2020-11-27 15:41                                                                                                                                                     ` martin rudalics
2020-11-27 16:19                                                                                                                                                       ` Gregory Heytings via Emacs development discussions.
2020-11-27 17:14                                                                                                                                                         ` martin rudalics
2020-11-27 18:01                                                                                                                                                           ` Gregory Heytings via Emacs development discussions.
2020-11-27 18:35                                                                                                                                                             ` martin rudalics
2020-11-27 20:05                                                                                                                                                               ` Gregory Heytings via Emacs development discussions.
2020-11-28 10:45                                                                                                                                             ` Alan Mackenzie
2020-11-28 15:35                                                                                                                                               ` Alan Mackenzie
2020-11-28 17:02                                                                                                                                               ` Stefan Monnier
2020-11-28 20:59                                                                                                                                                 ` Gregory Heytings via Emacs development discussions.
2020-11-28 21:10                                                                                                                                                   ` Stefan Monnier
2020-11-28 22:01                                                                                                                                                     ` Gregory Heytings via Emacs development discussions.
2020-11-28 22:10                                                                                                                                                       ` Stefan Monnier
2020-11-28 22:38                                                                                                                                                         ` Gregory Heytings via Emacs development discussions.
2020-11-29 18:15                                                                                                                                                 ` Alan Mackenzie
2020-11-27 10:13                                                                                                                                           ` Alan Mackenzie
2020-11-27 10:36                                                                                                                                             ` martin rudalics
2020-11-27 11:30                                                                                                                                               ` Alan Mackenzie
2020-11-27 12:29                                                                                                                                               ` Eli Zaretskii
2020-11-27 13:43                                                                                                                                                 ` Gregory Heytings via Emacs development discussions.
2020-11-27 14:09                                                                                                                                                   ` Stefan Monnier
2020-11-27 15:03                                                                                                                                                   ` Eli Zaretskii
2020-11-27 22:00                                                                                                                                                   ` Alan Mackenzie
2020-11-27 15:42                                                                                                                                                 ` martin rudalics
2021-01-03 18:10                                                                                                                                               ` Alan Mackenzie
2021-01-03 18:24                                                                                                                                                 ` martin rudalics
2021-01-03 18:42                                                                                                                                                   ` Alan Mackenzie
2021-01-03 20:08                                                                                                                                                     ` martin rudalics
2021-01-03 20:43                                                                                                                                                       ` Alan Mackenzie
2021-01-04  9:20                                                                                                                                                 ` martin rudalics
2021-01-05 18:07                                                                                                                                                   ` Alan Mackenzie
2021-01-05 18:53                                                                                                                                                     ` martin rudalics
2021-01-07 17:36                                                                                                                                                       ` Alan Mackenzie
2021-01-07 18:08                                                                                                                                                         ` Drew Adams
2021-01-07 18:26                                                                                                                                                         ` martin rudalics
2021-01-10  0:53                                                                                                                                                           ` Alan Mackenzie
2021-01-10  1:34                                                                                                                                                             ` Stefan Monnier
2021-01-10 16:03                                                                                                                                                               ` Alan Mackenzie
2021-01-10 16:04                                                                                                                                                             ` martin rudalics
2021-01-10 17:18                                                                                                                                                               ` Alan Mackenzie
2021-01-10 17:30                                                                                                                                                                 ` Stefan Monnier
2021-01-10 17:49                                                                                                                                                                 ` martin rudalics
2021-01-10 18:25                                                                                                                                                                   ` Alan Mackenzie
2021-01-10 19:05                                                                                                                                                                     ` martin rudalics
2021-01-06  0:14                                                                                                                                                     ` Gregory Heytings via Emacs development discussions.
2021-01-06  0:48                                                                                                                                                       ` Stefan Monnier
2021-01-06  9:40                                                                                                                                                         ` Gregory Heytings via Emacs development discussions.
2021-01-06 15:52                                                                                                                                                           ` Stefan Monnier
2021-01-07  7:52                                                                                                                                                             ` Richard Stallman
2021-01-07 14:33                                                                                                                                                               ` Eli Zaretskii
2021-01-07 13:27                                                                                                                                                       ` Alan Mackenzie
2021-01-07 23:34                                                                                                                                                         ` Gregory Heytings via Emacs development discussions.
2020-11-26 15:43                                                                                                                                       ` martin rudalics
2020-11-27 11:53                                                                                                                                         ` Alan Mackenzie
2020-11-24 12:59                                                                                                                               ` Andrii Kolomoiets
2020-11-24 19:24                                                                                                                                 ` martin rudalics
2020-11-21 17:19                                                                                                 ` Stefan Monnier
2020-11-21 18:08                                                                                                   ` martin rudalics
2020-11-11  8:28                                                                                   ` martin rudalics
2020-11-11 18:47                                                                                     ` Drew Adams
2020-11-11 19:10                                                                                       ` martin rudalics
2020-11-10 16:45                                                                             ` Drew Adams
2020-11-10 19:51                                                                               ` Stefan Monnier
2020-11-10 20:08                                                                                 ` Eli Zaretskii
2020-11-10 20:12                                                                                 ` Drew Adams
2020-10-14 20:17                       ` Gregory Heytings via Emacs development discussions.
2020-10-14 17:07                 ` Gregory Heytings via Emacs development discussions.
2020-10-13 20:51       ` Andreas Schwab
2020-10-13 21:02         ` Gregory Heytings via Emacs development discussions.
2020-10-13 22:22         ` Stefan Monnier
2020-10-13 22:28   ` Stefan Monnier
2020-10-14 14:47     ` Eli Zaretskii
2020-10-14 17:22       ` Stefan Monnier
2020-10-14 17:32         ` Gregory Heytings via Emacs development discussions.
2020-10-14 17:47           ` Eli Zaretskii
2020-10-15  1:43             ` Stefan Monnier
2020-10-14 17:43         ` Eli Zaretskii
2020-10-15  1:42           ` Stefan Monnier
2020-10-13 19:22 ` Gregory Heytings via Emacs development discussions.
2020-10-13 22:25 ` Stefan Monnier

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).