2.4 缓冲区大小与光标位置

最后,我们来看几个相当简单的函数:buffer-sizepointpoint-minpoint-max。它们提供有关缓冲区大小和光标(点)在缓冲区中位置的信息。

函数 buffer-size 会告诉你当前缓冲区的大小;也就是说,该函数返回缓冲区中字符的总数。

(buffer-size)

你可以按常规方式对此求值:将光标放在表达式后面,输入 C-x C-e

在 Emacs 中,光标的当前位置被称为 点(point)。表达式 (point) 返回一个数字,该数字表示光标相对于缓冲区开头的位置,即从缓冲区开头到点的字符计数。

按常规方式对以下表达式求值,即可查看当前缓冲区中点的字符计数值:

(point)

在我编写本文时,点的值是 65724。point 函数在本书后面的一些示例中经常会用到。

当然,点的值取决于其在缓冲区中的位置。如果你在这个位置求值点,数字会更大:

(point)

对我来说,这个位置的点值是 66043,这意味着两个表达式之间有 319 个字符(包括空格)。(毫无疑问,你看到的数字会不同,因为我在首次求值点之后肯定已经编辑过本文。)

函数 point-minpoint 有些相似,但它返回当前缓冲区中允许的点的最小值。除非启用了限制(narrowing),否则该值为 1。(限制是一种机制,允许你或程序将操作限制在缓冲区的某一部分。See 限制与扩展。)同样,函数 point-max 返回当前缓冲区中允许的点的最大值。