# HG changeset patch # User Miles Bader # Date 1081748592 0 # Node ID 47d3a293c8ae70b547adca8276558be49b78365b # Parent 957deec21b7e02e69bf63470abc3d5606e1db026 Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-205 Add macroexpand-all to lisp reference manual diff -r 957deec21b7e -r 47d3a293c8ae lispref/ChangeLog --- a/lispref/ChangeLog Mon Apr 12 05:01:19 2004 +0000 +++ b/lispref/ChangeLog Mon Apr 12 05:43:12 2004 +0000 @@ -1,3 +1,7 @@ +2004-04-12 Miles Bader + + * macros.texi (Expansion): Add description of `macroexpand-all'. + 2004-04-05 Jesper Harder * variables.texi (Variable Aliases): Mention diff -r 957deec21b7e -r 47d3a293c8ae lispref/macros.texi --- a/lispref/macros.texi Mon Apr 12 05:01:19 2004 +0000 +++ b/lispref/macros.texi Mon Apr 12 05:43:12 2004 +0000 @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998 Free Software Foundation, Inc. +@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 2004 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @setfilename ../info/macros @node Macros, Customization, Functions, Top @@ -137,6 +137,28 @@ @end smallexample @end defun + +@defun macroexpand-all form &optional environment +@cindex macro expansion in entire form + +@code{macroexpand-all} expands macros like @code{macroexpand}, but +will look for and expand all macros in @var{form}, not just at the +top-level. + +In emacs-lisp, @code{macroexpand-all} guarantees that if no macros +are expanded, the return value will be @code{eq} to @var{form}. + +Repeating the example used for @code{macroexpand} above with +@code{macroexpand-all}, we see that @code{macroexpand-all} @emph{does} +expand the embedded calls to @code{inc}: + +@smallexample +(macroexpand-all '(inc2 r s)) + @result{} (progn (setq r (1+ r)) (setq s (1+ s))) +@end smallexample + +@end defun + @node Compiling Macros @section Macros and Byte Compilation @cindex byte-compiling macros