前: Killing Buffers, 上: Buffers


26.11 間接バッファ

間接バッファ(indirect buffer)は、 間接バッファの基底バッファ(base buffer)と呼ばれる 他のバッファのテキストを共有します。 ある意味で、バッファにおいて ファイルのシンボリックリンクに相当するものです。 基底バッファそのものは間接バッファであってはなりません。

間接バッファのテキストは、その基底バッファのテキストとつねに同一です。 どれかを編集して変更すると、別のものでただちに見えます。 これには、文字そのものに加えてテキスト属性も含みます。

しかし、それ以外に関しては、間接バッファと その基底バッファは完全に別のものです。 別の名前を持ち、ポイントの値も別であり、異なったナロイングをでき、 (いずれかのバッファでテキストを挿入したり削除すると マーカと重ね合わせは再配置されるが)マーカやオーバレイも異なり、 異なるメジャーモードを持ち、バッファローカルな変数も異なります。

間接バッファはファイルを訪問できませんが、その基底バッファでは訪問できます。 間接バッファを保存しようとすると、実際にはその基底バッファを保存します。

間接バッファを削除しても、その基底バッファには影響ありません。 基底バッファを削除すると、その間接バッファを実質的には削除することになり、 間接バッファをカレントバッファにはけっしてできなくなります。

— コマンド: make-indirect-buffer base-buffer name

base-bufferを基底バッファとするnameという名前の 間接バッファを作成する。 引数base-bufferは、バッファか文字列である。

base-bufferが間接バッファであると、 その基底バッファを新たなバッファの基底バッファとして用いる。

— 機能: buffer-base-buffer buffer

この関数はbufferの基底バッファを返す。 bufferが間接バッファでなければ、値はnilである。 さもなければ、値は間接バッファではない別のバッファである。