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 _____________________________________________________________________ ______________