You can discard the functions and variables loaded by a library to
reclaim memory for other Lisp objects. To do this, use the function
This command unloads the library that provided feature feature.
It undefines all functions, macros, and variables defined in that
It then restores any autoloads formerly associated with those symbols.
(Loading saves these in the
function-history property of the symbol.)
Before restoring the previous definitions,
remove-hook to remove functions defined by the library from certain
hooks. These hooks include variables whose names end in ‘-hook’
(or the deprecated suffix ‘-hooks’), plus those listed in
unload-feature-special-hooks, as well as
auto-mode-alist. This is to prevent Emacs from ceasing to
function because important hooks refer to functions that are no longer
Standard unloading activities also undo ELP profiling of functions in that library, unprovides any features provided by the library, and cancels timers held in variables defined by the library.
If these measures are not sufficient to prevent malfunction, a library
can define an explicit unloader named
If that symbol is defined as a function,
it with no arguments before doing anything else. It can do whatever
is appropriate to unload the library. If it returns
unload-feature proceeds to take the normal unload actions.
Otherwise it considers the job to be done.
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.
unload-feature function is written in Lisp; its actions are
based on the variable
This variable holds a list of hooks to be scanned before unloading a library, to remove functions defined in the library.