On 8/01/19 1:37 PM, Stanislav Sokolenko wrote:
Dear list,
As the subject line states, I am looking for a means of retrieving a table of all saved buffer names from lua. A MNWE would looks like:
It's not so easy because ConTeXt stores the buffers in a local variable `cache` which is an upvalue for all the other functions. However, you can use the Lua `debug` library to access upvalues. I access the first upvalue of `buffers.erase`, because it only has a single upvalue which is `cache`. Then I can easily extract all the names from that. You can't get them in the order of declaration because `cache` is a hashmap and not an array. Moreover, ConTeXt is usually in sandboxing mode. To get access to the `debug` library you have to run ConTeXt with context --debug test.tex MWE: \starttext \startbuffer[ex1] Buffer 1 \stopbuffer \startbuffer[ex2] Buffer 2 \stopbuffer % Should return {ex1, ex2} or similar \startluacode local _, cache = debug.getupvalue(buffers.erase,1) local names = {} for name,_ in pairs(cache) do names[#names+1] = name end context(table.concat(names,", ")) \stopluacode \stoptext
\starttext \startbuffer[ex1] Buffer 1 \stopbuffer \startbuffer[ex2] Buffer 2 \stopbuffer % Should return {ex1, ex2} or similar \ctxlua{context(...)} \stoptext
The underlying idea is to store a large number of example problems in individual buffers that could be retrieved either by specific name or as a complete list. I'm having a problem with the latter as it seems like all the lua buffer commands I've encountered assume that buffer names are known in advance:
buffers.getcontent(b) buffers.raw(b) buffers.getlines(b) buffers.erase(b) buffers.assign(b, text, catcodes) buffers.append(b, text) buffers.exists(b) buffers.collectcontent(names, seperator)
Thanks,
Stan
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net ___________________________________________________________________________________