Manuel Pégourié-Gonnard wrote:
> Maybe I confused pre/post in my previous message. I always meant post-grabbing
> and pre-actual-function-call processing :-)

I guessed that was the case: just wanted to be 100 % clear.

>> (2) + for \long, upper-case for defaults on optional arguments:
>>
>> \DeclareDocumentCommand \foo { o           >\MakeHarmless +m }
>> \DeclareDocumentCommand \foo { O{default}  >\MakeHarmless +m }
>> \DeclareDocumentCommand \foo { +o          >\MakeHarmless +m }
>> \DeclareDocumentCommand \foo { +O{default} >\MakeHarmless +m }

[snip]

> I'm in favour of option 2. It looks more "extensible", if extensions are ever
> needed in the future.

I think this is the consensus view: I'm going to look at doing this
(really pretty close to what xparse has anyway).

> OTOH, as you mentioned in another message, it would be very interesting to
> detect trivial cases like only 'm' arguments and use the trivial (hence purely
> expandable) parser in this case with DeclareDocumentCommand.

I'm viewing "only m" as a rather special case, as there is clearly no
need for extra processing.  The only place this shows up, I think, is as
you point out when TeX is looking for an \omit.
-- 
Joseph Wright