On Fri, 2023-01-27 at 11:01 +0100, Hans Hagen via ntg-context wrote: > On 1/27/2023 10:35 AM, Henri Menke via ntg-context wrote: > > > Thanks, this is indeed the workaround that I currently use. > > However, > > the downside is that this has to tokenize the contents of > > \directlua > > every time (and is therefore susceptible to surrounding \catcode > > shenanigans) and it expands in at minimum two steps, whereas a > > luacall > > always expands in a single step. But I guess that's what I will > > have to > > live with. > on my 2018 laptop, with > > function FoO() end > > this > > \directlua{FoO()}} > > takes 0.0000014 seconds so probably the least of your worries > compared > to other macro and lua magic
True, but then there is still the problem with the number of expansions. With a nested \directlua I always need at least two steps to get the result from Lua. \directlua{ function TestCmd() tex.print("\string\\numexpr 17\string\\relax") end lua.get_functions_table()[999] = TestCmd } \let\:\expandafter % I'm lazy \tt \directlua{token.set_lua("test", 999)} \:\def\:\x\:{\test}\meaning\x % macro:->\numexpr 17\relax \protected\def\test{\directlua{TestCmd()}} \:\def\:\x\:{\test}\meaning\x\par % macro:->\directlua {TestCmd()} \:\:\:\def\:\:\:\x\:\:\:{\test}\meaning\x % macro:->\numexpr 17\relax \bye How much do you think would break if protected luacall were treated like protected macros after \the in the engine? That would probably need an extra branch in the switch(cur_cmd) in scan_something_internal. Currently protected luacall just goes to the default branch (You can't use ...). Cheers, Henri > > Hans > > ----------------------------------------------------------------- > Hans Hagen | PRAGMA ADE > Ridderstraat 27 | 8061 GH Hasselt | The Netherlands > tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl > ----------------------------------------------------------------- > > _____________________________________________________________________ > ______________ > If your question is of interest to others as well, please add an > entry to the Wiki! > > maillist : ntg-context@ntg.nl / > https://www.ntg.nl/mailman/listinfo/ntg-context > webpage : https://www.pragma-ade.nl / http://context.aanhet.net > archive : https://bitbucket.org/phg/context-mirror/commits/ > wiki : https://contextgarden.net > _____________________________________________________________________ > ______________ ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / https://www.ntg.nl/mailman/listinfo/ntg-context webpage : https://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : https://contextgarden.net ___________________________________________________________________________________