32.1 位置点附近 (Near Point)

Emcas 提供了不少函数来处理 位置点附近 的字符. 下面就是一些简单的函数. (另外, 你可以在 正则搜寻章节 查看 looking-at 的定义.)

接下来的四个函数里, 起始位置 (beginning) 和 结束位置 (end) 是指缓冲区的编辑范围的起始位置和结束位置.

Function: char-after &optional position 这个函数返回当前缓冲区中, 紧挨着 位置 position 后的字符. 如果这个位置不在缓冲区的编辑范围内, 那么这个函数会返回 nil. 默认的位置是 当前位置点(point),

比如这个例子, 我们假设缓冲区的第一个字符是 '@', 那么会有:

(string (char-after 1))
    => "@"

Function: char-before &optional position 这个函数返回当前缓冲区中, 紧挨着 位置 position 前的字符. 同样的, 如果这个位置不在编辑范围内, 那么这个函数会返回 nil. 默认的位置是 当前位置点 (point).

Function: following-char 这个函数返回当前缓冲区中紧挨着位置点的字符. 看起来和 (char-after (point)) 很相似. 不同的是, 如果位置点在缓冲区的末尾, following-char 会返回 0.

牢记在心: 位置点总是处于两个字符之间, 也就是光标覆盖的字符的前面一点点. 因此, 函数 following-char 返回的总是光标覆盖的那个字符.

这下面这个例子里, 位置点 位于 'a' 和 'c' 之间.

---------- Buffer: foo ----------
Gentlemen may cry ``Pea∗ce! Peace!,''
but there is no peace.
---------- Buffer: foo ----------

(string (preceding-char))
    => "a"
(string (following-char))
    => "c"

Function: preceding-char 这个函数返回当前缓冲区紧挨着位置点的前一个字符. 和上面的 following-char 很类似. 此外, 如果位置点位于缓冲区的起始位置, 那这个函数会返回 0.

Function: bobp 这是一个谓语, 如果位置点在缓冲区起始位置(beginning of the buffer), 则返回 t. 如果启用了变窄 (narrowing), 那么此时 bob 就是文本的起始位置. (详情查阅 位置点章 的 point-min)

Function: eobp 这是一个谓语, 如果位置点在缓冲区结束位置(end of the buffer), 则返回 t. 如果启用了变窄 (narrowing), 那么此时的 eob 就是文本的结束位置. (查阅 位置点章 的 point-max)

Function: bolp 这是一个谓语, 如果位置点在行的起始位置(beginning of a line), 则返回 t. 此外, 缓冲区的起始位置始终算是行的起始位置.

Function: eolp 这是一个谓语, 如果位置点在行的结束位置(end of a line). 则返回 t. 此外, 缓冲区的结束位置始终算是行的结束位置.

最后更新于