mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
refactor(options): make os_oldval
and os_newval
use OptValData
This commit is contained in:
parent
af010e23f3
commit
f1a58a8dcc
@ -3683,25 +3683,17 @@ static const char *set_option(const int opt_idx, void *varp, OptVal value, int o
|
|||||||
}
|
}
|
||||||
if (did_set_cb != NULL) {
|
if (did_set_cb != NULL) {
|
||||||
// TODO(famiu): make os_oldval and os_newval use OptVal.
|
// TODO(famiu): make os_oldval and os_newval use OptVal.
|
||||||
optset_T did_set_cb_args = (value.type == kOptValTypeNumber)
|
optset_T did_set_cb_args = {
|
||||||
? (optset_T){ .os_varp = varp,
|
.os_varp = varp,
|
||||||
.os_flags = opt_flags,
|
.os_flags = opt_flags,
|
||||||
.os_oldval.number = old_value.data.number,
|
.os_oldval = old_value.data,
|
||||||
.os_newval.number = value.data.number,
|
.os_newval = value.data,
|
||||||
.os_doskip = false,
|
.os_doskip = false,
|
||||||
.os_errbuf = NULL,
|
.os_errbuf = NULL,
|
||||||
.os_errbuflen = 0,
|
.os_errbuflen = 0,
|
||||||
.os_buf = curbuf,
|
.os_buf = curbuf,
|
||||||
.os_win = curwin }
|
.os_win = curwin
|
||||||
: (optset_T){ .os_varp = varp,
|
};
|
||||||
.os_flags = opt_flags,
|
|
||||||
.os_oldval.boolean = old_value.data.boolean,
|
|
||||||
.os_newval.boolean = value.data.boolean,
|
|
||||||
.os_doskip = false,
|
|
||||||
.os_errbuf = NULL,
|
|
||||||
.os_errbuflen = 0,
|
|
||||||
.os_buf = curbuf,
|
|
||||||
.os_win = curwin };
|
|
||||||
|
|
||||||
errmsg = did_set_cb(&did_set_cb_args);
|
errmsg = did_set_cb(&did_set_cb_args);
|
||||||
doskip = did_set_cb_args.os_doskip;
|
doskip = did_set_cb_args.os_doskip;
|
||||||
|
@ -17,16 +17,17 @@ typedef enum {
|
|||||||
kOptValTypeString,
|
kOptValTypeString,
|
||||||
} OptValType;
|
} OptValType;
|
||||||
|
|
||||||
|
typedef union {
|
||||||
|
// boolean options are actually tri-states because they have a third "None" value.
|
||||||
|
TriState boolean;
|
||||||
|
OptInt number;
|
||||||
|
String string;
|
||||||
|
} OptValData;
|
||||||
|
|
||||||
/// Option value
|
/// Option value
|
||||||
typedef struct {
|
typedef struct {
|
||||||
OptValType type;
|
OptValType type;
|
||||||
|
OptValData data;
|
||||||
union {
|
|
||||||
// boolean options are actually tri-states because they have a third "None" value.
|
|
||||||
TriState boolean;
|
|
||||||
OptInt number;
|
|
||||||
String string;
|
|
||||||
} data;
|
|
||||||
} OptVal;
|
} OptVal;
|
||||||
|
|
||||||
/// :set operator types
|
/// :set operator types
|
||||||
@ -46,19 +47,10 @@ typedef struct {
|
|||||||
int os_idx;
|
int os_idx;
|
||||||
int os_flags;
|
int os_flags;
|
||||||
|
|
||||||
/// old value of the option (can be a string, number or a boolean)
|
/// Old value of the option.
|
||||||
union {
|
OptValData os_oldval;
|
||||||
const OptInt number;
|
/// New value of the option.
|
||||||
const bool boolean;
|
OptValData os_newval;
|
||||||
const char *string;
|
|
||||||
} os_oldval;
|
|
||||||
|
|
||||||
/// new value of the option (can be a string, number or a boolean)
|
|
||||||
union {
|
|
||||||
const OptInt number;
|
|
||||||
const bool boolean;
|
|
||||||
const char *string;
|
|
||||||
} os_newval;
|
|
||||||
|
|
||||||
/// When set by the called function: Stop processing the option further.
|
/// When set by the called function: Stop processing the option further.
|
||||||
/// Currently only used for boolean options.
|
/// Currently only used for boolean options.
|
||||||
|
@ -860,7 +860,7 @@ int expand_set_backspace(optexpand_T *args, int *numMatches, char ***matches)
|
|||||||
const char *did_set_backupcopy(optset_T *args)
|
const char *did_set_backupcopy(optset_T *args)
|
||||||
{
|
{
|
||||||
buf_T *buf = (buf_T *)args->os_buf;
|
buf_T *buf = (buf_T *)args->os_buf;
|
||||||
const char *oldval = args->os_oldval.string;
|
const char *oldval = args->os_oldval.string.data;
|
||||||
int opt_flags = args->os_flags;
|
int opt_flags = args->os_flags;
|
||||||
char *bkc = p_bkc;
|
char *bkc = p_bkc;
|
||||||
unsigned *flags = &bkc_flags;
|
unsigned *flags = &bkc_flags;
|
||||||
@ -1459,7 +1459,7 @@ const char *did_set_fileformat(optset_T *args)
|
|||||||
{
|
{
|
||||||
buf_T *buf = (buf_T *)args->os_buf;
|
buf_T *buf = (buf_T *)args->os_buf;
|
||||||
char **varp = (char **)args->os_varp;
|
char **varp = (char **)args->os_varp;
|
||||||
const char *oldval = args->os_oldval.string;
|
const char *oldval = args->os_oldval.string.data;
|
||||||
int opt_flags = args->os_flags;
|
int opt_flags = args->os_flags;
|
||||||
if (!MODIFIABLE(buf) && !(opt_flags & OPT_GLOBAL)) {
|
if (!MODIFIABLE(buf) && !(opt_flags & OPT_GLOBAL)) {
|
||||||
return e_modifiable;
|
return e_modifiable;
|
||||||
@ -1512,7 +1512,7 @@ const char *did_set_filetype_or_syntax(optset_T *args)
|
|||||||
return e_invarg;
|
return e_invarg;
|
||||||
}
|
}
|
||||||
|
|
||||||
args->os_value_changed = strcmp(args->os_oldval.string, *varp) != 0;
|
args->os_value_changed = strcmp(args->os_oldval.string.data, *varp) != 0;
|
||||||
|
|
||||||
// Since we check the value, there is no need to set P_INSECURE,
|
// Since we check the value, there is no need to set P_INSECURE,
|
||||||
// even when the value comes from a modeline.
|
// even when the value comes from a modeline.
|
||||||
@ -2103,7 +2103,7 @@ const char *did_set_sessionoptions(optset_T *args)
|
|||||||
}
|
}
|
||||||
if ((ssop_flags & SSOP_CURDIR) && (ssop_flags & SSOP_SESDIR)) {
|
if ((ssop_flags & SSOP_CURDIR) && (ssop_flags & SSOP_SESDIR)) {
|
||||||
// Don't allow both "sesdir" and "curdir".
|
// Don't allow both "sesdir" and "curdir".
|
||||||
const char *oldval = args->os_oldval.string;
|
const char *oldval = args->os_oldval.string.data;
|
||||||
(void)opt_strings_flags(oldval, p_ssop_values, &ssop_flags, true);
|
(void)opt_strings_flags(oldval, p_ssop_values, &ssop_flags, true);
|
||||||
return e_invarg;
|
return e_invarg;
|
||||||
}
|
}
|
||||||
@ -2224,7 +2224,7 @@ const char *did_set_signcolumn(optset_T *args)
|
|||||||
{
|
{
|
||||||
win_T *win = (win_T *)args->os_win;
|
win_T *win = (win_T *)args->os_win;
|
||||||
char **varp = (char **)args->os_varp;
|
char **varp = (char **)args->os_varp;
|
||||||
const char *oldval = args->os_oldval.string;
|
const char *oldval = args->os_oldval.string.data;
|
||||||
if (check_signcolumn(*varp) != OK) {
|
if (check_signcolumn(*varp) != OK) {
|
||||||
return e_invarg;
|
return e_invarg;
|
||||||
}
|
}
|
||||||
@ -2578,7 +2578,7 @@ const char *did_set_virtualedit(optset_T *args)
|
|||||||
} else {
|
} else {
|
||||||
if (opt_strings_flags(ve, p_ve_values, flags, true) != OK) {
|
if (opt_strings_flags(ve, p_ve_values, flags, true) != OK) {
|
||||||
return e_invarg;
|
return e_invarg;
|
||||||
} else if (strcmp(ve, args->os_oldval.string) != 0) {
|
} else if (strcmp(ve, args->os_oldval.string.data) != 0) {
|
||||||
// Recompute cursor position in case the new 've' setting
|
// Recompute cursor position in case the new 've' setting
|
||||||
// changes something.
|
// changes something.
|
||||||
validate_virtcol_win(win);
|
validate_virtcol_win(win);
|
||||||
@ -2753,8 +2753,8 @@ const char *did_set_string_option(buf_T *buf, win_T *win, int opt_idx, char **va
|
|||||||
.os_varp = varp,
|
.os_varp = varp,
|
||||||
.os_idx = opt_idx,
|
.os_idx = opt_idx,
|
||||||
.os_flags = opt_flags,
|
.os_flags = opt_flags,
|
||||||
.os_oldval.string = oldval,
|
.os_oldval.string = cstr_as_string(oldval),
|
||||||
.os_newval.string = *varp,
|
.os_newval.string = cstr_as_string(*varp),
|
||||||
.os_value_checked = false,
|
.os_value_checked = false,
|
||||||
.os_value_changed = false,
|
.os_value_changed = false,
|
||||||
.os_restore_chartab = false,
|
.os_restore_chartab = false,
|
||||||
|
Loading…
Reference in New Issue
Block a user