From: Richard M. Stallman Date: Mon, 2 Mar 1998 02:40:53 +0000 (+0000) Subject: (update_syntax_table): Properly update `position' field of used intervals. X-Git-Tag: emacs-20.3~2063 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=d80f4cc71caa321a933fdcda298425c914cdeb41;p=emacs.git (update_syntax_table): Properly update `position' field of used intervals. --- 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;