GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/eintr/zap_002dto_002dchar-body.html ・ emacs-doc.conao3.com

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 関数は配列から要素を抽出します。これは配列専用の関数であり、本ドキュメントでは説明しません。The GNU Emacs Lisp Reference Manual の Arrays を参照してください。)

(point) はカーソルの現在位置です。

コードの次の部分は、progn を用いた式です。progn の本体は、search-forward と point の呼び出しで構成されています。

progn の仕組みは search-forward を学んだ後の方が理解しやすいため、search-forward を見てから progn を見ていきます。