patch 8.0.1133: syntax timeout not used correctly
Problem: Syntax timeout not used correctly.
Solution: Do not pass the timeout to syntax_start() but set it explicitly.
(Yasuhiro Matsumoto, closes #2139)
diff --git a/src/syntax.c b/src/syntax.c
index 6361bd7..d9a7b4f 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -368,7 +368,7 @@
static buf_T *syn_buf; /* current buffer for highlighting */
static synblock_T *syn_block; /* current buffer for highlighting */
#ifdef FEAT_RELTIME
-static proftime_T *syn_tm;
+static proftime_T *syn_tm; /* timeout limit */
#endif
static linenr_T current_lnum = 0; /* lnum of current state */
static colnr_T current_col = 0; /* column of current state */
@@ -489,6 +489,18 @@
static void syn_combine_list(short **clstr1, short **clstr2, int list_op);
static void syn_incl_toplevel(int id, int *flagsp);
+#if defined(FEAT_RELTIME) || defined(PROTO)
+/*
+ * Set the timeout used for syntax highlighting.
+ * Use NULL to reset, no timeout.
+ */
+ void
+syn_set_timeout(proftime_T *tm)
+{
+ syn_tm = tm;
+}
+#endif
+
/*
* Start the syntax recognition for a line. This function is normally called
* from the screen updating, once for each displayed line.
@@ -497,7 +509,7 @@
* window.
*/
void
-syntax_start(win_T *wp, linenr_T lnum, proftime_T *syntax_tm UNUSED)
+syntax_start(win_T *wp, linenr_T lnum)
{
synstate_T *p;
synstate_T *last_valid = NULL;
@@ -527,9 +539,6 @@
}
changedtick = CHANGEDTICK(syn_buf);
syn_win = wp;
-#ifdef FEAT_RELTIME
- syn_tm = syntax_tm;
-#endif
/*
* Allocate syntax stack when needed.
@@ -6569,7 +6578,7 @@
if (wp->w_buffer != syn_buf
|| lnum != current_lnum
|| col < current_col)
- syntax_start(wp, lnum, NULL);
+ syntax_start(wp, lnum);
else if (wp->w_buffer == syn_buf
&& lnum == current_lnum
&& col > current_col)
@@ -6645,7 +6654,7 @@
# endif
)
{
- syntax_start(wp, lnum, NULL);
+ syntax_start(wp, lnum);
for (i = 0; i < current_state.ga_len; ++i)
if (CUR_STATE(i).si_flags & HL_FOLD)
@@ -7006,7 +7015,7 @@
CENT("ToolbarLine term=underline ctermbg=LightGrey",
"ToolbarLine term=underline ctermbg=LightGrey guibg=LightGrey"),
CENT("ToolbarButton cterm=bold ctermfg=White ctermbg=DarkGrey",
- "ToolbarButton cterm=bold ctermfg=White ctermbg=DarkGrey gui=bold guifg=White guibg=DarkGrey"),
+ "ToolbarButton cterm=bold ctermfg=White ctermbg=DarkGrey gui=bold guifg=White guibg=Grey40"),
#endif
NULL
};
@@ -7102,7 +7111,7 @@
#endif
#ifdef FEAT_MENU
CENT("ToolbarLine term=underline ctermbg=DarkGrey",
- "ToolbarLine term=underline ctermbg=DarkGrey guibg=DarkGrey"),
+ "ToolbarLine term=underline ctermbg=DarkGrey guibg=Grey50"),
CENT("ToolbarButton cterm=bold ctermfg=Black ctermbg=LightGrey",
"ToolbarButton cterm=bold ctermfg=Black ctermbg=LightGrey gui=bold guifg=Black guibg=LightGrey"),
#endif