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-forward和point的调用组成。
在学习progn之前,了解一下search-forward会更容易理解,因此我们将先看看search-forward,然后再看progn。