aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Morris2012-11-17 17:38:42 -0800
committerGlenn Morris2012-11-17 17:38:42 -0800
commit7351b73d45a2f6f33230e6725fdfdf9e122eff14 (patch)
tree2e6153d48902f57bc279fce27736e484d537823e
parent7f6705c313ce5054fdcbc457fa32b9680bcb11a7 (diff)
downloademacs-7351b73d45a2f6f33230e6725fdfdf9e122eff14.tar.gz
emacs-7351b73d45a2f6f33230e6725fdfdf9e122eff14.zip
Document eager macro expansion
* doc/lispref/loading.texi (How Programs Do Loading): Add eager macro expansion. * doc/lispref/macros.texi (Expansion): Mention eager macro expansion. * etc/NEWS: Related edit.
-rw-r--r--doc/lispref/ChangeLog5
-rw-r--r--doc/lispref/loading.texi19
-rw-r--r--doc/lispref/macros.texi4
-rw-r--r--etc/NEWS12
4 files changed, 34 insertions, 6 deletions
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index da82ece39c1..43ca9ac4aa5 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,8 @@
12012-11-18 Glenn Morris <rgm@gnu.org>
2
3 * loading.texi (How Programs Do Loading): Add eager macro expansion.
4 * macros.texi (Expansion): Mention eager macro expansion.
5
12012-11-17 Glenn Morris <rgm@gnu.org> 62012-11-17 Glenn Morris <rgm@gnu.org>
2 7
3 * minibuf.texi (Basic Completion): Mention misc completion-table funcs. 8 * minibuf.texi (Basic Completion): Mention misc completion-table funcs.
diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi
index 3a511d34829..54acd0b4d4c 100644
--- a/doc/lispref/loading.texi
+++ b/doc/lispref/loading.texi
@@ -113,6 +113,25 @@ When loading a source file (not compiled), @code{load} performs
113character set translation just as Emacs would do when visiting the file. 113character set translation just as Emacs would do when visiting the file.
114@xref{Coding Systems}. 114@xref{Coding Systems}.
115 115
116@c This is referred to from the Macros chapter.
117@c Not sure if it should be the other way round.
118@cindex eager macro expansion
119When loading an uncompiled file, Emacs tries to expand any macros
120that the file contains (@pxref{Macros}). We refer to this as
121@dfn{eager macro expansion}. Doing this (rather than deferring
122the expansion until the relevant code runs) can significantly speed
123up the execution of uncompiled code. Sometimes, this macro expansion
124cannot be done, owing to a cyclic dependency. In the simplest
125example of this, the file you are loading refers to a macro defined
126in another file, and that file in turn requires the file you are
127loading. This is generally harmless. Emacs prints a warning
128(@samp{Eager macro-expansion skipped due to cycle@dots{}})
129giving details of the problem, but it still loads the file, just
130leaving the macro unexpanded for now. You may wish to restructure
131your code so that this does not happen. Loading a compiled file does
132not cause macroexpansion, because this should already have happened
133during compilation. @xref{Compiling Macros}.
134
116Messages like @samp{Loading foo...} and @samp{Loading foo...done} appear 135Messages like @samp{Loading foo...} and @samp{Loading foo...done} appear
117in the echo area during loading unless @var{nomessage} is 136in the echo area during loading unless @var{nomessage} is
118non-@code{nil}. 137non-@code{nil}.
diff --git a/doc/lispref/macros.texi b/doc/lispref/macros.texi
index 8be6a3fbcde..b0dee1bf215 100644
--- a/doc/lispref/macros.texi
+++ b/doc/lispref/macros.texi
@@ -86,6 +86,10 @@ macro.
86calls to other macros. It may even be a call to the same macro, though 86calls to other macros. It may even be a call to the same macro, though
87this is unusual. 87this is unusual.
88 88
89 Note that Emacs tries to expand macros when loading an uncompiled
90Lisp file. This is not always possible, but if it is, it speeds up
91subsequent execution. @xref{How Programs Do Loading}.
92
89 You can see the expansion of a given macro call by calling 93 You can see the expansion of a given macro call by calling
90@code{macroexpand}. 94@code{macroexpand}.
91 95
diff --git a/etc/NEWS b/etc/NEWS
index f518605b572..388af4a7d40 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -923,13 +923,13 @@ Previously, they returned NaNs on some platforms but signaled errors
923on others. The affected functions are acos, asin, tan, exp, expt, 923on others. The affected functions are acos, asin, tan, exp, expt,
924log, log10, sqrt, and mod. 924log, log10, sqrt, and mod.
925 925
926** Interpreted files are eagerly macro-expanded during load. 926+++
927** Emacs tries to macroexpand interpreted (non-compiled) files during load.
927This can significantly speed up execution of non-byte-compiled code, 928This can significantly speed up execution of non-byte-compiled code,
928but can also bump into harmless and previously unnoticed cyclic 929but can also bump into previously unnoticed cyclic dependencies.
929dependencies. These should not be fatal: they will simply cause the 930These are generally harmless: they will simply cause the macro calls
930macro-calls to be left for later expansion (as before), but will also 931to be left for later expansion (as before), but will result in a
931result in a warning ("Eager macro-expansion skipped due to cycle") 932warning ("Eager macro-expansion skipped due to cycle") describing the cycle.
932describing the cycle.
933 933
934** Miscellaneous new functions: 934** Miscellaneous new functions:
935+++ 935+++