バッファは、文字を含む Lisp オブジェクトです。バッファはファイルを visit する 時に、その内容を保持するのに用います。しかし、バッファはそれに対するファイルを 持ってなくてもかまいません。複数のバッファが同時に存在しえますが、カレントな バッファは 1つだけです。ほとんどのエディティングコマンドはこのカレントバッファ に対し、操作を行ないます。
バッファの内容は拡張可能な(訳注:extendable) ストリングであると見なすこともで きます。バッファのどの部分に対しても挿入や削除を行なうことができます。
バッファはバッファごとに固有の情報を持ちます。それらの情報のいくつかは、変数を 通しプログラマが(直接)アクセスすることができます。その他の情報は、それを変更し たり返したりする関数を通してのみアクセス可能です (e.g., 対応するファイルの変更 時間は関数を通してのみアクセス可能ですが、タブ文字の幅は変数を通し直接アクセス することができます)。
バッファに固有な情報で直接アクセスすることのできるものは、バッファローカル変数 にストアされます。それらは、そのバッファにローカルな変数のバインディングを定義 します。このバッファローカルなバインディングはまさにそのシンボルのグローバルな 値セルと対応していますが、 evaluator はそのグローバルな値セルを "見る" 前にそ れら(訳注:バッファローカルなバインディング)を見ます。これによりユーザー(やプ ログラマ)はバッファごとに(それぞれ)異なる値を fill-column や comment-column に 設定することができます。バッファローカル変数やそれに関する関数のより詳細な情報 は、セクション 9.5 [バッファローカル変数]、ページ 79 を参照して下さい。
バッファ内容のファイルへのセーブにおける関数や変数に関しては、セクション 22.2 [ファイルに書く]、ページ 202 を参照して下さい。バッファのウィンドウへの表示に 関する関数や変数に関しては、チャプター 25 [ウィンドウ]、ページ 235 を参照して 下さい。
以下の関数の多くはバッファもしくはバッファ名(ストリング)をアーギュメントとして 受け取ります。 buffer-name と呼ばれるアーギュメントはバッファもしくはバッファ 名であるとされ、そうでない場合エラーになります。 buffer として呼ばれるアーギュ メントは実際のバッファでなくてはならず、ストリングであってはいけません。
Function: bufferp object
この関数は、 object がバッファの場合 t を返します。そうでない場合 nil を返 します。