30.7 删除框架

活动框架(live frame)指尚未被删除的框架。框架被删除后会从所属终端显示中移除,但作为 Lisp 对象可能继续存在,直到不再被任何地方引用。

Command: delete-frame &optional frame force

该函数删除框架 frame。参数 frame 必须为活动框架(见下文),默认为选中框架。

它会先删除 frame 的所有子框架(see 子框架)以及所有 delete-before 框架参数(see 框架交互参数)指向 frame 的框架。所有删除操作递归执行,确保不存在以 frame 为祖先的其他框架。 之后,除非 frame 是提示框框架,该函数会在实际销毁框架前运行钩子 delete-frame-functions(每个函数接收一个参数 frame)。在实际销毁框架并将其从框架列表移除后,delete-frame 会运行 after-delete-frame-functions

注意:只要框架的迷你缓冲区仍作为其他框架的代理迷你缓冲区使用,该框架就无法被删除(see 迷你缓冲区与框架)。 通常情况下,若所有其他框架均不可见,则无法删除该框架;但 forcenil 时允许执行此操作。

Function: frame-live-p frame

若框架 frame 未被删除,该函数返回非 nil。可能的非 nil 返回值与 framep 一致。See 框架

部分窗口管理器提供删除窗口的命令,通过向窗口所属程序发送特定消息实现。Emacs 收到此类命令时会生成 delete-frame 事件,其默认绑定为调用 delete-frame 函数的命令。See 其他系统事件

Command: delete-other-frames &optional frame iconify

该命令删除 frame 所属终端上除 frame 之外的所有框架。若 frame 使用其他框架的迷你缓冲区,则该迷你缓冲区框架会被保留。 参数 frame 必须为活动框架,默认为选中框架。内部实现为对所有待删除框架以 forcenil 调用 delete-frame

该函数不会删除 frame 的任何子框架(see 子框架)。若 frame 本身为子框架,则仅删除其同级框架。

若带前缀参数 iconify,则框架会被最小化而非删除。