Next: , Up: バッファー処理の便利な機能とカスタマイズ   [Contents][Index]


20.7.1 バッファー名を一意にする

同じ名前のファイルを複数のバッファーで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-forwardreverseの重要な違いは、2つのファイルを区別するのに1つのディレクトリ名では不足するときです。reverseはディレクトリー名を逆順にして命名するので、ファイル/top/middle/fileは‘file\middle\top’となります。一方post-forwardはディレクトリー名を正順でファイル名に追加するので‘file|top/middle’となります。uniquify-buffer-name-stylenilにセットされていると、バッファー名の後ろに単に‘<2>’、‘<3>’と加えることにより、バッファー名を作成します。

uniquify-buffer-name-styleの値にはbaseextra-stringsという2つの引数を受け取るカスタマイズされた関数にセットできます。ここでbaseは文字列、extra-stringsは文字列のリストです。たとえばpost-forward-angle-bracketsにたいする現実装は以下のようになります:

(defun my-post-forward-angle-brackets (base extra-string)
  (concat base \"<\" (mapconcat #'identity extra-string \"/\") \">\"))

タイプする前にバッファー名に注意すれば、バッファー名にディレクトリー名を付加する方法に重要な違いはありません。しかしルールを知った経験豊富なユーザーは、それほど注意する必要はないでしょう。そして、その場合いずれかのルールでバッファー名が表示されていれば,思い出し利用するのが容易になることでしょう。