diff options
author | zeertzjq <zeertzjq@outlook.com> | 2022-12-23 13:56:32 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-23 13:56:32 +0800 |
commit | 30f606fc602f835fbed869140d3d658e24129c22 (patch) | |
tree | 5af7b1091fa420b81d753e3d9f7a02f78afeb24c /src/nvim/eval/funcs.c | |
parent | 98daaa798e018071876d026a60840991be8d8069 (diff) | |
download | rneovim-30f606fc602f835fbed869140d3d658e24129c22.tar.gz rneovim-30f606fc602f835fbed869140d3d658e24129c22.tar.bz2 rneovim-30f606fc602f835fbed869140d3d658e24129c22.zip |
fix(options): restore exists() behavior for options (#21510)
Duplicating get_option_value() logic for an obscure future refactor
isn't really worthwhile, and findoption() isn't used anywhere else
outside the options code.
Diffstat (limited to 'src/nvim/eval/funcs.c')
-rw-r--r-- | src/nvim/eval/funcs.c | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c index 8bdb91ebf1..eb34869fac 100644 --- a/src/nvim/eval/funcs.c +++ b/src/nvim/eval/funcs.c @@ -1721,14 +1721,9 @@ static void f_exists(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) xfree(exp); } } else if (*p == '&' || *p == '+') { // Option. - bool working = (*p == '+'); // whether option needs to be working - int opt_flags; - - if (find_option_end(&p, &opt_flags) != NULL) { - int opt_idx = findoption(p); - n = (opt_idx >= 0 && (!working || get_varp_scope(get_option(opt_idx), opt_flags) != NULL)); - } else { - n = false; + n = (get_option_tv(&p, NULL, true) == OK); + if (*skipwhite(p) != NUL) { + n = false; // Trailing garbage. } } else if (*p == '*') { // Internal or user defined function. n = function_exists(p + 1, false); |