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つの要素があります:
let;
(variable value) を1つだけ含む varlist;
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))
の開始を示していることに気づかなければ、意外に感じられるかもしれません。