]> git.eshelyaron.com Git - emacs.git/commitdiff
(read_minibuf): Clear out all other minibuffer windows.
authorRichard M. Stallman <rms@gnu.org>
Sun, 1 Jan 2006 02:10:52 +0000 (02:10 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sun, 1 Jan 2006 02:10:52 +0000 (02:10 +0000)
src/ChangeLog
src/minibuf.c

index 398fe286de9bc15ef579c32f764c0a120be52460..e550604498d8798a16b9d9b7715a9a77f86ba49a 100644 (file)
@@ -1,3 +1,7 @@
+2005-12-31  Richard M. Stallman  <rms@gnu.org>
+
+       * minibuf.c (read_minibuf): Clear out all other minibuffer windows.
+
 2005-12-31  Eli Zaretskii  <eliz@gnu.org>
 
        * emacs.c (gdb_pvec_type): A dummy variable for GDB's sake.
index df9f5dcc33630a7c9bcba198cdb0ec70e65ec160..a0accf6ed5063ac5b403037c9788c7dda3603dfa 100644 (file)
@@ -463,6 +463,9 @@ read_minibuf (map, initial, prompt, backup_n, expflag,
   /* String to add to the history.  */
   Lisp_Object histstring;
 
+  Lisp_Object empty_minibuf;
+  Lisp_Object dummy, frame;
+
   extern Lisp_Object Qfront_sticky;
   extern Lisp_Object Qrear_nonsticky;
 
@@ -639,6 +642,22 @@ read_minibuf (map, initial, prompt, backup_n, expflag,
   Vminibuf_scroll_window = selected_window;
   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 = Fget_buffer (build_string (" *Minibuf-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) && !NILP (Fwindow_minibuffer_p (mini_window)))
+       Fset_window_buffer (mini_window, empty_minibuf, Qnil);
+    }
+
+  /* Display this minibuffer in the proper window.  */
   Fset_window_buffer (minibuf_window, Fcurrent_buffer (), Qnil);
   Fselect_window (minibuf_window, Qnil);
   XSETFASTINT (XWINDOW (minibuf_window)->hscroll, 0);