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".
This commit is contained in:
Martin Rudalics 2015-05-19 11:08:21 +02:00
parent 448cacc85c
commit 9a07af01d0
2 changed files with 18 additions and 10 deletions

View file

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

View file

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