summaryrefslogtreecommitdiffstats
path: root/src/syntax.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/syntax.c')
-rw-r--r--src/syntax.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/syntax.c b/src/syntax.c
index e99f097439..4956aec449 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -437,17 +437,21 @@ syntax_start(wp, lnum)
linenr_T parsed_lnum;
linenr_T first_stored;
int dist;
+ static int changedtick = 0; /* remember the last change ID */
reg_syn = TRUE; /* let vim_regexec() know we're using syntax */
/*
* After switching buffers, invalidate current_state.
+ * Also do this when a change was made, the current state may be invalid
+ * then.
*/
- if (syn_buf != wp->w_buffer)
+ if (syn_buf != wp->w_buffer || changedtick != syn_buf->b_changedtick)
{
invalidate_current_state();
syn_buf = wp->w_buffer;
}
+ changedtick = syn_buf->b_changedtick;
syn_win = wp;
/*
@@ -7392,7 +7396,7 @@ get_attr_entry(table, aep)
return i + ATTR_OFF;
}
- if (table->ga_len + ATTR_OFF == 256)
+ if (table->ga_len + ATTR_OFF >= 256)
{
/*
* Running out of attribute entries! remove all attributes, and