mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
refactor(option): pass varp to set_string_option
This commit is contained in:
parent
af3c667ac1
commit
038ac39b8e
@ -3828,7 +3828,7 @@ const char *set_option_value(const char *const name, const OptVal value, int opt
|
||||
break;
|
||||
}
|
||||
case kOptValTypeString: {
|
||||
errmsg = set_string_option(opt_idx, v.data.string.data, opt_flags, &value_checked, errbuf,
|
||||
errmsg = set_string_option(opt_idx, varp, v.data.string.data, opt_flags, &value_checked, errbuf,
|
||||
sizeof(errbuf));
|
||||
break;
|
||||
}
|
||||
|
@ -429,19 +429,14 @@ void set_string_option_direct_in_buf(buf_T *buf, const char *name, int opt_idx,
|
||||
/// #OPT_GLOBAL.
|
||||
///
|
||||
/// @return NULL on success, an untranslated error message on error.
|
||||
const char *set_string_option(const int opt_idx, const char *value, const int opt_flags,
|
||||
bool *value_checked, char *const errbuf, const size_t errbuflen)
|
||||
const char *set_string_option(const int opt_idx, void *varp_arg, const char *value,
|
||||
const int opt_flags, bool *value_checked, char *const errbuf,
|
||||
const size_t errbuflen)
|
||||
FUNC_ATTR_WARN_UNUSED_RESULT
|
||||
{
|
||||
vimoption_T *opt = get_option(opt_idx);
|
||||
|
||||
if (value == NULL) {
|
||||
value = "";
|
||||
}
|
||||
|
||||
char **varp = (char **)get_varp_scope(opt, ((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0
|
||||
? ((opt->indir & PV_BOTH) ? OPT_GLOBAL : OPT_LOCAL)
|
||||
: opt_flags));
|
||||
void *varp = (char **)varp_arg;
|
||||
char *origval_l = NULL;
|
||||
char *origval_g = NULL;
|
||||
|
||||
@ -450,11 +445,11 @@ const char *set_string_option(const int opt_idx, const char *value, const int op
|
||||
// reset, use the global value here.
|
||||
if ((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0
|
||||
&& ((int)opt->indir & PV_BOTH)) {
|
||||
varp = (char **)opt->var;
|
||||
varp = opt->var;
|
||||
}
|
||||
|
||||
// The old value is kept until we are sure that the new value is valid.
|
||||
char *const oldval = *varp;
|
||||
char *oldval = *(char **)varp;
|
||||
|
||||
if ((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0) {
|
||||
origval_l = *(char **)get_varp_scope(opt, OPT_LOCAL);
|
||||
@ -476,7 +471,7 @@ const char *set_string_option(const int opt_idx, const char *value, const int op
|
||||
origval = oldval;
|
||||
}
|
||||
|
||||
*varp = xstrdup(value);
|
||||
*(char **)varp = xstrdup(value != NULL ? value : empty_option);
|
||||
|
||||
char *const saved_origval = (origval != NULL) ? xstrdup(origval) : NULL;
|
||||
char *const saved_oldval_l = (origval_l != NULL) ? xstrdup(origval_l) : 0;
|
||||
@ -484,7 +479,7 @@ const char *set_string_option(const int opt_idx, const char *value, const int op
|
||||
|
||||
// newval (and varp) may become invalid if the buffer is closed by
|
||||
// autocommands.
|
||||
char *const saved_newval = xstrdup(*varp);
|
||||
char *const saved_newval = xstrdup(*(char **)varp);
|
||||
|
||||
const int secure_saved = secure;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user