if not modules then modules = { } end modules ['node-par'] = { version = 1.001, comment = "companion to node-ini.mkiv", author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", copyright = "PRAGMA ADE / ConTeXt Development Team", license = "see context related readme files" } local sequencers = utilities.sequencers -- This is called a lot! I'm a bit reluctant with this one because it is sensitive -- for order. In many other callbacks there is no action at the tex end but here ... -- Anyway, it has been around for a while now (2019) and so far I had no need for -- extensive usage so we're okay. do local insert_par_callback = nodes.tasks.actions("everypar") callbacks.register { name = "insert_par", action = insert_par_callback, comment = "after paragraph start", frozen = true, } end -- Originally this one was meant to deal with the indentation (like turn a box into -- a skip or prevent it) but that never really was used. The return value still -- determines if an indentation box or skip is injected. Will I change that? do local id, enable, disable = callbacks.optimizer("begin_paragraph") local actions = sequencers.new { name = "paragraph", arguments = "mode,indented,context", returnvalues = "indented", results = "indented", enable = enable, disable = disable, } sequencers.appendgroup(actions,"before") -- user sequencers.appendgroup(actions,"system") -- private sequencers.appendgroup(actions,"after" ) -- user local function begin_paragraph_callback(mode,indented,context) -- context used to be the cmd code local runner = actions.runner if runner then indented = runner(mode,indented,context) end return indented end callbacks.register { name = "begin_paragraph", action = begin_paragraph_callback, comment = "before paragraph start", frozen = true, } end -- This one is a playground for some old metafun gimmicks that I want to improve -- while I'm updating the manual to lmtx. but it might also be useful for other -- purposes. It fits in the category obscure and probably takes while to stabelize -- (if it stays at all). Again, this is one that has the danger of interference, -- so when it finally got an action handler it only got a system one. do local id, enable, disable = callbacks.optimizer("paragraph_context") local actions = sequencers.new { name = "paragraphcontext", arguments = "context", returnvalues = "ignore", results = "ignore", enable = enable, disable = disable, } ----------.appendgroup(actions,"before") -- user sequencers.appendgroup(actions,"system") -- private ----------.appendgroup(actions,"after" ) -- user local function paragraph_context_callback(parcontext) local runner = actions.runner if runner then return runner(parcontext) -- returns ignore end end callbacks.register { name = "paragraph_context", action = paragraph_context_callback, comment = "when the context is dealt with", frozen = true, } end