31.1 光标位置

光标位置(Point) 是许多编辑命令使用的特殊缓冲区位置,包括自动插入的输入字符与文本插入函数。其他命令会在文本中移动光标位置,以便在不同位置执行编辑与插入操作。

与其他位置一样,光标位置指向两个字符之间的位置(或是首字符之前、尾字符之后),而非某个特定字符。终端通常会将光标显示在光标位置紧随其后的字符上;而光标位置实际上位于光标所覆盖字符的前方。

光标位置的值是一个不小于1、且不大于缓冲区大小加1的数值。若启用了范围缩小(see 范围限制),则光标位置会被限制在缓冲区的可访问区域内(可能位于该区域的一端)。

每个缓冲区都有自身独立的光标位置,与其他缓冲区无关。每个窗口也有独立的光标位置,与显示同一缓冲区的其他窗口无关。这就是为什么显示同一缓冲区的不同窗口可以拥有不同光标位置的原因。当一个缓冲区仅在一个窗口中显示时,缓冲区光标位置与窗口光标位置通常取值相同,因此二者区别一般无关紧要。See 窗口(window)与点(Point),获取更多细节。

Function: point

该函数以整数形式返回当前缓冲区的光标位置值。

(point)
     ⇒ 175
Function: point-min

该函数返回当前缓冲区中光标位置的最小可访问值。该值通常为1,但如果启用了范围缩小,则为缩小后区域的起始位置。(See 范围限制。)

Function: point-max

该函数返回当前缓冲区中光标位置的最大可访问值。该值为 (1+ (buffer-size)),除非启用了范围缩小,此时为缩小后区域的结束位置。(See 范围限制。)

Function: buffer-end flag

flag 大于0,该函数返回 (point-max),否则返回 (point-min)。参数 flag 必须为数值。

Function: buffer-size &optional buffer

该函数返回当前缓冲区中的字符总数。在未启用任何范围缩小的情况下(see 范围限制),point-max 返回的值会比该数值大1。

若指定了缓冲区 buffer,则返回值为该缓冲区的大小。

(buffer-size)
     ⇒ 35
(point-max)
     ⇒ 36