In this section we describe convenient functions that choose a window
automatically and use it to display a specified buffer. These functions
can also split an existing window in certain circumstances. We also
describe variables that parameterize the heuristics used for choosing a
window.
See the preceding section for
low-level functions that give you more precise control. All of these
functions work by calling set-window-buffer
.
Do not use the functions in this section in order to make a buffer
current so that a Lisp program can access or modify it; they are too
drastic for that purpose, since they change the display of buffers in
windows, which would be gratuitous and surprise the user. Instead, use
set-buffer
and save-current-buffer
(see section The Current Buffer), which designate buffers as current for programmed access
without affecting the display of buffers in windows.
set-buffer
, which makes buffer-or-name
the current buffer but does not display it in the selected window.
See section The Current Buffer.
If buffer-or-name does not identify an existing buffer, then a new
buffer by that name is created. The major mode for the new buffer is
set according to the variable default-major-mode
. See section How Emacs Chooses a Major Mode.
Normally the specified buffer is put at the front of the buffer list
(both the selected frame's buffer list and the frame-independent buffer
list). This affects the operation of other-buffer
. However, if
norecord is non-nil
, this is not done. See section The Buffer List.
The switch-to-buffer
function is often used interactively, as
the binding of C-x b. It is also used frequently in programs. It
always returns nil
.
switch-to-buffer
.
The currently selected window is absolutely never used to do the job. If it is the only window, then it is split to make a distinct window for this purpose. If the selected window is already displaying the buffer, then it continues to do so, but another window is nonetheless found to display it in as well.
This function updates the buffer list just like switch-to-buffer
unless norecord is non-nil
.
If the variable pop-up-frames
is non-nil
,
pop-to-buffer
looks for a window in any visible frame already
displaying the buffer; if there is one, it returns that window and makes
it be selected within its frame. If there is none, it creates a new
frame and displays the buffer in it.
If pop-up-frames
is nil
, then pop-to-buffer
operates entirely within the selected frame. (If the selected frame has
just a minibuffer, pop-to-buffer
operates within the most
recently selected frame that was not just a minibuffer.)
If the variable pop-up-windows
is non-nil
, windows may
be split to create a new window that is different from the original
window. For details, see section Choosing a Window for Display.
If other-window is non-nil
, pop-to-buffer
finds or
creates another window even if buffer-or-name is already visible
in the selected window. Thus buffer-or-name could end up
displayed in two windows. On the other hand, if buffer-or-name is
already displayed in the selected window and other-window is
nil
, then the selected window is considered sufficient display
for buffer-or-name, so that nothing needs to be done.
All the variables that affect display-buffer
affect
pop-to-buffer
as well. See section Choosing a Window for Display.
If buffer-or-name is a string that does not name an existing
buffer, a buffer by that name is created. The major mode for the new
buffer is set according to the variable default-major-mode
.
See section How Emacs Chooses a Major Mode.
This function updates the buffer list just like switch-to-buffer
unless norecord is non-nil
.
other-buffer
. In the usual applications of this function, you
don't care which other buffer is used; you just want to make sure that
buffer is no longer displayed.
This function returns nil
.
Go to the first, previous, next, last section, table of contents.