8.1.2 zap-to-char函数的主体

zap-to-char函数的主体包含了用于删除(即移除)文本的代码,该文本位于光标当前位置到指定字符(包括该字符)的区域。

代码的第一部分如下:

(if (char-table-p translation-table-for-input)
    (setq char (or (aref translation-table-for-input char) char)))
(kill-region (point) (progn
                       (search-forward (char-to-string char) nil nil arg)
                       (point)))

char-table-p是一个前文未见的函数。它用于确定其参数是否为字符表。当是字符表时,它将传递给zap-to-char的字符设置为其中之一(如果该字符存在),否则设置为字符本身。(这对于非欧洲语言中的某些字符很重要。aref函数从数组中提取元素。它是一个特定于数组的函数,本文档不详细描述。See Arrays in The GNU Emacs Lisp Reference Manual.)

(point)是光标的当前位置。

代码的下一部分是一个使用progn的表达式。progn的主体由对search-forwardpoint的调用组成。

在学习progn之前,了解一下search-forward会更容易理解,因此我们将先看看search-forward,然后再看progn