Next: Fast minibuffer selection, Up: Convenience Features and Customization of Buffer Handling [Contents][Index]
When several buffers visit identically-named files, Emacs must give the buffers distinct names. The default method adds a suffix based on the names of the directories that contain the files. For example, if you visit files /foo/bar/mumble/name and /baz/quux/mumble/name at the same time, their buffers will be named ‘name<bar/mumble>’ and ‘name<quux/mumble>’, respectively. Emacs adds as many directory parts as are needed to make a unique name.
You can choose from several different styles for constructing unique
buffer names, by customizing the option
forward naming method includes part of the file’s
directory name at the beginning of the buffer name; using this method,
buffers visiting the files /u/rms/tmp/Makefile and
/usr/projects/zaphod/Makefile would be named
‘tmp/Makefile’ and ‘zaphod/Makefile’.
In contrast, the
post-forward naming method would call the
buffers ‘Makefile|tmp’ and ‘Makefile|zaphod’. The default
post-forward-angle-brackets is like
except that it encloses the unique path in angle brackets. The
reverse naming method would call them ‘Makefile\tmp’ and
‘Makefile\zaphod’. The nontrivial difference between
reverse occurs when just one directory
name is not enough to distinguish two files; then
the directory names in reverse order, so that /top/middle/file
becomes ‘file\middle\top’, while
post-forward puts them in
forward order after the file name, as in ‘file|top/middle’. If
uniquify-buffer-name-style is set to
nil, the buffer
names simply get ‘<2>’, ‘<3>’, etc. appended.
The value of
uniquify-buffer-name-style can be set to a
customized function with two arguments base and
extra-strings where base is a string and
extra-strings is a list of strings. For example the current
post-forward-angle-brackets could be:
(defun my-post-forward-angle-brackets (base extra-string) (concat base \"<\" (mapconcat #'identity extra-string \"/\") \">\"))
Which rule to follow for putting the directory names in the buffer name is not very important if you are going to look at the buffer names before you type one. But as an experienced user, if you know the rule, you won’t have to look. And then you may find that one rule or another is easier for you to remember and apply quickly.