Next: Markers and Extents, Previous: The Text in a Buffer, Up: Buffers and Textual Representation [Contents][Index]
Recall earlier that buffers are permanent objects, i.e. that
they remain around until explicitly deleted. This entails that there is
a list of all the buffers in existence. This list is actually an
assoc-list (mapping from the buffer’s name to the buffer) and is stored
in the global variable Vbuffer_alist
.
The order of the buffers in the list is important: the buffers are
ordered approximately from most-recently-used to least-recently-used.
Switching to a buffer using switch-to-buffer
,
pop-to-buffer
, etc. and switching windows using
other-window
, etc. usually brings the new current buffer to the
front of the list. switch-to-buffer
, other-buffer
,
etc. look at the beginning of the list to find an alternative buffer to
suggest. You can also explicitly move a buffer to the end of the list
using bury-buffer
.
In addition to the global ordering in Vbuffer_alist
, each frame
has its own ordering of the list. These lists always contain the same
elements as in Vbuffer_alist
although possibly in a different
order. buffer-list
normally returns the list for the selected
frame. This allows you to work in separate frames without things
interfering with each other.
The standard way to look up a buffer given a name is
get-buffer
, and the standard way to create a new buffer is
get-buffer-create
, which looks up a buffer with a given name,
creating a new one if necessary. These operations correspond exactly
with the symbol operations intern-soft
and intern
,
respectively. You can also force a new buffer to be created using
generate-new-buffer
, which takes a name and (if necessary) makes
a unique name from this by appending a number, and then creates the
buffer. This is basically like the symbol operation gensym
.
Next: Markers and Extents, Previous: The Text in a Buffer, Up: Buffers and Textual Representation [Contents][Index]