42.21.1 抽象显示函数

本小节中,ewocnode 代表上文所述的结构(see 抽象显示),而 data 代表用作数据元素的任意 Lisp 对象。

Function: ewoc-create pretty-printer &optional header footer nosep

创建并返回一个新的 ewoc,初始不含任何节点(因此也没有数据元素)。pretty-printer 应为一个接受单个参数的函数,参数为你计划在此 ewoc 中使用的数据元素,并使用 insert 在点处插入其文本描述(切勿使用 insert-before-markers,否则会干扰 Ewoc 包的内部机制)。

默认情况下,页眉、页脚以及每个节点的文本描述后会自动插入换行符。若 nosep 为非 nil,则不插入换行符。例如,这可用于将整个 ewoc 显示在单行中, 或通过让 pretty-printer 对某些节点不执行任何操作来使节点不可见。

ewoc 会在你创建它时的当前缓冲区中维护文本,因此调用 ewoc-create 前请先切换到目标缓冲区。

Function: ewoc-buffer ewoc

返回 ewoc 维护其文本所在的缓冲区。

Function: ewoc-get-hf ewoc

返回一个由 ewoc 的页眉与页脚组成的序对单元 (header . footer)

Function: ewoc-set-hf ewoc header footer

ewoc 的页眉与页脚分别设置为字符串 headerfooter

Function: ewoc-enter-first ewoc data
Function: ewoc-enter-last ewoc data

分别在 ewoc 的节点链开头或末尾添加一个封装了 data 的新节点。

Function: ewoc-enter-before ewoc node data
Function: ewoc-enter-after ewoc node data

分别在 ewoc 中的 node 之前或之后添加一个封装了 data 的新节点。

Function: ewoc-prev ewoc node
Function: ewoc-next ewoc node

分别返回 ewocnode 的前驱节点与后继节点。

Function: ewoc-nth ewoc n

返回 ewoc 中从零开始索引为 n 的节点。 负数 n 表示从末尾开始计数。若 n 超出范围,ewoc-nth 返回 nil

Function: ewoc-data node

提取并返回 node 封装的数据。

Function: ewoc-set-data node data

node 封装的数据设置为 data

Function: ewoc-locate ewoc &optional pos guess

确定 ewoc 中包含点(若指定则为 pos)的节点,并返回该节点。若 ewoc 无任何节点, 则返回 nil。若 pos 在第一个节点之前, 返回第一个节点;若 pos 在最后一个节点之后,返回 最后一个节点。可选第三个参数 guess 应为一个可能靠近 pos 的节点;这不会改变结果, 但能加快函数运行速度。

Function: ewoc-location node

返回 node 的起始位置。

Function: ewoc-goto-prev ewoc arg
Function: ewoc-goto-next ewoc arg

分别将点移动到 ewoc 中第 arg 个前驱或后继节点。 若已在第一个节点或 ewoc 为空,ewoc-goto-prev 不会移动; 而 ewoc-goto-next 会越过最后一个节点并返回 nil。 除此特殊情况外,这些函数返回移动到的节点。

Function: ewoc-goto-node ewoc node

将点移动到 ewocnode 的起始位置。

Function: ewoc-refresh ewoc

此函数重新生成 ewoc 的文本。其工作方式是删除页眉与页脚之间的所有文本,即所有 数据元素的表示,然后依次为每个节点调用美化打印函数。

Function: ewoc-invalidate ewoc &rest nodes

ewoc-refresh 类似,区别在于仅更新 ewoc 中的 nodes,而非全部节点。

Function: ewoc-delete ewoc &rest nodes

ewoc 中删除 nodes 中的每个节点。

Function: ewoc-filter ewoc predicate &rest args

ewoc 中的每个数据元素调用 predicate, 并删除那些 predicate 返回 nil 的节点。 所有 args 都会传递给 predicate

Function: ewoc-collect ewoc predicate &rest args

ewoc 中的每个数据元素调用 predicate, 并返回所有 predicate 返回非 nil 的元素列表。 列表中元素的顺序与缓冲区中一致。所有 args 都会传递给 predicate

Function: ewoc-map map-function ewoc &rest args

ewoc 中的每个数据元素调用 map-function, 并更新那些 map-function 返回非 nil 的节点。 所有 args 都会传递给 map-function