Next: , Previous: , Up: Buffers   [Contents][Index]


19.6 インダイレクトバッファー

インダイレクトバッファー(indirect buffer: 間接バッファー)は、そのインダイレクトバッファーのベースバッファー(base buffer: 基底バッファー)と呼ばれる、他のバッファーのテキストを共有します。ある点においては、ファイルに置けるシンボリックリンクの、バッファー版に例えることができます。

M-x make-indirect-buffer RET base-buffer RET indirect-name RET

ベースバッファーbase-bufferの、インダイレクトバッファーindirect-nameを作成します。

M-x clone-indirect-buffer RET

カレントバッファーの、インダイレクトバッファーを作成します。

C-x 4 c

カレントバッファーのインダイレクトバッファーを作成して、それを別のウィンドウで選択します(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のインダイレクトバッファーを作成します。これらの名前は、ミニバッファーを使って入力が求められます。