Load the file file of Lisp code.
Load the library named library.
Show the full path name of Emacs library library.
To execute a file of Emacs Lisp, use M-x load-file. This command reads the file name you provide in the minibuffer, then executes the contents of that file as Lisp code. It is not necessary to visit the file first; in fact, this command reads the file as found on disk, not the text in an Emacs buffer.
Once a file of Lisp code is installed in the Emacs Lisp library
directories, users can load it using M-x load-library. Programs can
load it by calling
load-library, or with
load, a more primitive
function that is similar but accepts some additional arguments.
M-x load-library differs from M-x load-file in that it searches a sequence of directories and tries three file names in each directory. The three names are: first, the specified name with .elc appended; second, the name with .el appended; third, the specified name alone. A .elc file would be the result of compiling the Lisp file into byte code; if possible, it is loaded in preference to the Lisp file itself because the compiled file loads and runs faster.
Because the argument to
load-library is usually not in itself
a valid file name, file name completion is not available. In fact, when
using this command, you usually do not know exactly what file name
will be used.
The sequence of directories searched by M-x load-library is
specified by the variable
load-path, a list of strings that are
directory names. The elements of this list may not begin with "‘~’",
so you must call
expand-file-name on them before adding them to
the list. The default value of the list contains the directory where
the Lisp code for Emacs itself is stored. If you have libraries of your
own, put them in a single directory and add that directory to
nil in this list stands for the current
default directory, but it is probably not a good idea to put
in the list. If you start wishing that
nil were in the list, you
should probably use M-x load-file for this case.
The variable is initialized by the EMACSLOADPATH environment variable. If no value is specified, the variable takes the default value specified in the file paths.h when Emacs was built. If a path isn’t specified in paths.h, a default value is obtained from the file system, near the directory in which the Emacs executable resides.
Like M-x load-library, M-x locate-library searches the
load-path to find the file that M-x load-library
would load. If the optional second argument nosuffix is
nil, the suffixes .elc or .el are not added to
the specified name library (like calling
load instead of
You often do not have to give any command to load a library, because the
commands defined in the library are set up to autoload that library.
Running any of those commands causes
load to be called to load the
library; this replaces the autoload definitions with the real ones from the
If autoloading a file does not finish, either because of an error or
because of a C-g quit, all function definitions made by the file
are undone automatically. So are any calls to
provide. As a
consequence, the entire file is loaded a second time if you use one of
the autoloadable commands again. This prevents problems when the
command is no longer autoloading but is working incorrectly because the file
was only partially loaded. Function definitions are undone only for
autoloading; explicit calls to
load do not undo anything if
loading is not completed.
after-load-alist takes an alist of expressions to be
evaluated when particular files are loaded. Each element has the form
(filename forms...). When
load is run and the filename
argument is filename, the forms in the corresponding element are
executed at the end of loading.
filename must match exactly. Normally filename is the
name of a library, with no directory specified, since that is how load
is normally called. An error in
forms does not undo the load, but
it does prevent execution of the rest of the