30.8 查找所有框架

Function: frame-list

该函数返回所有**活动框架**的列表,即尚未被删除的框架。 它类似于缓冲区的 buffer-list,包含所有终端上的框架。 返回的列表是新建的,因此修改列表不会对 Emacs 内部产生任何影响。

Function: visible-frame-list

该函数仅返回当前可见框架的列表。See 框架的可见性。 文本终端上的框架始终算作可见,即使实际只显示选中的那个。

Function: frame-list-z-order &optional display

该函数按 Z 序(堆叠顺序)返回 Emacs 的框架列表(see 框架的置顶、置底与堆叠调整)。 可选参数 display 指定要查询的显示器,可以是一个框架或显示器名称(字符串)。 若省略或为 nil,则表示选中框架所在的显示器。 若该显示器上没有 Emacs 框架,则返回 nil

框架按从上到下(最前到最后)的顺序排列。 一个特殊情况:如果 display 非空且指定了一个活动框架,则返回该框架的子框架,同样按 Z 序排列。

该函数在文本终端上无意义。

Function: next-frame &optional frame minibuf

该函数可以从任意起点,在指定终端的所有框架间方便地循环遍历。 它返回 frame 所在终端上,所有活动框架列表中位于 frame 之后的框架。 参数 frame 必须是活动框架,默认为选中框架。 它永远不会返回 no-other-frame 参数(see 框架交互参数)非空的框架。

第二个参数 minibuf 决定在选择下一个框架时考虑哪些框架:

nil

考虑除仅含迷你缓冲区的框架之外的所有框架。

visible

只考虑可见框架。

0

只考虑可见或已图标化的框架。

某个窗口

只考虑以该窗口作为迷你缓冲区窗口的框架。

其他任意值

考虑所有框架。

Function: previous-frame &optional frame minibuf

next-frame 类似,但按相反方向遍历所有框架。

另见 窗口循环顺序 中的 next-windowprevious-window

一些 Lisp 程序需要查找满足特定条件的一个或多个框架,为此提供了函数 filtered-frame-list

Function: filtered-frame-list predicate

该函数返回所有满足指定 predicate 条件的活动框架列表。 参数 predicate 必须是单参数函数,参数为待检测的框架,满足条件时返回非 nil