バッファとは、編集可能なテキストを保持するオブジェクトのことです(バッファを参照)。ほとんどのバッファはディスクファイルの内容を保持しており(ファイルを参照)、編集が可能ですが、他の目的で使用されるものもあります。また、ほとんどのバッファはユーザーが閲覧することを想定しており、そのため、いずれの時点でウィンドウ(ウィンドウを参照)に表示されます。ただし、バッファを必ずしもウィンドウに表示する必要はありません。各バッファにはポイントと呼ばれる指定位置があり(位置を参照)、ほとんどの編集コマンドは、ポイント周辺にある現在のバッファの内容に対して作用します。いかなる時点においても、1つのバッファがカレントバッファとなります。
バッファの内容は文字列とよく似ていますが、Emacs Lispではバッファを文字列のように扱うことはなく、利用可能な操作も異なります。例えば、既存のバッファにテキストを効率的に挿入してその内容を変更することができますが、文字列にテキストを挿入する場合は部分文字列を連結する必要があり、その結果は全く新しい文字列オブジェクトになります。
Emacsの標準関数の多くは、現在のバッファ内の文字を操作したり検査したりします。本マニュアルでは、これらの関数の解説に丸々1章を割いています(Textを参照)。
各バッファには、他にもいくつかのデータ構造が関連付けられています:
ローカルキーマップと変数リストには、グローバルバインディングや値を個別に上書きするエントリが含まれています。これらは、プログラム自体を変更することなく、異なるバッファにあるプログラムの動作をカスタマイズするために使用されます。
バッファは間接である場合があり、これは別のバッファのテキストを共有しつつ、それを異なる形式で表示することを意味します。間接バッファを参照してください。
バッファには読み取り用の構文はありません。ハッシュ表記で出力され、バッファ名が表示されます。
(current-buffer)
⇒ #<buffer objects.texi>