This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU M4 source repository".

http://git.sv.gnu.org/gitweb/?p=m4.git;a=commitdiff;h=85920dd1b26a268744d8da4d4e6d52843b77a36a

The branch, master has been updated
       via  85920dd1b26a268744d8da4d4e6d52843b77a36a (commit)
      from  e8bf3ba075c1946f66e302f187b9012f26a742a2 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 85920dd1b26a268744d8da4d4e6d52843b77a36a
Author: Eric Blake <[EMAIL PROTECTED]>
Date:   Sat Oct 27 06:15:51 2007 -0600

    Document one use of changequote(`(',`)').
    
    * doc/m4.texinfo (Changequote): Add new test, based on recent
    autoconf addition of m4_expand.
    
    Signed-off-by: Eric Blake <[EMAIL PROTECTED]>
    (cherry picked from commit 37e491acd84f447920057b1619ebab148adea8b1)

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog      |    6 ++++++
 doc/m4.texinfo |   28 ++++++++++++++++++++++++++++
 2 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 4e9dcbc..6f56dee 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-10-27  Eric Blake  <[EMAIL PROTECTED]>
+
+       Document one use of changequote(`(',`)').
+       * doc/m4.texinfo (Changequote): Add new test, based on recent
+       autoconf addition of m4_expand.
+
 2007-10-24  Ralf Wildenhues  <[EMAIL PROTECTED]>
 
        * Makefile.am (dist_pkgdata_DATA): Add examples/capitalize2.m4.
diff --git a/doc/m4.texinfo b/doc/m4.texinfo
index 5cedc18..f84f4d3 100644
--- a/doc/m4.texinfo
+++ b/doc/m4.texinfo
@@ -4074,6 +4074,34 @@ echo(hi,hi)bye)
 @result{}1:HIhibye:
 @end example
 
+However, if you are not worried about portability, using @samp{(} and
[EMAIL PROTECTED])} as quoting characters has an interesting property---you can 
use
+it to compute a quoted string containing the expansion of any quoted
+text, as long as the expansion results in both balanced quotes and
+balanced parentheses.  The trick is realizing @code{expand} uses
[EMAIL PROTECTED] unquoted, to trigger its expansion using the normal quoting
+characters, but uses extra parentheses to group unquoted commas that
+occur in the expansion without consuming whitespace following those
+commas.  Then @code{_expand} uses @code{changequote} to convert the
+extra parentheses back into quoting characters.  Note that it takes two
+more @code{changequote} invocations to restore the original quotes.
+Contrast the behavior on whitespace when using @samp{$*}, via
[EMAIL PROTECTED], to attempt the same task.
+
[EMAIL PROTECTED]
+changequote(`[', `]')dnl
+define([a], [1, (b)])dnl
+define([b], [2])dnl
+define([quote], [[$*]])dnl
+define([expand], [_$0(($1))])dnl
+define([_expand],
+  [changequote([(], [)])$1changequote`'changequote(`[', `]')])dnl
+expand([a, a, [a, a], [[a, a]]])
[EMAIL PROTECTED], (2), 1, (2), a, a, [a, a]
+quote(a, a, [a, a], [[a, a]])
[EMAIL PROTECTED],(2),1,(2),a, a,[a, a]
[EMAIL PROTECTED] example
+
 If @var{end} is a prefix of @var{start}, the end-quote will be
 recognized in preference to a nested begin-quote.  In particular,
 changing the quotes to have the same string for @var{start} and


hooks/post-receive
--
GNU M4 source repository


Reply via email to