On Sun, Oct 17, 2010 at 10:24, Hans Hagen wrote: > On 17-10-2010 4:06, Tad Ashlock wrote: > > I'm trying to update a ConTeXt module of mine. It does some data >> gathering >> during the ConTeXt run, and then processes it after the run is complete. >> This used to work last year: >> >> local id, err = callback.register('stop_run', new_stop_run_function) >> >> But now err is set to "callback 'stop_run' is frozen (actions performed at >> the end of a run)". >> > > indeed > > > After trying various approaches for a couple of hours, I'm calling for >> help. >> :) >> > > Here's what I ended up with: >> >> \startluacode >> print('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TEST1') >> local function after_run (head, groupcode) >> print('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TEST2') >> return head, true >> end >> nodes.tasks.appendaction('finalizers','after','after_run') >> \stopluacode >> \starttext >> \input knuth >> \stoptext >> >> In the output, I see the TEST1 line, but not the TEST2 line. >> > > because after_run is not seen, > > function myprivatenamespace.after_run ... > > > nodes.tasks.appendaction('finalizers','after','myprivatenamespace.after_run') > > > I don't know what "head" and "groupcode" are, but those seem to be the >> expected parameters for an action. I don't know why it returns "head, >> true", but that was recommended in a posting ( >> http://archive.contextgarden.net/message/20100410.005025.76ac9efd.en.html >> ). >> > > whatever, it's not the place to hook in your finalizer as there finalizers > are just a specific place in node list processing > > > I have no idea if 'finalizers' is the right parameter, but I didn't see >> any >> others that looked like it could be synonymous with 'stop_run'. >> > > You can use (preferable no messages there): > > luatex.registerstopactions(yourfunction) > > or for messages: > > statistics.register("banner",function() return "text" end) > > in this case returning false (or nil) will not show the statistic which > makes sense if there's nothing useful to report. > > At some point there will be a formal description for this. > > Hans > > ----------------------------------------------------------------- > Hans Hagen | PRAGMA ADE > Ridderstraat 27 | 8061 GH Hasselt | The Netherlands > tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com > | www.pragma-pod.nl > ----------------------------------------------------------------- > Hans, The registerstopactions() function was the solution I was looking for, but I've verified that both of the solutions work as expected. I tested them with both a single ConTeXt source file and a set of files in a Project -> Product -> Component structure. I'll wiki this soon. Thanks, Tad