summaryrefslogtreecommitdiff
path: root/source/luametatex/source/tex/texequivalents.c
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2022-12-21 18:00:37 +0100
committerContext Git Mirror Bot <phg@phi-gamma.net>2022-12-21 18:00:37 +0100
commit36355f3d0c23357fccf2c76b3e9605a41cae519d (patch)
tree7b2bfa701a21ed8b075deba24112583461706770 /source/luametatex/source/tex/texequivalents.c
parent8f472c629a996f1c08281198210354a253d7f56b (diff)
downloadcontext-36355f3d0c23357fccf2c76b3e9605a41cae519d.tar.gz
2022-12-21 17:12:00
Diffstat (limited to 'source/luametatex/source/tex/texequivalents.c')
-rw-r--r--source/luametatex/source/tex/texequivalents.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/source/luametatex/source/tex/texequivalents.c b/source/luametatex/source/tex/texequivalents.c
index 223e46e15..d91663dd3 100644
--- a/source/luametatex/source/tex/texequivalents.c
+++ b/source/luametatex/source/tex/texequivalents.c
@@ -569,6 +569,9 @@ void tex_show_save_groups(void)
case vtop_group:
package = "vtop";
break;
+ case dbox_group:
+ package = "dbox";
+ break;
case align_group:
if (alignmentstate == 0) {
package = (mode == -vmode) ? "halign" : "valign";
@@ -1176,6 +1179,37 @@ void tex_define(int g, halfword p, singleword t, halfword e) /* int g -> singlew
}
}
+void tex_define_again(int g, halfword p, singleword t, halfword e) /* int g -> singleword g */
+{
+ if (tracing_assigns_par > 0) {
+ singleword f = make_eq_flag_bits(g);
+ if (is_global(g)) {
+ /* what if already global */
+ tex_aux_diagnostic_trace(p, "globally changing");
+ // if (tex_aux_equal_eq(p, t, f, e) && (eq_level(p) == level_one)) {
+ // return; /* we can save some stack */
+ // }
+ tex_aux_eq_destroy(lmt_hash_state.eqtb[p]);
+ tex_aux_set_eq_data(p, t, e, f, level_one);
+ } else if (tex_aux_equal_eq(p, t, f, e)) {
+ /* hm, we tweak the ref ! */
+ tex_aux_diagnostic_trace(p, "reassigning");
+ } else {
+ tex_aux_diagnostic_trace(p, "changing");
+ if (eq_level(p) == cur_level) {
+ tex_aux_eq_destroy(lmt_hash_state.eqtb[p]);
+ } else if (cur_level > level_one) {
+ tex_aux_eq_save(p, eq_level(p));
+ }
+ tex_aux_set_eq_data(p, t, e, f, cur_level);
+ }
+ tex_aux_diagnostic_trace(p, "into");
+ } else {
+ set_eq_type(p, t);
+ set_eq_value(p, e);
+ }
+}
+
void tex_define_inherit(int g, halfword p, singleword f, singleword t, halfword e)
{
int trace = tracing_assigns_par > 0;