Next: Indirect Buffers, Previous: Creating Buffers, Up: Buffers [Contents][Index]
Killing a buffer makes its name unknown to SXEmacs and makes its text space available for other use.
The buffer object for the buffer that has been killed remains in
existence as long as anything refers to it, but it is specially marked
so that you cannot make it current or display it. Killed buffers retain
their identity, however; two distinct buffers, when killed, remain
distinct according to eq
.
If you kill a buffer that is current or displayed in a window, SXEmacs automatically selects or displays some other buffer instead. This means that killing a buffer can in general change the current buffer. Therefore, when you kill a buffer, you should also take the precautions associated with changing the current buffer (unless you happen to know that the buffer being killed isn’t current). See Current Buffer.
If you kill a buffer that is the base buffer of one or more indirect buffers, the indirect buffers are automatically killed as well.
The buffer-name
of a killed buffer is nil
. To test
whether a buffer has been killed, you can either use this feature
or the function buffer-live-p
.
This function returns t
if object is an editor buffer that
has not been deleted, nil
otherwise.
This function kills the buffer buffer-or-name, freeing all its memory for use as space for other buffers.
It returns nil
. The argument buffer-or-name may be a
buffer or the name of one.
Note: Emacs version 18 and older was unable to return the memory to the operating system.
Any processes that have this buffer as the process-buffer
are
sent the SIGHUP
signal, which normally causes them to terminate.
(The basic meaning of SIGHUP
is that a dialup line has been
disconnected.) See Deleting Processes.
If the buffer is visiting a file and contains unsaved changes,
kill-buffer
asks the user to confirm before the buffer is killed.
It does this even if not called interactively. To prevent the request
for confirmation, clear the modified flag before calling
kill-buffer
. See Buffer Modification.
Killing a buffer that is already dead has no effect.
(kill-buffer "foo.unchanged") ⇒ nil (kill-buffer "foo.changed") ---------- Buffer: Minibuffer ---------- Buffer foo.changed modified; kill anyway? (yes or no) yes ---------- Buffer: Minibuffer ---------- ⇒ nil
After confirming unsaved changes, kill-buffer
calls the functions
in the list kill-buffer-query-functions
, in order of appearance,
with no arguments. The buffer being killed is the current buffer when
they are called. The idea is that these functions ask for confirmation
from the user for various nonstandard reasons. If any of them returns
nil
, kill-buffer
spares the buffer’s life.
This is a normal hook run by kill-buffer
after asking all the
questions it is going to ask, just before actually killing the buffer.
The buffer to be killed is current when the hook functions run.
See Hooks.
This variable, if non-nil
in a particular buffer, tells
save-buffers-kill-emacs
and save-some-buffers
to offer to
save that buffer, just as they offer to save file-visiting buffers. The
variable buffer-offer-save
automatically becomes buffer-local
when set for any reason. See Buffer-Local Variables.
Next: Indirect Buffers, Previous: Creating Buffers, Up: Buffers [Contents][Index]