Mercurial > emacs
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