aboutsummaryrefslogtreecommitdiffstats
path: root/doc/lispref/loading.texi
diff options
context:
space:
mode:
authorKen Raeburn2017-07-31 01:13:53 -0400
committerKen Raeburn2017-07-31 01:13:53 -0400
commit13f3370400031e2ac1c9be0932f411370fc6984e (patch)
tree06f349b2b0f1cda9e36f7c4390d9d2d9bf49303c /doc/lispref/loading.texi
parentcd0966b33c1fe975520e85e0e7af82c09e4754dc (diff)
parentdcfcaf40d577808d640016c886d4fae7280a7fd5 (diff)
downloademacs-13f3370400031e2ac1c9be0932f411370fc6984e.tar.gz
emacs-13f3370400031e2ac1c9be0932f411370fc6984e.zip
; Merge from branch 'master'scratch/raeburn-startup
Diffstat (limited to 'doc/lispref/loading.texi')
-rw-r--r--doc/lispref/loading.texi40
1 files changed, 40 insertions, 0 deletions
diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi
index d925c8c8f65..80dcb488983 100644
--- a/doc/lispref/loading.texi
+++ b/doc/lispref/loading.texi
@@ -468,6 +468,10 @@ runs the real definition as if it had been loaded all along.
468Autoloading can also be triggered by looking up the documentation of 468Autoloading can also be triggered by looking up the documentation of
469the function or macro (@pxref{Documentation Basics}). 469the function or macro (@pxref{Documentation Basics}).
470 470
471@menu
472* When to Autoload:: When to Use Autoload.
473@end menu
474
471 There are two ways to set up an autoloaded function: by calling 475 There are two ways to set up an autoloaded function: by calling
472@code{autoload}, and by writing a ``magic'' comment in the 476@code{autoload}, and by writing a ``magic'' comment in the
473source before the real definition. @code{autoload} is the low-level 477source before the real definition. @code{autoload} is the low-level
@@ -699,6 +703,42 @@ symbol's new function value. If the value of the optional argument
699function, only a macro. 703function, only a macro.
700@end defun 704@end defun
701 705
706@node When to Autoload
707@subsection When to Use Autoload
708@cindex autoload, when to use
709
710Do not add an autoload comment unless it is really necessary.
711Autoloading code means it is always globally visible. Once an item is
712autoloaded, there is no compatible way to transition back to it not
713being autoloaded (after people become accustomed to being able to use it
714without an explicit load).
715
716@itemize
717@item
718The most common items to autoload are the interactive entry points to a
719library. For example, if @file{python.el} is a library defining a
720major-mode for editing Python code, autoload the definition of the
721@code{python-mode} function, so that people can simply use @kbd{M-x
722python-mode} to load the library.
723
724@item
725Variables usually don't need to be autoloaded. An exception is if the
726variable on its own is generally useful without the whole defining
727library being loaded. (An example of this might be something like
728@code{find-exec-terminator}.)
729
730@item
731Don't autoload a user option just so that a user can set it.
732
733@item
734Never add an autoload @emph{comment} to silence a compiler warning in
735another file. In the file that produces the warning, use
736@code{(defvar foo)} to silence an undefined variable warning, and
737@code{declare-function} (@pxref{Declaring Functions}) to silence an
738undefined function warning; or require the relevant library; or use an
739explicit autoload @emph{statement}.
740@end itemize
741
702@node Repeated Loading 742@node Repeated Loading
703@section Repeated Loading 743@section Repeated Loading
704@cindex repeated loading 744@cindex repeated loading