summaryrefslogtreecommitdiff
path: root/devdocs/elisp/deleting-frames.html
blob: 5d8e2d22633d58cf8e10fb85cf6ba8b51767f0c0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 <h3 class="section">Deleting Frames</h3>  <p>A <em>live frame</em> is one that has not been deleted. When a frame is deleted, it is removed from its terminal display, although it may continue to exist as a Lisp object until there are no more references to it. </p> <dl> <dt id="delete-frame">Command: <strong>delete-frame</strong> <em>&amp;optional frame force</em>
</dt> <dd>
  <p>This function deletes the frame <var>frame</var>. The argument <var>frame</var> must specify a live frame (see below) and defaults to the selected frame. </p> <p>It first deletes any child frame of <var>frame</var> (see <a href="child-frames">Child Frames</a>) and any frame whose <code>delete-before</code> frame parameter (see <a href="frame-interaction-parameters">Frame Interaction Parameters</a>) specifies <var>frame</var>. All such deletions are performed recursively; so this step makes sure that no other frames with <var>frame</var> as their ancestor will exist. Then, unless <var>frame</var> specifies a tooltip, this function runs the hook <code>delete-frame-functions</code> (each function getting one argument, <var>frame</var>) before actually killing the frame. After actually killing the frame and removing the frame from the frame list, <code>delete-frame</code> runs <code>after-delete-frame-functions</code>. </p> <p>Note that a frame cannot be deleted as long as its minibuffer serves as surrogate minibuffer for another frame (see <a href="minibuffers-and-frames">Minibuffers and Frames</a>). Normally, you cannot delete a frame if all other frames are invisible, but if <var>force</var> is non-<code>nil</code>, then you are allowed to do so. </p>
</dd>
</dl> <dl> <dt id="frame-live-p">Function: <strong>frame-live-p</strong> <em>frame</em>
</dt> <dd><p>This function returns non-<code>nil</code> if the frame <var>frame</var> has not been deleted. The possible non-<code>nil</code> return values are like those of <code>framep</code>. See <a href="frames">Frames</a>. </p></dd>
</dl> <p>Some window managers provide a command to delete a window. These work by sending a special message to the program that operates the window. When Emacs gets one of these commands, it generates a <code>delete-frame</code> event, whose normal definition is a command that calls the function <code>delete-frame</code>. See <a href="misc-events">Misc Events</a>. </p> <dl> <dt id="delete-other-frames">Command: <strong>delete-other-frames</strong> <em>&amp;optional frame iconify</em>
</dt> <dd>
<p>This command deletes all frames on <var>frame</var>’s terminal, except <var>frame</var>. If <var>frame</var> uses another frame’s minibuffer, that minibuffer frame is left untouched. The argument <var>frame</var> must specify a live frame and defaults to the selected frame. Internally, this command works by calling <code>delete-frame</code> with <var>force</var> <code>nil</code> for all frames that shall be deleted. </p> <p>This function does not delete any of <var>frame</var>’s child frames (see <a href="child-frames">Child Frames</a>). If <var>frame</var> is a child frame, it deletes <var>frame</var>’s siblings only. </p> <p>With the prefix argument <var>iconify</var>, the frames are iconified rather than deleted. </p>
</dd>
</dl><div class="_attribution">
  <p class="_attribution-p">
    Copyright &copy; 1990-1996, 1998-2022 Free Software Foundation, Inc. <br>Licensed under the GNU GPL license.<br>
    <a href="https://www.gnu.org/software/emacs/manual/html_node/elisp/Deleting-Frames.html" class="_attribution-link">https://www.gnu.org/software/emacs/manual/html_node/elisp/Deleting-Frames.html</a>
  </p>
</div>