Next: Swapping Text, Previous: Killing Buffers, Up: Buffers [Contents][Index]
インダイレクトバッファー(indirect buffer: 間接バッファー)とは、ベースバッファー(base buffer)と呼ばれる他のバッファーとテキストを共有します。いくつかの点において、インダイレクトバッファーはファイル間でのシンボリックリンクに類似しています。ベースバッファー自身は、インダイレクトバッファーでない可能性があります。
インダイレクトバッファーのテキストは、常にベースバッファーのテキストと同一です。編集により一方が変更されると、それは即座に他方のバッファーから可視になります。これには文字自体に加えて、テキストプロパティも同様に含まれます。
他のすべての観点において、インダイレクトバッファーとそのベースバッファーは、完全に別物です。それらは別の名前、独自のポイント値、ナローイング、マーカー、オーバーレイ、メジャーモード、バッファーローカルな変数バインディングをもちます(ただし、どちらかのバッファーでのテキストの挿入や削除を行うと、両方のバッファーでマーカーとオーバーレイの再配置が行われる)。
インダイレクトバッファーはファイルをvisitできませんが、ベースバッファーは可能です。インダイレクトバッファーの保存を試みた場合、実際にはベースバッファーが保存されます。
インダイレクトバッファーをkillしても、ベースバッファーに影響はありません。ベースバッファーをkillすると、インダイレクトバッファーはkillされて、再びカレントバッファーになることはできません。
これは、ベースバッファーがbase-bufferであるような、nameという名前のインダイレクトバッファーを作成してリターンする。引数base-bufferは生きたバッファー、または既存バッファーの名前(文字列)を指定できる。nameが既存バッファーの名前の場合は、エラーがシグナルされる。
cloneが非nil
の場合、インダイレクトバッファーは最初はbase-bufferのメジャーモード、マイナーモード、バッファーローカル変数等の“状態”を共有する。cloneが省略、またはnil
の場合、インダイレクトバッファーの情報は、新たなバッファーにたいするデフォルト状態にセットされる。
base-bufferがインダイレクトバッファーの場合は、新たなバッファーのベースとして、それのベースバッファーが使用される。さらに、cloneが非nil
ならば、初期状態はbase-bufferではなく、実際のベースバッファーからコピーされる。
この関数は、カレントバッファーのベースバッファーを共有するインダイレクトバッファーを新たに作成し、カレントバッファーの残りの属性をコピーしてリターンする(カレントバッファーがインダイレクトバッファーでない場合は、それがベースバッファーとして使用される)。
display-flagが非nil
の場合、それはpop-to-buffer
を呼び出すことにより新しいバッファーを表示することを意味する。norecordが非nil
の場合、それは新しいバッファーをバッファーリストの先頭に置かないことを意味する。
この関数は、buffer(デフォルトはカレントバッファー)のベースバッファーをリターンする。bufferがインダイレクトバッファーでない場合、値はnil
になり、それ以外では値は他のバッファーとなり、このバッファーがインダイレクトバッファーではあり得ない。