From a2295d3268e1fb597bf8d7343a3474f11011f9e3 Mon Sep 17 00:00:00 2001 From: Miles Bader Date: Mon, 12 Apr 2004 05:43:12 +0000 Subject: [PATCH] Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-205 Add macroexpand-all to lisp reference manual --- lispref/ChangeLog | 4 ++++ lispref/macros.texi | 24 +++++++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/lispref/ChangeLog b/lispref/ChangeLog index ada77ec4a36..aa20df10307 100644 --- a/lispref/ChangeLog +++ b/lispref/ChangeLog @@ -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 --git a/lispref/macros.texi b/lispref/macros.texi index 53f082cf46c..b940125cb87 100644 --- a/lispref/macros.texi +++ b/lispref/macros.texi @@ -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 @@ uses this feature. @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 -- 2.39.5