From: Martin Rudalics Date: Tue, 19 May 2015 09:08:21 +0000 (+0200) Subject: Clarify concept of "surrogate minibuffer frames" (Bug#20538) X-Git-Tag: emacs-25.0.90~2052 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=9a07af01d046d072520593a729ea18230761e205;p=emacs.git Clarify concept of "surrogate minibuffer frames" (Bug#20538) * src/frame.c (Fdelete_frame): In doc-string mention that frame can't be deleted if it has a surrogate minibuffer. * doc/lispref/frames.texi (Minibuffers and Frames) (Deleting Frames): Explain "surrogate minibuffer frames". --- diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi index e19472e3ca3..c0d17f0ca21 100644 --- a/doc/lispref/frames.texi +++ b/doc/lispref/frames.texi @@ -1624,7 +1624,8 @@ tooltip, it first runs the hook @code{delete-frame-functions} (each function gets one argument, @var{frame}). By default, @var{frame} is the selected frame. -A frame cannot be deleted if its minibuffer is used by other frames. +A frame cannot be deleted as long as its minibuffer serves as surrogate +minibuffer for another frame (@pxref{Minibuffers and Frames}). Normally, you cannot delete a frame if all other frames are invisible, but if @var{force} is non-@code{nil}, then you are allowed to do so. @end deffn @@ -1700,12 +1701,18 @@ you can get it with @code{minibuffer-window} (@pxref{Definition of minibuffer-window}). @cindex frame without a minibuffer -However, you can also create a frame with no minibuffer. Such a frame -must use the minibuffer window of some other frame. When you create the -frame, you can explicitly specify the minibuffer window to use (in some -other frame). If you don't, then the minibuffer is found in the frame -which is the value of the variable @code{default-minibuffer-frame}. Its -value should be a frame that does have a minibuffer. +@cindex surrogate minibuffer frame +However, you can also create a frame without a minibuffer. Such a frame +must use the minibuffer window of some other frame. That other frame +will serve as @dfn{surrogate minibuffer frame} for this frame and cannot +be deleted via @code{delete-frame} (@pxref{Deleting Frames}) as long as +this frame is live. + +When you create the frame, you can explicitly specify the minibuffer +window to use (in some other frame). If you don't, then the minibuffer +is found in the frame which is the value of the variable +@code{default-minibuffer-frame}. Its value should be a frame that does +have a minibuffer. If you use a minibuffer-only frame, you might want that frame to raise when you enter the minibuffer. If so, set the variable diff --git a/src/frame.c b/src/frame.c index 22086552ea3..edf656694b7 100644 --- a/src/frame.c +++ b/src/frame.c @@ -1823,9 +1823,10 @@ DEFUN ("delete-frame", Fdelete_frame, Sdelete_frame, 0, 2, "", doc: /* Delete FRAME, permanently eliminating it from use. FRAME defaults to the selected frame. -A frame may not be deleted if its minibuffer is used by other frames. -Normally, you may not delete a frame if all other frames are invisible, -but if the second optional argument FORCE is non-nil, you may do so. +A frame may not be deleted if its minibuffer serves as surrogate +minibuffer for another frame. Normally, you may not delete a frame if +all other frames are invisible, but if the second optional argument +FORCE is non-nil, you may do so. This function runs `delete-frame-functions' before actually deleting the frame, unless the frame is a tooltip.