GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/emacs/Uniquify.html ・ emacs-doc.conao3.com

21.7.1 バッファ名を一意にする

複数のバッファが同一名称のファイルを参照する場合、Emacsは各バッファに異なる名称を付与する必要があります。デフォルトの手法では、ファイルが格納されているディレクトリ名に基づいた接尾辞が付加されます。例えば、ファイル /foo/bar/mumble/name と /baz/quux/mumble/name を同時に参照した場合、それぞれのバッファ名は ‘name<bar/mumble>’ および ‘name<quux/mumble>’ となります。Emacsは、一意の名称にするために必要な数だけディレクトリ名の部分を付加します。

オプション uniquify-buffer-name-style をカスタマイズすることで、一意のバッファ名を生成するためのさまざまなスタイルから選択できます。

forward という命名方式では、バッファ名の先頭にファイルのディレクトリ名の一部が含まれます。この方式を用いると、ファイル /u/rms/tmp/Makefile と /usr/projects/zaphod/Makefile を参照するバッファは、それぞれ ‘tmp/Makefile’ および ‘zaphod/Makefile’ と名付けられます。

これに対し、post-forward という命名方式では、バッファを ‘Makefile|tmp’ および ‘Makefile|zaphod’ と呼びます。デフォルト方式の post-forward-angle-brackets は post-forward と同様ですが、一意のパスを山括弧で囲む点が異なります。reverse という命名方式では、これらを ‘Makefile\tmp’ および ‘Makefile\zaphod’ と呼びます。post-forward と reverse の本質的な違いは、ディレクトリ名1つだけでは2つのファイルを区別できない場合に生じます。このとき、reverse はディレクトリ名を逆順に並べるため、/top/middle/file は ‘file\middle\top’ となります。一方、post-forward はファイル名の後に順に並べるため、‘file|top/middle’ のようになります。もし uniquify-buffer-name-style が nil に設定されている場合、バッファ名には単に ‘<2>’、‘<3>’ などが付加されます。

uniquify-buffer-name-style の値には、2つの引数 base と extra-strings を持つカスタム関数を指定できます。ここで base は文字列、extra-strings は文字列のリストです。例えば、post-forward-angle-brackets の現在の実装は以下のようになります。

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

バッファ名を入力する前にその名前を確認するのであれば、バッファ名をバッファ名に格納する際のルールをどれにすべきかは、それほど重要ではありません。しかし、経験豊富なユーザーであれば、そのルールを知っていれば確認する必要はありません。そして、あるルールの方が覚えやすく、素早く適用できることに気づくかもしれません。