# [dev-context] A few questions

Hans Hagen pragma at wxs.nl
Thu Aug 6 23:42:49 CEST 2009

Wolfgang Schuster wrote:
> Hi Hans,
>
> here are a few questions which I want to ask since a few days.
>
>
> 1. texdefinition
>
> I like start/stoptexdefinition because it makes the source for certain
> than \def allows me but is there a way to use it for macros without
> parameters?

this works

\starttexdefinition test {}
oeps
\stoptexdefinition

[\test]

we can consider something like:

\starttexdefinition test optional,optional,argument,argument
oeps
\stoptexdefinition

which then becomes

\def\test[#1][#2]#3#4%

etc but i'm only willing to support that if we can stick to reasonable
definitions

or even

\starttexdefinition test optional:ns,argument:name
oeps
\stoptexdefinition

which then automatically makes you a \getvariable{ns}{key} as well as \name

or maybe like xml:

\starttexdefinition test ns:optional,argument
oeps
\stoptexdefinition

with then makes an \getvariable{ns}{first} and so

needs a bit of thinking

> 2. commalists
>
> Together with texdefinition I use now start/stopprocesscommalist
> (feature request: I need also
> start/stopprocessassignmentlist) but I can use the list value without
> the need to define a command
> where I specify what should happen with it
>
>   \startprocesscommalist[a,b,c,...]
>   the current list value is #1\par
>   \stopprocesscommalist
>
> but why is there not something equivalent for the normal
> processcommalist because the start/stop
> method is not the best method when you need nested lists, something like
> this would be nice then
> (I know \doprocesscommalist is already defined):
>
>   \doprocesscommalist[a,b,c,...]%
>     {\processcommalist[x,y,z,...]%
>        {do something with #1 and ##1}}

hm, probably possible but not trivial (maybe not even robust) ... needs
thinking (also a bit slower as we explicitly need a trick similar to the
one used in dorecurse

>
> 3. setups
>
> The various start/stopsetups environments another nice feature but
> what's the correct method when
> I want my own setup environment, should I adapt the following line from
> core-env to my own command
>
>   \def\startsetups     {\xxstartsetups\plusone  \stopsetups     }
> \let\stopsetups     \relax
>
> and use method from lxml-ini to access/flush the content?

you mean that you want to pass an argument to a setup? (mandate in
xmlsetup)

> 4. Mixed assignment/comma lists
>
> Are mixed lists of normal comma elements and assignments are allowed by
> ConTeXt’s syntax because
> there is a command in the source (\processassignlist) to process the non
> assignment values from
> the list? On the other side these values generate a error message on the
> terminal where one can read
> there is a missing '=' in the element and this message can't be disabled
> (without hacks).

yeah, a matter of choice ... we can drop the message if users don't mind

we shouldn't end up with too many variants and personally i don't like
the mix (i.e. foo==yes can be used)

Hans

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