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