[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: macro bug in CVS makeinfo

From: Eli Zaretskii
Subject: Re: macro bug in CVS makeinfo
Date: Thu, 30 Dec 2010 06:15:27 -0500

> Date: Thu, 30 Dec 2010 05:03:09 +0100 (CET)
> From: Werner LEMBERG <address@hidden>
> Cc: address@hidden
> Well, I can, more or less, but it is a pity that Patrice's texi2any
> has inherited this very bug from makeinfo.

Given the requirement to be back-compatible with the C implementation,
I don't see how we can blame Patrice.  See below.

> Having an unbalanced @{ as an argument to @deffn is not such a
> strange assumption, is it?

Actually, it is.  @def* commands are extremely irregular, in that they
violate a couple of very basic rules of the Texinfo "language".  For
example, they allow text inside "{..}", something that isn't allowed
anywhere else in Texinfo.  Take a look at the implementation, to get a
feeling of how much kludgeing around this requires.

It is a small wonder that stretching @deffn to the limits breaks it.
You may think that using @{ as an argument to @deffn is a natural
thing, since @{ is allowed elsewhere in Texinfo, but since @deffn has
no formal spec and violates basic Texinfo rules, what is valid
elsewhere is not necessarily valid in @deffn.  IOW, your assumption
that any valid Texinfo should be valid in @deffn is simply false.

> > Since macros are such a touchy and ill-defined subject in the
> > Texinfo language, I expect problems with particular versions of the
> > tools will always be there.
> Honestly spoken, I'm not happy about this fatalistic attitude.

I don't know what are Karl's and Patrice's plans in this regard, but
IMO the problems with Texinfo macros will not go away unless Someoneā„¢
comes up with a formal spec of macros that defines a regular grammar,
with all the corners (like quoting and whitespace/newline handling)
figured out as part of that.  How to do that without breaking existing
manuals that are heavy users of macros, I don't know.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]