changeset 54812:47d3a293c8ae

Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-205 Add macroexpand-all to lisp reference manual
author Miles Bader <miles@gnu.org>
date Mon, 12 Apr 2004 05:43:12 +0000
parents 957deec21b7e
children 59f2a23a44d1
files lispref/ChangeLog lispref/macros.texi
diffstat 2 files changed, 27 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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  <miles@gnu.org>
+
+	* macros.texi (Expansion): Add description of `macroexpand-all'.
+
 2004-04-05  Jesper Harder  <harder@ifa.au.dk>
 
 	* variables.texi (Variable Aliases): Mention
--- 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