On Thu, Mar 02, 2023 at 08:33:54PM +0000, Gavin Smith wrote:
> > This is also most likely a difficulty in what you propose.  For example
> > for
> > 
> > @linemacro defbuiltin symbol rest
> > @byindex \symbol\
> > @defline Builtin \symbol\ \rest\
> > @end linemacro
> > 
> > For @byindex, \symbol\ should not be in braces.  But on the @defline
> > line it may need to.  Therefore a call like
> > 
> > @defbuiltin {My, symbol} and, rest
> > 
> > would lead to
> > @byindex My, symbol
> > @defline Builtin My, symbol and, rest
> > which is ok for @byindex, but not for @defline.  If the call is like
> > 
> > @defbuiltin {{My, symbol}} and, rest
> > 
> > It would lead to
> > @byindex {My, symbol}
> > @defline Builtin {My, symbol} and, rest
> > which is ok for @defline but not for @byindex.
> > 
> > So, it is not clear that all the situations are handled.
> 
> This is a good point; however, there is another possibilty which is
> to put extra braces in the macro definition:
> 
>     @linemacro defbuiltin symbol rest
>     @byindex \symbol\
>     @defline Builtin {\symbol\} \rest\
>     @end linemacro

This more or less means that there would always be braces to protect
arguments before the rest of the line when used in macros.

> This would depend on whether double braces would work as an argument
> to @defline.

I do not think so, unless I am missing something, in the call

  @defbuiltin {My Symbol} rest

The {} around 'My Symbol' would be removed before substitution.

> Another possibility is to use @asis:
> 
>     @defbuiltin  {@asis{My, symbol}} and, rest
> 
> Most of the time, though, there would not be spaces in the first argument
> for @defline.

But commas would be even rarer.

-- 
Pat

Reply via email to