Each buffer has a unique name, which is a string. Many of the functions that work on buffers accept either a buffer or a buffer name as an argument. Any argument called
buffer-or-name is of this sort, and an error is signaled if it is neither a string nor a buffer. Any argument called
buffer must be an actual buffer object, not a name.
Buffers that are ephemeral and generally uninteresting to the user have names starting with a space, so that the
buffer-menu commands don’t mention them (but if such a buffer visits a file, it is mentioned). A name starting with space also initially disables recording undo information; see Undo.
function buffer-name \&optional buffer
This function returns the name of
buffer as a string.
buffer defaults to the current buffer.
nil, it means that
buffer has been killed. See Killing Buffers.
(setq foo (get-buffer "temp"))
⇒ #<buffer temp>
⇒ #<killed buffer>
command rename-buffer newname \&optional unique
This function renames the current buffer to
newname. An error is signaled if
newname is not a string.
rename-buffer signals an error if
newname is already in use. However, if
unique is non-
nil, it modifies
newname to make a name that is not in use. Interactively, you can make
nil with a numeric prefix argument. (This is how the command
rename-uniquely is implemented.)
This function returns the name actually given to the buffer.
function get-buffer buffer-or-name
This function returns the buffer specified by
buffer-or-name is a string and there is no buffer with that name, the value is
buffer-or-name is a buffer, it is returned as given; that is not very useful, so the argument is usually a name. For example:
(setq b (get-buffer "lewis"))
⇒ #<buffer lewis>
⇒ #<buffer lewis>
See also the function
get-buffer-create in Creating Buffers.
function generate-new-buffer-name starting-name \&optional ignore
This function returns a name that would be unique for a new buffer—but does not create the buffer. It starts with
starting-name, and produces a name not currently in use for any buffer by appending a number inside of ‘
<…>’. It starts at 2 and keeps incrementing the number until it is not the name of an existing buffer.
If the optional second argument
ignore is non-
nil, it should be a string, a potential buffer name. It means to consider that potential buffer acceptable, if it is tried, even it is the name of an existing buffer (which would normally be rejected). Thus, if buffers named ‘
foo<3>’ and ‘
(generate-new-buffer-name "foo" "foo<3>")
(generate-new-buffer-name "foo" "foo<6>")
See the related function
generate-new-buffer in Creating Buffers.