refactor(option.c): call did_set_option for all types

set_option_value() only called did_set_option() for string options,
whereas do_set_option_value() called it for all types.

This change makes set_option_value() call did_set_option() for all types
and thus makes it more consistent with do_set_option_value().
This commit is contained in:
Lewis Russell 2023-07-12 14:54:13 +01:00
parent 804c828e68
commit 354a115442
2 changed files with 10 additions and 9 deletions

View File

@ -1598,7 +1598,7 @@ int do_set(char *arg, int opt_flags)
/// @param opt_flags possibly with OPT_MODELINE /// @param opt_flags possibly with OPT_MODELINE
/// @param new_value value was replaced completely /// @param new_value value was replaced completely
/// @param value_checked value was checked to be safe, no need to set P_INSECURE /// @param value_checked value was checked to be safe, no need to set P_INSECURE
void did_set_option(int opt_idx, int opt_flags, int new_value, int value_checked) void did_set_option(int opt_idx, int opt_flags, bool new_value, bool value_checked)
{ {
options[opt_idx].flags |= P_WAS_SET; options[opt_idx].flags |= P_WAS_SET;
@ -3793,6 +3793,8 @@ const char *set_option_value(const char *const name, const OptVal value, int opt
goto end; goto end;
} }
int value_checked = false;
switch (v.type) { switch (v.type) {
case kOptValTypeNil: case kOptValTypeNil:
abort(); // This will never happen. abort(); // This will never happen.
@ -3825,11 +3827,15 @@ const char *set_option_value(const char *const name, const OptVal value, int opt
if (s == NULL || opt_flags & OPT_CLEAR) { if (s == NULL || opt_flags & OPT_CLEAR) {
s = ""; s = "";
} }
errmsg = set_string_option(opt_idx, s, opt_flags, errbuf, sizeof(errbuf)); errmsg = set_string_option(opt_idx, s, opt_flags, &value_checked, errbuf, sizeof(errbuf));
break; break;
} }
} }
if (errmsg != NULL) {
did_set_option(opt_idx, opt_flags, true, value_checked);
}
end: end:
optval_free(v); // Free the copied OptVal. optval_free(v); // Free the copied OptVal.
return errmsg; return errmsg;

View File

@ -428,7 +428,7 @@ void set_string_option_direct_in_buf(buf_T *buf, const char *name, int opt_idx,
/// ///
/// @return NULL on success, an untranslated error message on error. /// @return NULL on success, an untranslated error message on error.
const char *set_string_option(const int opt_idx, const char *const value, const int opt_flags, const char *set_string_option(const int opt_idx, const char *const value, const int opt_flags,
char *const errbuf, const size_t errbuflen) int *value_checked, char *const errbuf, const size_t errbuflen)
FUNC_ATTR_NONNULL_ARG(2) FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ARG(2) FUNC_ATTR_WARN_UNUSED_RESULT
{ {
vimoption_T *opt = get_option(opt_idx); vimoption_T *opt = get_option(opt_idx);
@ -457,13 +457,8 @@ const char *set_string_option(const int opt_idx, const char *const value, const
char *const saved_oldval_g = (oldval_g != NULL) ? xstrdup(oldval_g) : 0; char *const saved_oldval_g = (oldval_g != NULL) ? xstrdup(oldval_g) : 0;
char *const saved_newval = xstrdup(*varp); char *const saved_newval = xstrdup(*varp);
int value_checked = false;
const char *const errmsg = did_set_string_option(curbuf, curwin, opt_idx, varp, oldval, errbuf, const char *const errmsg = did_set_string_option(curbuf, curwin, opt_idx, varp, oldval, errbuf,
errbuflen, opt_flags, &value_checked); errbuflen, opt_flags, value_checked);
if (errmsg == NULL) {
did_set_option(opt_idx, opt_flags, true, value_checked);
}
// call autocommand after handling side effects // call autocommand after handling side effects
if (errmsg == NULL) { if (errmsg == NULL) {
if (!starting) { if (!starting) {