aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.c
diff options
context:
space:
mode:
authorFamiu Haque <famiuhaque@proton.me>2023-10-14 22:19:11 +0600
committerFamiu Haque <famiuhaque@proton.me>2023-10-30 21:38:02 +0600
commite19cc9c9b715d8171f7940632b8855104b5290b6 (patch)
treece65d9beead39176451840b631556eabe7e5a0b3 /src/nvim/eval.c
parent8405649f92a8a8eb254944eca15e8b0169cbb6fb (diff)
downloadrneovim-e19cc9c9b715d8171f7940632b8855104b5290b6.tar.gz
rneovim-e19cc9c9b715d8171f7940632b8855104b5290b6.tar.bz2
rneovim-e19cc9c9b715d8171f7940632b8855104b5290b6.zip
refactor(options)!: unify `set_option` and `set_string_option`
While the interfaces for setting number and boolean options are now unified by #25394, there is still a separate `set_string_option` function that is used for setting a string option. This PR removes that function and merges it with set_option. BREAKING CHANGE: `v:option_old` is now the old global value for all global-local options, instead of just string global-local options. Local value for a global-local number/boolean option is now unset when the option is set (e.g. using `:set` or `nvim_set_option_value`) without a scope, which means they now behave the same way as string options. Ref: #25672
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r--src/nvim/eval.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 20d76334f6..8ffc6fd179 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -7229,12 +7229,11 @@ void set_vim_var_dict(const VimVarIndex idx, dict_T *const val)
/// Set v:variable to tv.
///
/// @param[in] idx Index of variable to set.
-/// @param[in,out] val Value to set to. Reference count will be incremented.
-/// Also keys of the dictionary will be made read-only.
+/// @param[in] val Value to set to. Will be copied.
void set_vim_var_tv(const VimVarIndex idx, typval_T *const tv)
{
tv_clear(&vimvars[idx].vv_di.di_tv);
- vimvars[idx].vv_di.di_tv = *tv;
+ tv_copy(tv, &vimvars[idx].vv_di.di_tv);
}
/// Set the v:argv list.