summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Gesang <phg42.2a@gmail.com>2013-05-07 18:05:45 +0200
committerPhilipp Gesang <phg42.2a@gmail.com>2013-05-07 18:05:45 +0200
commit7458a83c249fca6333e9486395363503b09e5321 (patch)
tree42c7cee918b1552a898a80e04689b96632660bb0
parentecd4cdef5b0c98dbaa4c6f0988e29f0c72e72b84 (diff)
downloadluatexbase-7458a83c249fca6333e9486395363503b09e5321.tar.gz
make user whatsit generators accept an optional argument of type node
-rw-r--r--luatexbase-attr.dtx18
1 files changed, 16 insertions, 2 deletions
diff --git a/luatexbase-attr.dtx b/luatexbase-attr.dtx
index aa5e987..ed60cf7 100644
--- a/luatexbase-attr.dtx
+++ b/luatexbase-attr.dtx
@@ -537,10 +537,24 @@ local new_user_whatsit = function (name, package)
local whatsit = newnode(whatsit_t, user_defined_t)
whatsit.user_id = id
--- unit -> node_t
- return function ( ) return copynode(whatsit) end, id
+ local generator = function (proto)
+ local res
+ if proto then
+ local proto_id = proto.user_id
+ if proto_id ~= id then --- mismatch
+ warning("overriding user_id %d of whatsit prototype (now: %d)",
+ proto.user_id, id)
+ end
+ res = copynode(proto)
+ res.user_id = id
+ else
+ res = copynode(whatsit)
+ end
+ return res
+ end
+ return generator, id
end
luatexbase.new_user_whatsit = new_user_whatsit
-luatexbase.new_user_whatsit_factory = new_user_whatsit --- for Stephan
% \end{macrocode}
%
% If one knows the name of a whatsit, its corresponding id