Emacs Lisp has several interfaces for loading. For example,
autoload
creates a placeholder object for a function defined in a
file; trying to call the autoloading function loads the file to get the
function's real definition (see section Autoload). require
loads a
file if it isn't already loaded (see section Features). Ultimately,
all these facilities call the load
function to do the work.
To find the file, load
first looks for a file named
`filename.elc', that is, for a file whose name is
filename with `.elc' appended. If such a file exists, it is
loaded. If there is no file by that name, then load
looks for a
file named `filename.el'. If that file exists, it is loaded.
Finally, if neither of those names is found, load
looks for a
file named filename with nothing appended, and loads it if it
exists. (The load
function is not clever about looking at
filename. In the perverse case of a file named `foo.el.el',
evaluation of (load "foo.el")
will indeed find it.)
If the optional argument nosuffix is non-nil
, then the
suffixes `.elc' and `.el' are not tried. In this case, you
must specify the precise file name you want. By specifying the precise
file name and using t
for nosuffix, you can prevent
perverse file names such as `foo.el.el' from being tried.
If the optional argument must-suffix is non-nil
, then
load
insists that the file name used must end in either
`.el' or `.elc', unless it contains an explicit directory
name. If filename does not contain an explicit directory name,
and does not end in a suffix, then load
insists on adding one.
If filename is a relative file name, such as `foo' or
`baz/foo.bar', load
searches for the file using the variable
load-path
. It appends filename to each of the directories
listed in load-path
, and loads the first file it finds whose name
matches. The current default directory is tried only if it is specified
in load-path
, where nil
stands for the default directory.
load
tries all three possible suffixes in the first directory in
load-path
, then all three suffixes in the second directory, and
so on. See section Library Search.
If you get a warning that `foo.elc' is older than `foo.el', it means you should consider recompiling `foo.el'. See section Byte Compilation.
When loading a source file (not compiled), load
performs
character set translation just as Emacs would do when visiting the file.
See section Coding Systems.
Messages like `Loading foo...' and `Loading foo...done' appear
in the echo area during loading unless nomessage is
non-nil
.
Any unhandled errors while loading a file terminate loading. If the
load was done for the sake of autoload
, any function definitions
made during the loading are undone.
If load
can't find the file to load, then normally it signals the
error file-error
(with `Cannot open load file
filename'). But if missing-ok is non-nil
, then
load
just returns nil
.
You can use the variable load-read-function
to specify a function
for load
to use instead of read
for reading expressions.
See below.
load
returns t
if the file loads successfully.
load-path
is not used, and suffixes are not appended. Use this
command if you wish to specify precisely the file name to load.
load
, except in how it reads its argument interactively.
nil
if Emacs is in the process of loading a
file, and it is nil
otherwise.
load
and eval-region
to use instead of read
.
The function should accept one argument, just as read
does.
Normally, the variable's value is nil
, which means those
functions should use read
.
Note: Instead of using this variable, it is cleaner to use
another, newer feature: to pass the function as the read-function
argument to eval-region
. See section Eval.
For information about how load
is used in building Emacs, see
section Building Emacs.
Go to the first, previous, next, last section, table of contents.