同じ名前のファイルを複数のバッファーでvisitしているとき、Emacsはバッファーに区別可能な名前をつけなければなりません。デフォルトの方法はファイルをディレクトリーの一部を後ろに追加する方法です。たとえば同時にファイル/foo/bar/mumble/nameと/baz/quux/mumble/nameをvisitしている場合、バッファーの名前は‘name<bar/mumble>’と‘name<quux/mumble>’になるでしょう。Emacsは名前を一意にするために必要な分だけ、ディレクトリー名の一部を追加します。
オプションuniquify-buffer-name-style
をカスタマイズして、一意なバッファー名を構築するための異なるスタイルを選択することができます。
命名方法forward
は、バッファー名の先頭部分に、ファイルのディレクトリー名の一部を含めます。この方法を使うとファイル/u/rms/tmp/Makefileと/usr/projects/zaphod/Makefileをvisitしているバッファーの名前は、‘tmp/Makefile’と‘zaphod/Makefile’になるでしょう。
対照的に命名方法post-forward
は、バッファーを‘Makefile|tmp’および‘Makefile|zaphod’と名づけます。デフォルトのpost-forward-angle-brackets
は、post-forward
と同様ですが、一意なパスを山形カッコ(angle
brackets)で囲います。命名方法reverse
では、‘Makefile\tmp’および‘Makefile\zaphod’となります。post-forward
とreverse
の重要な違いは、2つのファイルを区別するのに1つのディレクトリ名では不足するときです。reverse
はディレクトリー名を逆順にして命名するので、ファイル/top/middle/fileは‘file\middle\top’となります。一方post-forward
はディレクトリー名を正順でファイル名に追加するので‘file|top/middle’となります。uniquify-buffer-name-style
がnil
にセットされていると、バッファー名の後ろに単に‘<2>’、‘<3>’と加えることにより、バッファー名を作成します。
uniquify-buffer-name-style
の値にはbaseとextra-stringsという2つの引数を受け取るカスタマイズされた関数にセットできます。ここでbaseは文字列、extra-stringsは文字列のリストです。たとえばpost-forward-angle-brackets
にたいする現実装は以下のようになります:
(defun my-post-forward-angle-brackets (base extra-string) (concat base \"<\" (mapconcat #'identity extra-string \"/\") \">\"))
タイプする前にバッファー名に注意すれば、バッファー名にディレクトリー名を付加する方法に重要な違いはありません。しかしルールを知った経験豊富なユーザーは、それほど注意する必要はないでしょう。そして、その場合いずれかのルールでバッファー名が表示されていれば,思い出し利用するのが容易になることでしょう。