refactor(optionstr.c): break up did_set_string_option 23

This commit is contained in:
Lewis Russell
2023-01-19 10:33:22 +00:00
parent ccaed94475
commit 3fbc5f9860

View File

@@ -1205,6 +1205,20 @@ static void did_set_option_listflags(buf_T *buf, win_T *win, char **varp, char *
} }
} }
// When 'syntax' is set, load the syntax of that name
static void did_set_syntax(buf_T *buf, bool value_changed)
{
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, buf->b_p_syn, buf->b_fname,
value_changed || syn_recursive == 1, buf);
buf->b_flags |= BF_SYN_SET;
syn_recursive--;
}
/// Handle string options that need some action to perform when changed. /// Handle string options that need some action to perform when changed.
/// The new value must be allocated. /// The new value must be allocated.
/// ///
@@ -1719,17 +1733,8 @@ char *did_set_string_option(int opt_idx, char **varp, char *oldval, char *errbuf
} }
// Trigger the autocommand only after setting the flags. // Trigger the autocommand only after setting the flags.
// When 'syntax' is set, load the syntax of that name
if (varp == &(curbuf->b_p_syn)) { if (varp == &(curbuf->b_p_syn)) {
static int syn_recursive = 0; did_set_syntax(curbuf, value_changed);
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);
curbuf->b_flags |= BF_SYN_SET;
syn_recursive--;
} else if (varp == &(curbuf->b_p_ft)) { } else if (varp == &(curbuf->b_p_ft)) {
// 'filetype' is set, trigger the FileType autocommand // 'filetype' is set, trigger the FileType autocommand
// Skip this when called from a modeline and the filetype was // Skip this when called from a modeline and the filetype was