28.13 缓冲区间隙

Emacs缓冲区通过一个不可见的间隙(gap)实现, 以加快插入和删除操作。 插入操作通过填充部分间隙完成, 删除操作则会扩大间隙。 显然,这要求间隙首先被移动到插入或删除的位置。 Emacs仅在你尝试插入或删除时才移动间隙。 这就是为什么在大型缓冲区的某一部分执行首次编辑命令时, 如果此前编辑的是另一较远区域,有时会出现明显延迟。

该机制是不可见的,Lisp代码永远不应受间隙当前位置的影响, 但以下函数可用于获取间隙状态信息。

Function: gap-position

该函数返回当前缓冲区中间隙的当前位置。

Function: gap-size

该函数返回当前缓冲区中间隙的当前大小。