From d80f4cc71caa321a933fdcda298425c914cdeb41 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Mon, 2 Mar 1998 02:40:53 +0000 Subject: [PATCH] (update_syntax_table): Properly update `position' field of used intervals. --- src/syntax.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/syntax.c b/src/syntax.c index 1b05ed57204..4ac1c8d1b83 100644 --- a/src/syntax.c +++ b/src/syntax.c @@ -130,6 +130,21 @@ update_syntax_table (charpos, count, init, object) invalidate = 0; if (NULL_INTERVAL_P (i)) return; + /* interval_of () updates only ->position of the return value, + update the parents manually to speed up update_interval. */ + while (!NULL_PARENT (i)) + { + if (AM_RIGHT_CHILD (i)) + i->parent->position = i->position + - LEFT_TOTAL_LENGTH (i) + TOTAL_LENGTH (i) /* right end */ + - TOTAL_LENGTH (i->parent) + + LEFT_TOTAL_LENGTH (i->parent); + else + i->parent->position = i->position - LEFT_TOTAL_LENGTH (i) + + TOTAL_LENGTH (i); + i = i->parent; + } + i = gl_state.forward_i; gl_state.b_property = i->position - 1 - gl_state.offset; gl_state.e_property = INTERVAL_LAST_POS (i) - gl_state.offset; goto update; -- 2.39.2