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

4.4.2 append-to-buffer の本体

append-to-buffer 関数の本体は let から始まります。

前述の通り(letを参照)、let式の目的は、letの本体内でのみ使用される1つ以上の変数を生成し、初期値を代入することです。つまり、このような変数は、let式の外部にある同名の変数と混同されることはありません。

let式をアウトラインに示したappend-to-bufferのテンプレートを提示することで、let式が関数全体の中でどのように位置づけられるかを確認できます。

(defun append-to-buffer (buffer start end)
  "documentation..."
  (interactive ...)
  (let ((variable value))
        body...))

let 式には3つの要素があります:

  1. 記号 let;
  2. この場合、2要素のリスト (variable value) を1つだけ含む varlist;
  3. let 式の本体。

append-to-buffer 関数では、varlist は次のようになります。

(oldbuf (current-buffer))

let 式のこの部分では、唯一の変数 oldbuf に (current-buffer) 式が返す値が代入されます。変数 oldbuf は、現在操作しているバッファと、そこからコピーを行うバッファを管理するために使用されます。

varlistの要素(または複数の要素)は括弧で囲まれており、これによりLispインタプリタはvarlistをletの本体と区別できます。その結果、varlist内の2要素のリストは、それを囲む括弧で囲まれます。行は以下のようになります。

(let ((oldbuf (current-buffer)))
  ... )

oldbuf の前にある2つの括弧は、oldbuf の前の1つ目の括弧が varlist の境界を、2つ目の括弧が2要素のリスト (oldbuf (current-buffer)) の開始を示していることに気づかなければ、意外に感じられるかもしれません。