Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
patch 8.1.0067: syntax highlighting not working when re-entering a bu…
…ffer
Problem: Syntax highlighting not working when re-entering a buffer.
Solution: Do force executing autocommands when not called recursively.
- Loading branch information
Showing
with
19 additions
and
9 deletions.
-
+17
−9
src/option.c
-
+2
−0
src/version.c
|
@@ -7567,24 +7567,32 @@ did_set_string_option( |
|
|
/* When 'syntax' is set, load the syntax of that name */ |
|
|
if (varp == &(curbuf->b_p_syn)) |
|
|
{ |
|
|
// Only pass TRUE for "force" when the value changed, to avoid |
|
|
// endless recurrence. */ |
|
|
apply_autocmds(EVENT_SYNTAX, curbuf->b_p_syn, |
|
|
curbuf->b_fname, value_changed, curbuf); |
|
|
static int syn_recursive = 0; |
|
|
|
|
|
++syn_recursive; |
|
|
// Only pass TRUE for "force" when the value changed or not used |
|
|
// recursively, to avoid endless recurrence. |
|
|
apply_autocmds(EVENT_SYNTAX, curbuf->b_p_syn, curbuf->b_fname, |
|
|
value_changed || syn_recursive == 1, curbuf); |
|
|
--syn_recursive; |
|
|
} |
|
|
#endif |
|
|
else if (varp == &(curbuf->b_p_ft)) |
|
|
{ |
|
|
/* 'filetype' is set, trigger the FileType autocommand. |
|
|
* Skip this when called from a modeline and the filetype was |
|
|
* already set to this value. |
|
|
* Only pass TRUE for "force" when the value changed, to avoid |
|
|
* endless recurrence. */ |
|
|
* already set to this value. */ |
|
|
if (!(opt_flags & OPT_MODELINE) || value_changed) |
|
|
{ |
|
|
static int ft_recursive = 0; |
|
|
|
|
|
++ft_recursive; |
|
|
did_filetype = TRUE; |
|
|
apply_autocmds(EVENT_FILETYPE, curbuf->b_p_ft, |
|
|
curbuf->b_fname, value_changed, curbuf); |
|
|
// Only pass TRUE for "force" when the value changed or not |
|
|
// used recursively, to avoid endless recurrence. |
|
|
apply_autocmds(EVENT_FILETYPE, curbuf->b_p_ft, curbuf->b_fname, |
|
|
value_changed || ft_recursive == 1, curbuf); |
|
|
--ft_recursive; |
|
|
/* Just in case the old "curbuf" is now invalid. */ |
|
|
if (varp != &(curbuf->b_p_ft)) |
|
|
varp = NULL; |
|
|
|
@@ -761,6 +761,8 @@ static char *(features[]) = |
|
|
|
|
|
static int included_patches[] = |
|
|
{ /* Add new patch number below this line */ |
|
|
/**/ |
|
|
67, |
|
|
/**/ |
|
|
66, |
|
|
/**/ |
|
|