You can discard the functions and variables loaded by a library to
reclaim memory for other Lisp objects. To do this, use the function
unload-feature
:
defun
, defalias
, defsubst
,
defmacro
, defconst
, defvar
, and defcustom
.
It then restores any autoloads formerly associated with those symbols.
(Loading saves these in the autoload
property of the symbol.)
Before restoring the previous definitions, unload-feature
runs
remove-hook
to remove functions in the library from certain
hooks. These hooks include variables whose names end in `hook' or
`-hooks', plus those listed in loadhist-special-hooks
. This
is to prevent Emacs from ceasing to function because important hooks
refer to functions that are no longer defined.
If these measures are not sufficient to prevent malfunction, a library
can define an explicit unload hook. If feature-unload-hook
is defined, it is run as a normal hook before restoring the previous
definitions, instead of the usual hook-removing actions. The
unload hook ought to undo all the global state changes made by the
library that might cease to work once the library is unloaded.
Ordinarily, unload-feature
refuses to unload a library on which
other loaded libraries depend. (A library a depends on library
b if a contains a require
for b.) If the
optional argument force is non-nil
, dependencies are
ignored and you can unload any library.
The unload-feature
function is written in Lisp; its actions are
based on the variable load-history
.
Each element is a list and describes one library. The CAR of the list is the name of the library, as a string. The rest of the list is composed of these kinds of objects:
(require . feature)
indicating
features that were required.
(provide . feature)
indicating
features that were provided.
The value of load-history
may have one element whose CAR is
nil
. This element describes definitions made with
eval-buffer
on a buffer that is not visiting a file.
The command eval-region
updates load-history
, but does so
by adding the symbols defined to the element for the file being visited,
rather than replacing that element. See section Eval.
Preloaded libraries don't contribute to load-history
.
Go to the first, previous, next, last section, table of contents.