> Date: Mon, 1 Jan 2018 20:59:38 +0000
> Cc: [email protected], [email protected]
> From: Alan Mackenzie <[email protected]>
> 
> > What bug did that cause in recent versions of makeinfo?
> 
> In version 6.3, it caused a wanted linefeed to be lost.  For example, if
> I delete the "@c"s in hereFn and sssTBasicOffset, the following source:
> 
>     @macro sssTBasicOffset
>     <--> @i{c-basic-offset}@c
>     @end macro
> 
>     ............
> 
>     @example
>     @group
>     if (n > 0)
>         @{m+=n; n=0;@}      @hereFn{c-indent-one-line-block}
>     @sssTBasicOffset{}
>     @end group
>     @end example
> 
>     @noindent
>     and
> 
>     @example
>     @group
>     if (n > 0)
>     @{                     @hereFn{c-indent-one-line-block}
>         m+=n; n=0;
>     @}
>     @end group
>     @end example
> 
> generates this (correct) output:
> 
>           if (n > 0)
>               {m+=n; n=0;}      <- c-indent-one-line-block
>           <--> c-basic-offset
> 
>      and
> 
>           if (n > 0)
>           {                     <- c-indent-one-line-block
>               m+=n; n=0;
>           }
> 
> 
> .  With the "@c"s present, we get instead this (incorrect) output:
> 
>           if (n > 0)
>               {m+=n; n=0;}      <- c-indent-one-line-block<--> c-basic-offset
> 
>      and
> 
>           if (n > 0)
>           {                     <- c-indent-one-line-block    m+=n; n=0;
>           }
> 
> .

Add an extra newline to the macro.  Or maybe even @* will work.

> > What's to warn about?
> 
> That two adjacent lines in an @example (and maybe an @verbatim, too) are
> being joined into a single line because of the "@c ....." at the end of
> the first line.

But that's a feature, so why warn about it?

> > This trick is for versions of makeinfo which leave newlines in macro
> > expansions, since otherwise you will have trouble coming up with
> > macros that expand into Texinfo directives which need to be alone on
> > their lines, like "@item" or "@end SOMETHING".
> 
> Ah, OK.  :-)  If I've read you correctly, you're saying that the "@c" in
> a macro would ensure that there was a linefeed at the end of the
> generated line, used in macros which generated, say, @item.  The main use
> here would have been in ordinary text, not in @example.

No, it's the other way around: a macro _without_ @c will include the
newline in the expansion, because the "normal" use case expects that.
The few use cases where the newline needs to be removed use the @c
trick.

Reply via email to