(calendar-mode-map, calendar-mouse-3-map): Refer to
[bpt/emacs.git] / lispref / loading.texi
CommitLineData
83ac6b45
RS
1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual.
651f374c 3@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2003,
ceb4c4d3 4@c 2004, 2005, 2006 Free Software Foundation, Inc.
83ac6b45
RS
5@c See the file elisp.texi for copying conditions.
6@setfilename ../info/loading
f9f59935 7@node Loading, Byte Compilation, Customization, Top
83ac6b45
RS
8@chapter Loading
9@cindex loading
10@cindex library
11@cindex Lisp library
12
13 Loading a file of Lisp code means bringing its contents into the Lisp
14environment in the form of Lisp objects. Emacs finds and opens the
15file, reads the text, evaluates each form, and then closes the file.
16
17 The load functions evaluate all the expressions in a file just
18as the @code{eval-current-buffer} function evaluates all the
19expressions in a buffer. The difference is that the load functions
20read and evaluate the text in the file as found on disk, not the text
21in an Emacs buffer.
22
23@cindex top-level form
24 The loaded file must contain Lisp expressions, either as source code
78c71a98
RS
25or as byte-compiled code. Each form in the file is called a
26@dfn{top-level form}. There is no special format for the forms in a
83ac6b45
RS
27loadable file; any form in a file may equally well be typed directly
28into a buffer and evaluated there. (Indeed, most code is tested this
29way.) Most often, the forms are function definitions and variable
30definitions.
31
32 A file containing Lisp code is often called a @dfn{library}. Thus,
33the ``Rmail library'' is a file containing code for Rmail mode.
34Similarly, a ``Lisp library directory'' is a directory of files
35containing Lisp code.
36
37@menu
ccd35a78 38* How Programs Do Loading:: The @code{load} function and others.
fcaedd23 39* Load Suffixes:: Details about the suffixes that @code{load} tries.
ccd35a78
RS
40* Library Search:: Finding a library to load.
41* Loading Non-ASCII:: Non-@acronym{ASCII} characters in Emacs Lisp files.
42* Autoload:: Setting up a function to autoload.
43* Repeated Loading:: Precautions about loading a file twice.
44* Named Features:: Loading a library if it isn't already loaded.
45* Where Defined:: Finding which file defined a certain symbol.
e20da7ee 46* Unloading:: How to ``unload'' a library that was loaded.
ccd35a78
RS
47* Hooks for Loading:: Providing code to be run when
48 particular libraries are loaded.
83ac6b45
RS
49@end menu
50
51@node How Programs Do Loading
52@section How Programs Do Loading
53
54 Emacs Lisp has several interfaces for loading. For example,
f9f59935
RS
55@code{autoload} creates a placeholder object for a function defined in a
56file; trying to call the autoloading function loads the file to get the
83ac6b45 57function's real definition (@pxref{Autoload}). @code{require} loads a
f9f59935
RS
58file if it isn't already loaded (@pxref{Named Features}). Ultimately,
59all these facilities call the @code{load} function to do the work.
83ac6b45 60
a9f0a989 61@defun load filename &optional missing-ok nomessage nosuffix must-suffix
83ac6b45
RS
62This function finds and opens a file of Lisp code, evaluates all the
63forms in it, and closes the file.
64
65To find the file, @code{load} first looks for a file named
66@file{@var{filename}.elc}, that is, for a file whose name is
67@var{filename} with @samp{.elc} appended. If such a file exists, it is
68loaded. If there is no file by that name, then @code{load} looks for a
78c71a98 69file named @file{@var{filename}.el}. If that file exists, it is loaded.
83ac6b45
RS
70Finally, if neither of those names is found, @code{load} looks for a
71file named @var{filename} with nothing appended, and loads it if it
72exists. (The @code{load} function is not clever about looking at
73@var{filename}. In the perverse case of a file named @file{foo.el.el},
74evaluation of @code{(load "foo.el")} will indeed find it.)
75
fcaedd23
LT
76If Auto Compression mode is enabled, as it is by default, then
77if @code{load} can not find a file, it searches for a compressed
78version of the file before trying other file names. It decompresses
79and loads it if it exists. It looks for compressed versions by
80appending the suffixes in @code{jka-compr-load-suffixes} to the file
81name. The value of this variable must be a list of strings. Its
82standard value is @code{(".gz")}.
83
84If the optional argument @var{nosuffix} is non-@code{nil}, then
85@code{load} does not try the suffixes @samp{.elc} and @samp{.el}. In
86this case, you must specify the precise file name you want, except
87that, if Auto Compression mode is enabled, @code{load} will still use
88@code{jka-compr-load-suffixes} to find compressed versions. By
89specifying the precise file name and using @code{t} for
90@var{nosuffix}, you can prevent perverse file names such as
91@file{foo.el.el} from being tried.
83ac6b45 92
a9f0a989
RS
93If the optional argument @var{must-suffix} is non-@code{nil}, then
94@code{load} insists that the file name used must end in either
fcaedd23
LT
95@samp{.el} or @samp{.elc} (possibly extended with a compression
96suffix), unless it contains an explicit directory name.
a9f0a989 97
83ac6b45
RS
98If @var{filename} is a relative file name, such as @file{foo} or
99@file{baz/foo.bar}, @code{load} searches for the file using the variable
100@code{load-path}. It appends @var{filename} to each of the directories
101listed in @code{load-path}, and loads the first file it finds whose name
102matches. The current default directory is tried only if it is specified
103in @code{load-path}, where @code{nil} stands for the default directory.
104@code{load} tries all three possible suffixes in the first directory in
105@code{load-path}, then all three suffixes in the second directory, and
a9f0a989 106so on. @xref{Library Search}.
83ac6b45
RS
107
108If you get a warning that @file{foo.elc} is older than @file{foo.el}, it
109means you should consider recompiling @file{foo.el}. @xref{Byte
110Compilation}.
111
969fe9b5
RS
112When loading a source file (not compiled), @code{load} performs
113character set translation just as Emacs would do when visiting the file.
114@xref{Coding Systems}.
115
83ac6b45
RS
116Messages like @samp{Loading foo...} and @samp{Loading foo...done} appear
117in the echo area during loading unless @var{nomessage} is
118non-@code{nil}.
119
120@cindex load errors
121Any unhandled errors while loading a file terminate loading. If the
78c71a98
RS
122load was done for the sake of @code{autoload}, any function definitions
123made during the loading are undone.
83ac6b45
RS
124
125@kindex file-error
126If @code{load} can't find the file to load, then normally it signals the
127error @code{file-error} (with @samp{Cannot open load file
128@var{filename}}). But if @var{missing-ok} is non-@code{nil}, then
129@code{load} just returns @code{nil}.
130
22697dac
KH
131You can use the variable @code{load-read-function} to specify a function
132for @code{load} to use instead of @code{read} for reading expressions.
133See below.
134
83ac6b45
RS
135@code{load} returns @code{t} if the file loads successfully.
136@end defun
137
83ac6b45 138@deffn Command load-file filename
f9f59935
RS
139This command loads the file @var{filename}. If @var{filename} is a
140relative file name, then the current default directory is assumed.
fcaedd23
LT
141This command does not use @code{load-path}, and does not append
142suffixes. However, it does look for compressed versions (if Auto
143Compression Mode is enabled). Use this command if you wish to specify
144precisely the file name to load.
83ac6b45
RS
145@end deffn
146
147@deffn Command load-library library
f9f59935
RS
148This command loads the library named @var{library}. It is equivalent to
149@code{load}, except in how it reads its argument interactively.
83ac6b45 150@end deffn
83ac6b45 151
a9f0a989
RS
152@defvar load-in-progress
153This variable is non-@code{nil} if Emacs is in the process of loading a
154file, and it is @code{nil} otherwise.
155@end defvar
156
157@defvar load-read-function
7baeca0c 158@anchor{Definition of load-read-function}
a9f0a989
RS
159This variable specifies an alternate expression-reading function for
160@code{load} and @code{eval-region} to use instead of @code{read}.
161The function should accept one argument, just as @code{read} does.
162
163Normally, the variable's value is @code{nil}, which means those
164functions should use @code{read}.
55607887 165
6142d1d0
RS
166Instead of using this variable, it is cleaner to use another, newer
167feature: to pass the function as the @var{read-function} argument to
da9f5ab2 168@code{eval-region}. @xref{Definition of eval-region,, Eval}.
a9f0a989
RS
169@end defvar
170
1911e6e5
RS
171 For information about how @code{load} is used in building Emacs, see
172@ref{Building Emacs}.
a9f0a989 173
fcaedd23
LT
174@node Load Suffixes
175@section Load Suffixes
176We now describe some technical details about the exact suffixes that
177@code{load} tries.
178
179@defvar load-suffixes
180This is a list of suffixes indicating (compiled or source) Emacs Lisp
181files. It should not include the empty string. @code{load} uses
182these suffixes in order when it appends Lisp suffixes to the specified
a88c86f7 183file name. The standard value is @code{(".elc" ".el")} which produces
fcaedd23
LT
184the behavior described in the previous section.
185@end defvar
186
187@defvar load-file-rep-suffixes
188This is a list of suffixes that indicate representations of the same
189file. This list should normally start with the empty string.
190When @code{load} searches for a file it appends the suffixes in this
191list, in order, to the file name, before searching for another file.
192
193Enabling Auto Compression mode appends the suffixes in
194@code{jka-compr-load-suffixes} to this list and disabling Auto
195Compression mode removes them again. The standard value of
196@code{load-file-rep-suffixes} if Auto Compression mode is disabled is
197@code{("")}. Given that the standard value of
198@code{jka-compr-load-suffixes} is @code{(".gz")}, the standard value
199of @code{load-file-rep-suffixes} if Auto Compression mode is enabled
200is @code{("" ".gz")}.
201@end defvar
202
203@defun get-load-suffixes
204This function returns the list of all suffixes that @code{load} should
205try, in order, when its @var{must-suffix} argument is non-@code{nil}.
206This takes both @code{load-suffixes} and @code{load-file-rep-suffixes}
207into account. If @code{load-suffixes}, @code{jka-compr-load-suffixes}
208and @code{load-file-rep-suffixes} all have their standard values, this
a88c86f7 209function returns @code{(".elc" ".elc.gz" ".el" ".el.gz")} if Auto
fcaedd23
LT
210Compression mode is enabled and @code{(".elc" ".el")} if Auto
211Compression mode is disabled.
212@end defun
213
0b2c9850
LT
214To summarize, @code{load} normally first tries the suffixes in the
215value of @code{(get-load-suffixes)} and then those in
fcaedd23 216@code{load-file-rep-suffixes}. If @var{nosuffix} is non-@code{nil},
0b2c9850
LT
217it skips the former group, and if @var{must-suffix} is non-@code{nil},
218it skips the latter group.
fcaedd23 219
a9f0a989
RS
220@node Library Search
221@section Library Search
222
223 When Emacs loads a Lisp library, it searches for the library
224in a list of directories specified by the variable @code{load-path}.
225
83ac6b45
RS
226@defopt load-path
227@cindex @code{EMACSLOADPATH} environment variable
228The value of this variable is a list of directories to search when
229loading files with @code{load}. Each element is a string (which must be
230a directory name) or @code{nil} (which stands for the current working
a9f0a989
RS
231directory).
232@end defopt
233
234 The value of @code{load-path} is initialized from the environment
235variable @code{EMACSLOADPATH}, if that exists; otherwise its default
cf11ad96 236value is specified in @file{emacs/src/epaths.h} when Emacs is built.
a9f0a989
RS
237Then the list is expanded by adding subdirectories of the directories
238in the list.
83ac6b45 239
a9f0a989 240 The syntax of @code{EMACSLOADPATH} is the same as used for @code{PATH};
bfe721d1
KH
241@samp{:} (or @samp{;}, according to the operating system) separates
242directory names, and @samp{.} is used for the current default directory.
243Here is an example of how to set your @code{EMACSLOADPATH} variable from
244a @code{csh} @file{.login} file:
83ac6b45 245
83ac6b45 246@smallexample
f1e2c45e 247setenv EMACSLOADPATH .:/user/bil/emacs:/usr/local/share/emacs/20.3/lisp
83ac6b45
RS
248@end smallexample
249
a9f0a989 250 Here is how to set it using @code{sh}:
83ac6b45
RS
251
252@smallexample
253export EMACSLOADPATH
f1e2c45e 254EMACSLOADPATH=.:/user/bil/emacs:/usr/local/share/emacs/20.3/lisp
83ac6b45
RS
255@end smallexample
256
a40d4712
PR
257 Here is an example of code you can place in your init file (@pxref{Init
258File}) to add several directories to the front of your default
259@code{load-path}:
83ac6b45
RS
260
261@smallexample
bda144f4 262@group
83ac6b45
RS
263(setq load-path
264 (append (list nil "/user/bil/emacs"
265 "/usr/local/lisplib"
5e41cf03 266 "~/emacs")
83ac6b45 267 load-path))
bda144f4 268@end group
83ac6b45
RS
269@end smallexample
270
271@c Wordy to rid us of an overfull hbox. --rjc 15mar92
272@noindent
273In this example, the path searches the current working directory first,
5e41cf03
RS
274followed then by the @file{/user/bil/emacs} directory, the
275@file{/usr/local/lisplib} directory, and the @file{~/emacs} directory,
83ac6b45
RS
276which are then followed by the standard directories for Lisp code.
277
a9f0a989 278 Dumping Emacs uses a special value of @code{load-path}. If the value of
c642171c
RS
279@code{load-path} at the end of dumping is unchanged (that is, still the
280same special value), the dumped Emacs switches to the ordinary
cc8c51f1 281@code{load-path} value when it starts up, as described above. But if
c642171c
RS
282@code{load-path} has any other value at the end of dumping, that value
283is used for execution of the dumped Emacs also.
284
a9f0a989 285 Therefore, if you want to change @code{load-path} temporarily for
c642171c
RS
286loading a few libraries in @file{site-init.el} or @file{site-load.el},
287you should bind @code{load-path} locally with @code{let} around the
288calls to @code{load}.
83ac6b45 289
089e089d 290 The default value of @code{load-path}, when running an Emacs which has
a9f0a989
RS
291been installed on the system, includes two special directories (and
292their subdirectories as well):
089e089d
RS
293
294@smallexample
a9f0a989 295"/usr/local/share/emacs/@var{version}/site-lisp"
089e089d
RS
296@end smallexample
297
a9f0a989
RS
298@noindent
299and
300
301@smallexample
302"/usr/local/share/emacs/site-lisp"
303@end smallexample
304
305@noindent
306The first one is for locally installed packages for a particular Emacs
307version; the second is for locally installed packages meant for use with
308all installed Emacs versions.
089e089d
RS
309
310 There are several reasons why a Lisp package that works well in one
311Emacs version can cause trouble in another. Sometimes packages need
312updating for incompatible changes in Emacs; sometimes they depend on
313undocumented internal Emacs data that can change without notice;
314sometimes a newer Emacs version incorporates a version of the package,
315and should be used only with that version.
316
a9f0a989
RS
317 Emacs finds these directories' subdirectories and adds them to
318@code{load-path} when it starts up. Both immediate subdirectories and
319subdirectories multiple levels down are added to @code{load-path}.
320
321 Not all subdirectories are included, though. Subdirectories whose
322names do not start with a letter or digit are excluded. Subdirectories
8241495d
RS
323named @file{RCS} or @file{CVS} are excluded. Also, a subdirectory which
324contains a file named @file{.nosearch} is excluded. You can use these
325methods to prevent certain subdirectories of the @file{site-lisp}
326directories from being searched.
a9f0a989 327
089e089d
RS
328 If you run Emacs from the directory where it was built---that is, an
329executable that has not been formally installed---then @code{load-path}
330normally contains two additional directories. These are the @code{lisp}
331and @code{site-lisp} subdirectories of the main build directory. (Both
332are represented as absolute file names.)
333
f9f59935
RS
334@deffn Command locate-library library &optional nosuffix path interactive-call
335This command finds the precise file name for library @var{library}. It
336searches for the library in the same way @code{load} does, and the
337argument @var{nosuffix} has the same meaning as in @code{load}: don't
338add suffixes @samp{.elc} or @samp{.el} to the specified name
339@var{library}.
340
341If the @var{path} is non-@code{nil}, that list of directories is used
342instead of @code{load-path}.
343
344When @code{locate-library} is called from a program, it returns the file
345name as a string. When the user runs @code{locate-library}
346interactively, the argument @var{interactive-call} is @code{t}, and this
347tells @code{locate-library} to display the file name in the echo area.
348@end deffn
349
a9f0a989 350@node Loading Non-ASCII
ad800164 351@section Loading Non-@acronym{ASCII} Characters
a9f0a989 352
ad800164 353 When Emacs Lisp programs contain string constants with non-@acronym{ASCII}
a9f0a989
RS
354characters, these can be represented within Emacs either as unibyte
355strings or as multibyte strings (@pxref{Text Representations}). Which
356representation is used depends on how the file is read into Emacs. If
357it is read with decoding into multibyte representation, the text of the
358Lisp program will be multibyte text, and its string constants will be
359multibyte strings. If a file containing Latin-1 characters (for
360example) is read without decoding, the text of the program will be
361unibyte text, and its string constants will be unibyte strings.
362@xref{Coding Systems}.
363
364 To make the results more predictable, Emacs always performs decoding
365into the multibyte representation when loading Lisp files, even if it
366was started with the @samp{--unibyte} option. This means that string
ad800164 367constants with non-@acronym{ASCII} characters translate into multibyte
a9f0a989
RS
368strings. The only exception is when a particular file specifies no
369decoding.
370
371 The reason Emacs is designed this way is so that Lisp programs give
372predictable results, regardless of how Emacs was started. In addition,
373this enables programs that depend on using multibyte text to work even
374in a unibyte Emacs. Of course, such programs should be designed to
375notice whether the user prefers unibyte or multibyte text, by checking
376@code{default-enable-multibyte-characters}, and convert representations
377appropriately.
378
ad800164 379 In most Emacs Lisp programs, the fact that non-@acronym{ASCII} strings are
a9f0a989
RS
380multibyte strings should not be noticeable, since inserting them in
381unibyte buffers converts them to unibyte automatically. However, if
382this does make a difference, you can force a particular Lisp file to be
430f8c73 383interpreted as unibyte by writing @samp{-*-unibyte: t;-*-} in a
a9f0a989 384comment on the file's first line. With that designator, the file will
8241495d 385unconditionally be interpreted as unibyte, even in an ordinary
6824708b 386multibyte Emacs session. This can matter when making keybindings to
ad800164 387non-@acronym{ASCII} characters written as @code{?v@var{literal}}.
a9f0a989 388
83ac6b45
RS
389@node Autoload
390@section Autoload
391@cindex autoload
392
393 The @dfn{autoload} facility allows you to make a function or macro
bfe721d1
KH
394known in Lisp, but put off loading the file that defines it. The first
395call to the function automatically reads the proper file to install the
396real definition and other associated code, then runs the real definition
83ac6b45
RS
397as if it had been loaded all along.
398
399 There are two ways to set up an autoloaded function: by calling
400@code{autoload}, and by writing a special ``magic'' comment in the
401source before the real definition. @code{autoload} is the low-level
402primitive for autoloading; any Lisp program can call @code{autoload} at
969fe9b5 403any time. Magic comments are the most convenient way to make a function
a9f0a989
RS
404autoload, for packages installed along with Emacs. These comments do
405nothing on their own, but they serve as a guide for the command
969fe9b5
RS
406@code{update-file-autoloads}, which constructs calls to @code{autoload}
407and arranges to execute them when Emacs is built.
83ac6b45 408
78c71a98
RS
409@defun autoload function filename &optional docstring interactive type
410This function defines the function (or macro) named @var{function} so as
83ac6b45
RS
411to load automatically from @var{filename}. The string @var{filename}
412specifies the file to load to get the real definition of @var{function}.
413
f9f59935
RS
414If @var{filename} does not contain either a directory name, or the
415suffix @code{.el} or @code{.elc}, then @code{autoload} insists on adding
416one of these suffixes, and it will not load from a file whose name is
fcaedd23
LT
417just @var{filename} with no added suffix. (The variable
418@code{load-suffixes} specifies the exact required suffixes.)
f9f59935 419
83ac6b45 420The argument @var{docstring} is the documentation string for the
9e328e23
RS
421function. Specifying the documentation string in the call to
422@code{autoload} makes it possible to look at the documentation without
423loading the function's real definition. Normally, this should be
424identical to the documentation string in the function definition
425itself. If it isn't, the function definition's documentation string
426takes effect when it is loaded.
83ac6b45 427
969fe9b5
RS
428If @var{interactive} is non-@code{nil}, that says @var{function} can be
429called interactively. This lets completion in @kbd{M-x} work without
a9f0a989
RS
430loading @var{function}'s real definition. The complete interactive
431specification is not given here; it's not needed unless the user
432actually calls @var{function}, and when that happens, it's time to load
433the real definition.
83ac6b45
RS
434
435You can autoload macros and keymaps as well as ordinary functions.
436Specify @var{type} as @code{macro} if @var{function} is really a macro.
437Specify @var{type} as @code{keymap} if @var{function} is really a
438keymap. Various parts of Emacs need to know this information without
439loading the real definition.
440
bda144f4
MW
441An autoloaded keymap loads automatically during key lookup when a prefix
442key's binding is the symbol @var{function}. Autoloading does not occur
443for other kinds of access to the keymap. In particular, it does not
444happen when a Lisp program gets the keymap from the value of a variable
445and calls @code{define-key}; not even if the variable name is the same
446symbol @var{function}.
447
83ac6b45 448@cindex function cell in autoload
78c71a98 449If @var{function} already has a non-void function definition that is not
83ac6b45 450an autoload object, @code{autoload} does nothing and returns @code{nil}.
78c71a98 451If the function cell of @var{function} is void, or is already an autoload
83ac6b45
RS
452object, then it is defined as an autoload object like this:
453
454@example
455(autoload @var{filename} @var{docstring} @var{interactive} @var{type})
456@end example
457
177c0ea7 458For example,
83ac6b45
RS
459
460@example
bda144f4 461@group
83ac6b45
RS
462(symbol-function 'run-prolog)
463 @result{} (autoload "prolog" 169681 t nil)
bda144f4 464@end group
83ac6b45
RS
465@end example
466
467@noindent
468In this case, @code{"prolog"} is the name of the file to load, 169681
f9f59935
RS
469refers to the documentation string in the
470@file{emacs/etc/DOC-@var{version}} file (@pxref{Documentation Basics}),
471@code{t} means the function is interactive, and @code{nil} that it is
472not a macro or a keymap.
83ac6b45
RS
473@end defun
474
475@cindex autoload errors
476 The autoloaded file usually contains other definitions and may require
477or provide one or more features. If the file is not completely loaded
478(due to an error in the evaluation of its contents), any function
479definitions or @code{provide} calls that occurred during the load are
480undone. This is to ensure that the next attempt to call any function
481autoloading from this file will try again to load the file. If not for
a9f0a989
RS
482this, then some of the functions in the file might be defined by the
483aborted load, but fail to work properly for the lack of certain
484subroutines not loaded successfully because they come later in the file.
83ac6b45
RS
485
486 If the autoloaded file fails to define the desired Lisp function or
487macro, then an error is signaled with data @code{"Autoloading failed to
488define function @var{function-name}"}.
489
490@findex update-file-autoloads
491@findex update-directory-autoloads
ce58b669
LT
492@cindex magic autoload comment
493@cindex autoload cookie
494@anchor{autoload cookie}
495 A magic autoload comment (often called an @dfn{autoload cookie})
496consists of @samp{;;;###autoload}, on a line by itself,
497just before the real definition of the function in its
83ac6b45
RS
498autoloadable source file. The command @kbd{M-x update-file-autoloads}
499writes a corresponding @code{autoload} call into @file{loaddefs.el}.
500Building Emacs loads @file{loaddefs.el} and thus calls @code{autoload}.
501@kbd{M-x update-directory-autoloads} is even more powerful; it updates
502autoloads for all files in the current directory.
503
504 The same magic comment can copy any kind of form into
505@file{loaddefs.el}. If the form following the magic comment is not a
8241495d
RS
506function-defining form or a @code{defcustom} form, it is copied
507verbatim. ``Function-defining forms'' include @code{define-skeleton},
508@code{define-derived-mode}, @code{define-generic-mode} and
5858d11f 509@code{define-minor-mode} as well as @code{defun} and
8241495d
RS
510@code{defmacro}. To save space, a @code{defcustom} form is converted to
511a @code{defvar} in @file{loaddefs.el}, with some additional information
512if it uses @code{:require}.
513
514 You can also use a magic comment to execute a form at build time
515@emph{without} executing it when the file itself is loaded. To do this,
516write the form @emph{on the same line} as the magic comment. Since it
517is in a comment, it does nothing when you load the source file; but
518@kbd{M-x update-file-autoloads} copies it to @file{loaddefs.el}, where
519it is executed while building Emacs.
83ac6b45
RS
520
521 The following example shows how @code{doctor} is prepared for
522autoloading with a magic comment:
523
524@smallexample
525;;;###autoload
526(defun doctor ()
527 "Switch to *doctor* buffer and start giving psychotherapy."
528 (interactive)
529 (switch-to-buffer "*doctor*")
530 (doctor-mode))
531@end smallexample
532
533@noindent
534Here's what that produces in @file{loaddefs.el}:
535
536@smallexample
ba6ebbd5
EZ
537(autoload (quote doctor) "doctor" "\
538Switch to *doctor* buffer and start giving psychotherapy.
539
540\(fn)" t nil)
83ac6b45
RS
541@end smallexample
542
543@noindent
ba6ebbd5 544@cindex @code{fn} in function's documentation string
83ac6b45 545The backslash and newline immediately following the double-quote are a
8241495d 546convention used only in the preloaded uncompiled Lisp files such as
83ac6b45
RS
547@file{loaddefs.el}; they tell @code{make-docfile} to put the
548documentation string in the @file{etc/DOC} file. @xref{Building Emacs}.
ba6ebbd5
EZ
549See also the commentary in @file{lib-src/make-docfile.c}. @samp{(fn)}
550in the usage part of the documentation string is replaced with the
551function's name when the various help functions (@pxref{Help
552Functions}) display it.
83ac6b45 553
7f551e47
RS
554 If you write a function definition with an unusual macro that is not
555one of the known and recognized function definition methods, use of an
556ordinary magic autoload comment would copy the whole definition into
557@code{loaddefs.el}. That is not desirable. You can put the desired
558@code{autoload} call into @code{loaddefs.el} instead by writing this:
559
560@smallexample
561;;;###autoload (autoload 'foo "myfile")
562(mydefunmacro foo
563 ...)
564@end smallexample
565
83ac6b45 566@node Repeated Loading
83ac6b45
RS
567@section Repeated Loading
568@cindex repeated loading
569
a9f0a989 570 You can load a given file more than once in an Emacs session. For
83ac6b45
RS
571example, after you have rewritten and reinstalled a function definition
572by editing it in a buffer, you may wish to return to the original
573version; you can do this by reloading the file it came from.
574
575 When you load or reload files, bear in mind that the @code{load} and
576@code{load-library} functions automatically load a byte-compiled file
577rather than a non-compiled file of similar name. If you rewrite a file
f9f59935
RS
578that you intend to save and reinstall, you need to byte-compile the new
579version; otherwise Emacs will load the older, byte-compiled file instead
580of your newer, non-compiled file! If that happens, the message
a9f0a989 581displayed when loading the file includes, @samp{(compiled; note, source is
969fe9b5 582newer)}, to remind you to recompile it.
83ac6b45
RS
583
584 When writing the forms in a Lisp library file, keep in mind that the
f9f59935
RS
585file might be loaded more than once. For example, think about whether
586each variable should be reinitialized when you reload the library;
587@code{defvar} does not change the value if the variable is already
588initialized. (@xref{Defining Variables}.)
83ac6b45
RS
589
590 The simplest way to add an element to an alist is like this:
591
592@example
9e328e23 593(push '(leif-mode " Leif") minor-mode-alist)
83ac6b45
RS
594@end example
595
596@noindent
597But this would add multiple elements if the library is reloaded.
598To avoid the problem, write this:
599
600@example
601(or (assq 'leif-mode minor-mode-alist)
9e328e23 602 (push '(leif-mode " Leif") minor-mode-alist))
83ac6b45
RS
603@end example
604
9e328e23
RS
605@noindent
606or this:
607
608@example
609(add-to-list '(leif-mode " Leif") minor-mode-alist)
610@end example
bfe721d1 611
83ac6b45
RS
612 Occasionally you will want to test explicitly whether a library has
613already been loaded. Here's one way to test, in a library, whether it
614has been loaded before:
615
616@example
969fe9b5 617(defvar foo-was-loaded nil)
bfe721d1 618
969fe9b5
RS
619(unless foo-was-loaded
620 @var{execute-first-time-only}
621 (setq foo-was-loaded t))
83ac6b45
RS
622@end example
623
624@noindent
625If the library uses @code{provide} to provide a named feature, you can
969fe9b5
RS
626use @code{featurep} earlier in the file to test whether the
627@code{provide} call has been executed before.
37680279 628@ifnottex
bfe721d1 629@xref{Named Features}.
37680279 630@end ifnottex
83ac6b45 631
bfe721d1 632@node Named Features
83ac6b45
RS
633@section Features
634@cindex features
635@cindex requiring features
636@cindex providing features
637
638 @code{provide} and @code{require} are an alternative to
639@code{autoload} for loading files automatically. They work in terms of
640named @dfn{features}. Autoloading is triggered by calling a specific
641function, but a feature is loaded the first time another program asks
642for it by name.
643
644 A feature name is a symbol that stands for a collection of functions,
645variables, etc. The file that defines them should @dfn{provide} the
646feature. Another program that uses them may ensure they are defined by
647@dfn{requiring} the feature. This loads the file of definitions if it
648hasn't been loaded already.
649
650 To require the presence of a feature, call @code{require} with the
651feature name as argument. @code{require} looks in the global variable
652@code{features} to see whether the desired feature has been provided
653already. If not, it loads the feature from the appropriate file. This
78c71a98 654file should call @code{provide} at the top level to add the feature to
83ac6b45
RS
655@code{features}; if it fails to do so, @code{require} signals an error.
656@cindex load error with require
657
177c0ea7 658 For example, in @file{emacs/lisp/prolog.el},
83ac6b45
RS
659the definition for @code{run-prolog} includes the following code:
660
661@smallexample
662(defun run-prolog ()
9e2b495b 663 "Run an inferior Prolog process, with I/O via buffer *prolog*."
83ac6b45
RS
664 (interactive)
665 (require 'comint)
666 (switch-to-buffer (make-comint "prolog" prolog-program-name))
667 (inferior-prolog-mode))
668@end smallexample
669
670@noindent
671The expression @code{(require 'comint)} loads the file @file{comint.el}
672if it has not yet been loaded. This ensures that @code{make-comint} is
969fe9b5
RS
673defined. Features are normally named after the files that provide them,
674so that @code{require} need not be given the file name.
83ac6b45
RS
675
676The @file{comint.el} file contains the following top-level expression:
677
678@smallexample
679(provide 'comint)
680@end smallexample
681
682@noindent
683This adds @code{comint} to the global @code{features} list, so that
684@code{(require 'comint)} will henceforth know that nothing needs to be
685done.
686
687@cindex byte-compiling @code{require}
78c71a98 688 When @code{require} is used at top level in a file, it takes effect
83ac6b45
RS
689when you byte-compile that file (@pxref{Byte Compilation}) as well as
690when you load it. This is in case the required package contains macros
8241495d
RS
691that the byte compiler must know about. It also avoids byte-compiler
692warnings for functions and variables defined in the file loaded with
693@code{require}.
83ac6b45
RS
694
695 Although top-level calls to @code{require} are evaluated during
696byte compilation, @code{provide} calls are not. Therefore, you can
697ensure that a file of definitions is loaded before it is byte-compiled
698by including a @code{provide} followed by a @code{require} for the same
699feature, as in the following example.
700
701@smallexample
702@group
703(provide 'my-feature) ; @r{Ignored by byte compiler,}
704 ; @r{evaluated by @code{load}.}
705(require 'my-feature) ; @r{Evaluated by byte compiler.}
706@end group
707@end smallexample
708
78c71a98
RS
709@noindent
710The compiler ignores the @code{provide}, then processes the
711@code{require} by loading the file in question. Loading the file does
712execute the @code{provide} call, so the subsequent @code{require} call
969fe9b5 713does nothing when the file is loaded.
78c71a98 714
f2aa473a 715@defun provide feature &optional subfeatures
83ac6b45
RS
716This function announces that @var{feature} is now loaded, or being
717loaded, into the current Emacs session. This means that the facilities
718associated with @var{feature} are or will be available for other Lisp
719programs.
720
721The direct effect of calling @code{provide} is to add @var{feature} to
722the front of the list @code{features} if it is not already in the list.
723The argument @var{feature} must be a symbol. @code{provide} returns
724@var{feature}.
725
f2aa473a
SM
726If provided, @var{subfeatures} should be a list of symbols indicating
727a set of specific subfeatures provided by this version of @var{feature}.
0373c25e 728You can test the presence of a subfeature using @code{featurep}.
f2aa473a 729
83ac6b45
RS
730@smallexample
731features
732 @result{} (bar bish)
733
734(provide 'foo)
735 @result{} foo
736features
737 @result{} (foo bar bish)
738@end smallexample
739
bfe721d1 740When a file is loaded to satisfy an autoload, and it stops due to an
b7ebcab7 741error in the evaluation of its contents, any function definitions or
bfe721d1
KH
742@code{provide} calls that occurred during the load are undone.
743@xref{Autoload}.
83ac6b45
RS
744@end defun
745
b6954afd 746@defun require feature &optional filename noerror
83ac6b45 747This function checks whether @var{feature} is present in the current
f9f59935
RS
748Emacs session (using @code{(featurep @var{feature})}; see below). The
749argument @var{feature} must be a symbol.
750
751If the feature is not present, then @code{require} loads @var{filename}
752with @code{load}. If @var{filename} is not supplied, then the name of
753the symbol @var{feature} is used as the base file name to load.
754However, in this case, @code{require} insists on finding @var{feature}
adc881cc 755with an added @samp{.el} or @samp{.elc} suffix (possibly extended with
fcaedd23
LT
756a compression suffix); a file whose name is just @var{feature} won't
757be used. (The variable @code{load-suffixes} specifies the exact
758required Lisp suffixes.)
83ac6b45 759
d112d11f
RS
760If @var{noerror} is non-@code{nil}, that suppresses errors from actual
761loading of the file. In that case, @code{require} returns @code{nil}
762if loading the file fails. Normally, @code{require} returns
763@var{feature}.
764
765If loading the file succeeds but does not provide @var{feature},
766@code{require} signals an error, @samp{Required feature @var{feature}
767was not provided}.
83ac6b45
RS
768@end defun
769
f2aa473a 770@defun featurep feature &optional subfeature
15bc2f77
RS
771This function returns @code{t} if @var{feature} has been provided in
772the current Emacs session (i.e.@:, if @var{feature} is a member of
773@code{features}.) If @var{subfeature} is non-@code{nil}, then the
774function returns @code{t} only if that subfeature is provided as well
775(i.e.@: if @var{subfeature} is a member of the @code{subfeature}
776property of the @var{feature} symbol.)
83ac6b45
RS
777@end defun
778
779@defvar features
780The value of this variable is a list of symbols that are the features
781loaded in the current Emacs session. Each symbol was put in this list
782with a call to @code{provide}. The order of the elements in the
783@code{features} list is not significant.
784@end defvar
785
82c59a6b
RS
786@node Where Defined
787@section Which File Defined a Certain Symbol
788
789@defun symbol-file symbol &optional type
790This function returns the name of the file that defined @var{symbol}.
791If @var{type} is @code{nil}, then any kind of definition is
792acceptable. If @var{type} is @code{defun} or @code{defvar}, that
793specifies function definition only or variable definition only.
794
e1f4af40
RS
795The value is normally an absolute file name. It can also be
796@code{nil}, if the definition is not associated with any file.
82c59a6b
RS
797@end defun
798
799 The basis for @code{symbol-file} is the data in the variable
800@code{load-history}.
801
802@defvar load-history
e1f4af40 803This variable's value is an alist connecting library file names with the
82c59a6b
RS
804names of functions and variables they define, the features they provide,
805and the features they require.
806
807Each element is a list and describes one library. The @sc{car} of the
e1f4af40
RS
808list is the absolute file name of the library, as a string. The rest
809of the list elements have these forms:
82c59a6b
RS
810
811@table @code
812@item @var{var}
813The symbol @var{var} was defined as a variable.
814@item (defun . @var{fun})
9e328e23 815The function @var{fun} was defined.
82c59a6b
RS
816@item (t . @var{fun})
817The function @var{fun} was previously an autoload before this library
9e328e23 818redefined it as a function. The following element is always
2ca28c05 819@code{(defun . @var{fun})}, which represents defining @var{fun} as a
9e328e23 820function.
82c59a6b
RS
821@item (autoload . @var{fun})
822The function @var{fun} was defined as an autoload.
823@item (require . @var{feature})
824The feature @var{feature} was required.
825@item (provide . @var{feature})
826The feature @var{feature} was provided.
827@end table
828
829The value of @code{load-history} may have one element whose @sc{car} is
830@code{nil}. This element describes definitions made with
831@code{eval-buffer} on a buffer that is not visiting a file.
832@end defvar
833
834 The command @code{eval-region} updates @code{load-history}, but does so
835by adding the symbols defined to the element for the file being visited,
836rather than replacing that element. @xref{Eval}.
837
83ac6b45
RS
838@node Unloading
839@section Unloading
840@cindex unloading
841
842@c Emacs 19 feature
843 You can discard the functions and variables loaded by a library to
844reclaim memory for other Lisp objects. To do this, use the function
845@code{unload-feature}:
846
ee6bcc94 847@deffn Command unload-feature feature &optional force
83ac6b45 848This command unloads the library that provided feature @var{feature}.
78c71a98 849It undefines all functions, macros, and variables defined in that
969fe9b5
RS
850library with @code{defun}, @code{defalias}, @code{defsubst},
851@code{defmacro}, @code{defconst}, @code{defvar}, and @code{defcustom}.
852It then restores any autoloads formerly associated with those symbols.
853(Loading saves these in the @code{autoload} property of the symbol.)
ee6bcc94 854
0373c25e 855@vindex unload-feature-special-hooks
6582d61e
RS
856Before restoring the previous definitions, @code{unload-feature} runs
857@code{remove-hook} to remove functions in the library from certain
0373c25e
RS
858hooks. These hooks include variables whose names end in @samp{hook}
859or @samp{-hooks}, plus those listed in
860@code{unload-feature-special-hooks}. This is to prevent Emacs from
861ceasing to function because important hooks refer to functions that
862are no longer defined.
6582d61e
RS
863
864@vindex @var{feature}-unload-hook
865If these measures are not sufficient to prevent malfunction, a library
866can define an explicit unload hook. If @code{@var{feature}-unload-hook}
867is defined, it is run as a normal hook before restoring the previous
868definitions, @emph{instead of} the usual hook-removing actions. The
869unload hook ought to undo all the global state changes made by the
870library that might cease to work once the library is unloaded.
8241495d
RS
871@code{unload-feature} can cause problems with libraries that fail to do
872this, so it should be used with caution.
6582d61e 873
ee6bcc94
RS
874Ordinarily, @code{unload-feature} refuses to unload a library on which
875other loaded libraries depend. (A library @var{a} depends on library
876@var{b} if @var{a} contains a @code{require} for @var{b}.) If the
877optional argument @var{force} is non-@code{nil}, dependencies are
878ignored and you can unload any library.
83ac6b45
RS
879@end deffn
880
881 The @code{unload-feature} function is written in Lisp; its actions are
882based on the variable @code{load-history}.
883
cf11ad96 884@defvar unload-feature-special-hooks
6582d61e
RS
885This variable holds a list of hooks to be scanned before unloading a
886library, to remove functions defined in the library.
887@end defvar
888
83ac6b45
RS
889@node Hooks for Loading
890@section Hooks for Loading
891@cindex loading hooks
892@cindex hooks for loading
893
894You can ask for code to be executed if and when a particular library is
895loaded, by calling @code{eval-after-load}.
896
897@defun eval-after-load library form
898This function arranges to evaluate @var{form} at the end of loading the
d2e9ee06
RS
899library @var{library}, if and when @var{library} is loaded. If
900@var{library} is already loaded, it evaluates @var{form} right away.
83ac6b45 901
f2aa473a
SM
902If @var{library} is a string, it must exactly match the argument of
903@code{load} used to load the library. To get the proper results when an
904installed library is found by searching @code{load-path}, you should not
905include any directory names in @var{library}.
906
a28b5ba3 907@var{library} can also be a feature (i.e.@: a symbol), in which case
f2aa473a 908@var{form} is evaluated when @code{(provide @var{library})} is called.
83ac6b45
RS
909
910An error in @var{form} does not undo the load, but does prevent
911execution of the rest of @var{form}.
912@end defun
913
d2e9ee06
RS
914In general, well-designed Lisp programs should not use this feature.
915The clean and modular ways to interact with a Lisp library are (1)
916examine and set the library's variables (those which are meant for
cc8c51f1 917outside use), and (2) call the library's functions. If you wish to
d2e9ee06
RS
918do (1), you can do it immediately---there is no need to wait for when
919the library is loaded. To do (2), you must load the library (preferably
920with @code{require}).
921
969fe9b5
RS
922But it is OK to use @code{eval-after-load} in your personal
923customizations if you don't feel they must meet the design standards for
924programs meant for wider use.
d2e9ee06 925
83ac6b45 926@defvar after-load-alist
8241495d
RS
927This variable holds an alist of expressions to evaluate if and when
928particular libraries are loaded. Each element looks like this:
83ac6b45
RS
929
930@example
931(@var{filename} @var{forms}@dots{})
932@end example
933
934The function @code{load} checks @code{after-load-alist} in order to
935implement @code{eval-after-load}.
936@end defvar
937
938@c Emacs 19 feature
ab5796a9
MB
939
940@ignore
941 arch-tag: df731f89-0900-4389-a436-9105241b6f7a
942@end ignore