mirror of
https://github.com/neovim/neovim.git
synced 2025-10-13 13:26:06 +00:00
refactor(options): reduce findoption()
usage
Problem: Many places in the code use `findoption()` to access an option using its name, even if the option index is available. This is very slow because it requires looping through the options array over and over. Solution: Use option index instead of name wherever possible. Also introduce an `OptIndex` enum which contains the index for every option as enum constants, this eliminates the need to pass static option names as strings.
This commit is contained in:
@@ -834,7 +834,7 @@ static char *ex_let_option(char *arg, typval_T *const tv, const bool is_const,
|
||||
}
|
||||
}
|
||||
|
||||
const char *err = set_option_value(arg, newval, scope);
|
||||
const char *err = set_option_value_handle_tty(arg, opt_idx, newval, scope);
|
||||
arg_end = p;
|
||||
if (err != NULL) {
|
||||
emsg(_(err));
|
||||
@@ -1945,15 +1945,18 @@ static void set_option_from_tv(const char *varname, typval_T *varp)
|
||||
semsg(_(e_unknown_option2), varname);
|
||||
return;
|
||||
}
|
||||
uint32_t opt_p_flags = get_option(opt_idx)->flags;
|
||||
|
||||
bool error = false;
|
||||
uint32_t opt_p_flags = get_option_flags(opt_idx);
|
||||
OptVal value = tv_to_optval(varp, varname, opt_p_flags, &error);
|
||||
|
||||
if (!error) {
|
||||
set_option_value_give_err(varname, value, OPT_LOCAL);
|
||||
}
|
||||
const char *errmsg = set_option_value_handle_tty(varname, opt_idx, value, OPT_LOCAL);
|
||||
|
||||
if (errmsg) {
|
||||
emsg(errmsg);
|
||||
}
|
||||
}
|
||||
optval_free(value);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user