Date: Sun, 14 Nov 1999 14:20:33 +0200 (IST)
   From: Eli Zaretskii <[EMAIL PROTECTED]>


   On Sun, 14 Nov 1999, Brian J. Fox wrote:

   >    >     if (arg == START)
   >    >       {
   >    > !       char *addr = get_xref_token (0);
   >    >         char *name = get_xref_token (0);
   > 
   >    This change breaks support for macros inside @email.  Why did you need 
   >    it?
   > 
   > I would be surprised if it actually broke support for macros inside
   > @email.  Isn't execute_string() called on the arguments after they are
   > gathered?

   It's subtle (and thus took a lot of sweat and blood to get right).  
   execute_string is indeed called on the name and address, but it doesn't 
   only expand macros.  It also converts Texinfo commands embedded in the 
   name and the address.  For @email, the usual case is that the address 
   calls @@ (to produce a literal `@').

   Now suppose @email is itself called from a macro.  In that case, @@ will 
   be passed to execute_string more than once, and bad things will happen 
   the second time.  Under -E, the macro-expanded output is also incorrect 
   in some cases like this.

Okay, I'll go along with this.  So why isn't NAME treated the same way
as ADDR, i.e., get_xref_token (1)?

Brian
== The Difference Between Cultures: ==
    Einigkeit und Recht und Freiheit
    Liberte', E'galite', Fraternite'
    Sex, drugs and rock'n'roll

Reply via email to