diff options
-rw-r--r-- | src/nvim/api/options.c | 3 | ||||
-rw-r--r-- | src/nvim/option.c | 15 | ||||
-rw-r--r-- | src/nvim/option_defs.h | 1 |
3 files changed, 7 insertions, 12 deletions
diff --git a/src/nvim/api/options.c b/src/nvim/api/options.c index e33cb72e8d..eb80683365 100644 --- a/src/nvim/api/options.c +++ b/src/nvim/api/options.c @@ -465,9 +465,6 @@ OptVal get_option_value_for(const char *const name, uint32_t *flagsp, int scope, /// @param[in] name Option name. /// @param[in] value Option value. /// @param[in] opt_flags Flags: OPT_LOCAL, OPT_GLOBAL, or 0 (both). -/// If OPT_CLEAR is set, the value of the option -/// is cleared (the exact semantics of this depend -/// on the option). /// @param[in] opt_type Option type. See SREQ_* in option_defs.h. /// @param[in] from Target buffer/window. /// @param[out] err Error message, if any. diff --git a/src/nvim/option.c b/src/nvim/option.c index c68355f5b1..6c869c26f0 100644 --- a/src/nvim/option.c +++ b/src/nvim/option.c @@ -3722,9 +3722,6 @@ vimoption_T *get_option(int opt_idx) /// @param[in] name Option name. /// @param[in] value Option value. If NIL_OPTVAL, the option value is cleared. /// @param[in] opt_flags Flags: OPT_LOCAL, OPT_GLOBAL, or 0 (both). -/// If OPT_CLEAR is set, the value of the option -/// is cleared (the exact semantics of this depend -/// on the option). /// /// @return NULL on success, an untranslated error message on error. const char *set_option_value(const char *const name, const OptVal value, int opt_flags) @@ -3765,9 +3762,11 @@ const char *set_option_value(const char *const name, const OptVal value, int opt // Copy the value so we can modify the copy. OptVal v = optval_copy(value); - if (v.type == kOptValTypeNil) { - opt_flags |= OPT_CLEAR; + // Clear an option. For global-local options clear the local value + // (the exact semantics of this depend on the option). + bool clear = v.type == kOptValTypeNil; + if (v.type == kOptValTypeNil) { // Change the type of the OptVal to the type used by the option so that it can be cleared. // TODO(famiu): Clean up all of this after set_(num|bool|string)_option() is unified. if (flags & P_BOOL) { @@ -3794,7 +3793,7 @@ const char *set_option_value(const char *const name, const OptVal value, int opt case kOptValTypeNil: abort(); // This will never happen. case kOptValTypeBoolean: { - if (opt_flags & OPT_CLEAR) { + if (clear) { if ((int *)varp == &curbuf->b_p_ar) { v.data.boolean = kNone; } else { @@ -3805,7 +3804,7 @@ const char *set_option_value(const char *const name, const OptVal value, int opt break; } case kOptValTypeNumber: { - if (opt_flags & OPT_CLEAR) { + if (clear) { if ((long *)varp == &curbuf->b_p_ul) { v.data.number = NO_LOCAL_UNDOLEVEL; } else if ((long *)varp == &curwin->w_p_so || (long *)varp == &curwin->w_p_siso) { @@ -3819,7 +3818,7 @@ const char *set_option_value(const char *const name, const OptVal value, int opt } case kOptValTypeString: { const char *s = v.data.string.data; - if (s == NULL || opt_flags & OPT_CLEAR) { + if (s == NULL || clear) { s = ""; } errmsg = set_string_option(opt_idx, s, opt_flags, &value_checked, errbuf, sizeof(errbuf)); diff --git a/src/nvim/option_defs.h b/src/nvim/option_defs.h index 313d282cef..1007925ccb 100644 --- a/src/nvim/option_defs.h +++ b/src/nvim/option_defs.h @@ -70,7 +70,6 @@ typedef enum { OPT_ONECOLUMN = 0x40, ///< list options one per line OPT_NO_REDRAW = 0x80, ///< ignore redraw flags on option OPT_SKIPRTP = 0x100, ///< "skiprtp" in 'sessionoptions' - OPT_CLEAR = 0x200, ///< Clear local value of an option. } OptionFlags; // Return value from get_option_value_strict |