summaryrefslogtreecommitdiff
path: root/macros/luatex/generic/minim/minim-hooks.lua
diff options
context:
space:
mode:
Diffstat (limited to 'macros/luatex/generic/minim/minim-hooks.lua')
-rw-r--r--macros/luatex/generic/minim/minim-hooks.lua30
1 files changed, 30 insertions, 0 deletions
diff --git a/macros/luatex/generic/minim/minim-hooks.lua b/macros/luatex/generic/minim/minim-hooks.lua
new file mode 100644
index 0000000000..c399547c9e
--- /dev/null
+++ b/macros/luatex/generic/minim/minim-hooks.lua
@@ -0,0 +1,30 @@
+
+-- Adds a callback just before a box is shipped out, opposite to
+-- 'finish_pdfpage'.
+
+local alloc = require('minim-alloc')
+local cb = require ('minim-callbacks')
+alloc.remember('minim-hooks')
+
+local M = { }
+
+cb.new_callback('pre_shipout', 'simple')
+
+M.primitive_shipout = tex.shipout
+function tex.shipout(nr)
+ cb.call_callback('pre_shipout', nr)
+ M.primitive_shipout(nr)
+end
+
+local shipout_box = alloc.new_box('minim:shipout:box')
+
+alloc.luadef('minim:shipout', function()
+ tex.box[shipout_box] = token.scan_list()
+ cb.call_callback('pre_shipout', shipout_box)
+ -- we must let tex do the rest, because some other package may have
+ -- redefined \shipout before us.
+ tex.sprint(token.create('minim:shipout:do'))
+end, 'protected')
+
+return M
+