On 18/09/2010, at 7:04 AM, Uwe Lueck wrote:

> Will Robertson <[log in to unmask]>, 17.09.2010 07:21:30:
>> 
>> \def\foo{...
>>  \lccode`#1=`\~
> 
> ! Illegal parameter number in definition of \foo.
> 
> And according to my own experience, it must be \lccode`\~=`#1..., 
> cf. doc.sty \@sverb/\do@noligs and below.

Oops, yes, that's of course what I meant :) I was writing off the cuff (and the \def\foo was implied to be inside another macro, say).


On 18/09/2010, at 9:03 AM, Heiko Oberdiek wrote:

>    \providecommand*{\MakeActiveDef}[1]{%
>      \catcode`#1\active
>      \begingroup
>        \lccode`\~`#1%
>        \lowercase{\endgroup \def ~}%
>    }


Ah, this is nice. Better than what I was thinking of as you no longer need a stray active character floating around.

I've added these tentatively to expl3 in the "candidates" module under the names \char_active_set:Npn, \char_active_set_eq:NN, and so on.

Thanks Uwe and Heiko,
-- Will