Next: Buffer Convenience, Previous: Several Buffers, Up: Buffers [Contents][Index]
インダイレクトバッファー(indirect buffer: 間接バッファー)は、そのインダイレクトバッファーのベースバッファー(base buffer: 基底バッファー)と呼ばれる、他のバッファーのテキストを共有します。ある点においては、ファイルに置けるシンボリックリンクの、バッファー版に例えることができます。
ベースバッファーbase-bufferの、インダイレクトバッファーindirect-nameを作成します。
カレントバッファーの、インダイレクトバッファーを作成します。
カレントバッファーのインダイレクトバッファーを作成して、それを別のウィンドウで選択します(clone-indirect-buffer-other-window
)。
インダイレクトバッファーのテキストは、常にベースバッファーのテキストと等しく、どちらかを編集すると、その変更はすぐにもう一方から見えるようになります。しかし他の観点では、インダイレクトバッファーとベースバッファーは、完全に分離されています。これらのバッファーは異なる名前、異なるポイント値、異なるナローイング、異なるマーカー、異なるメジャーモード、異なるローカル変数をもつことができます。
インダイレクトバッファーはファイルをvisitできませんが、ベースバッファーはvisitできます。インダイレクトバッファーの保存を試みると、それは実際にはベースバッファーの保存として機能します。ベースバッファーをkillするとインダイレクトバッファーもkillされますが、インダイレクトバッファーのkillは、ベースバッファーに影響を与えません。
インダイレクトバッファーの1つの使い方としては、アウトラインの複数の視点からの表示です。Outline Viewsを参照してください。
手早くインダイレクトバッファーを作成するには、コマンドM-x
clone-indirect-bufferを使う方法があります。これはカレントバッファーをベースバッファーとする、インダイレクトバッファーを作成して選択します。数引数を指定すると、インダイレクトバッファーの名前の入力を求めます。指定しない場合、カレントバッファー名の後ろに‘<n>’を付加した名前を使います。C-x
4 c (clone-indirect-buffer-other-window
)は、M-x
clone-indirect-bufferと同様に機能しますが、新しいバッファーを他のウィンドウで選択します。これらの関数はインダイレクトバッファーを作成した後、フックclone-indirect-buffer-hook
を実行します。
インダイレクトバッファーを作成する、より一般的な方法はコマンドM-x make-indirect-bufferです。これはバッファーbase-bufferから、名前がindirect-nameのインダイレクトバッファーを作成します。これらの名前は、ミニバッファーを使って入力が求められます。