Next: Library Search, Up: Loading
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 Autoload). require
loads a
file if it isn't already loaded (see Named Features). Ultimately,
all these facilities call the load
function to do the work.
This function finds and opens a file of Lisp code, evaluates all the forms in it, and closes the file.
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, thenload
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. (Theload
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 usingt
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
, thenload
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, thenload
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 variableload-path
. It appends filename to each of the directories listed inload-path
, and loads the first file it finds whose name matches. The current default directory is tried only if it is specified inload-path
, wherenil
stands for the default directory.load
tries all three possible suffixes in the first directory inload-path
, then all three suffixes in the second directory, and so on. See Library Search.If you get a warning that foo.elc is older than foo.el, it means you should consider recompiling foo.el. See Byte Compilation.
When loading a source file (not compiled),
load
performs character set translation just as Emacs would do when visiting the file. See 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 errorfile-error
(with ‘Cannot open load file filename’). But if missing-ok is non-nil
, thenload
just returnsnil
.You can use the variable
load-read-function
to specify a function forload
to use instead ofread
for reading expressions. See below.
load
returnst
if the file loads successfully.
This command loads the file filename. If filename is a relative file name, then the current default directory is assumed.
load-path
is not used, and suffixes are not appended. Use this command if you wish to specify precisely the file name to load.
This command loads the library named library. It is equivalent to
load
, except in how it reads its argument interactively.
This variable is non-
nil
if Emacs is in the process of loading a file, and it isnil
otherwise.
This variable specifies an alternate expression-reading function for
load
andeval-region
to use instead ofread
. The function should accept one argument, just asread
does.Normally, the variable's value is
nil
, which means those functions should useread
.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 Eval.
For information about how load
is used in building Emacs, see
Building Emacs.