diff options
author | zeertzjq <zeertzjq@outlook.com> | 2024-02-13 07:27:27 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-13 07:27:27 +0800 |
commit | 2493fd020d6f294c78a87b0f7f35c0398b248f1f (patch) | |
tree | 55042d7b1ec1db58be1096bf442e00d577bebe74 /src | |
parent | 94085cfce82153e79eba5a1d277fe5799d973ffd (diff) | |
download | rneovim-2493fd020d6f294c78a87b0f7f35c0398b248f1f.tar.gz rneovim-2493fd020d6f294c78a87b0f7f35c0398b248f1f.tar.bz2 rneovim-2493fd020d6f294c78a87b0f7f35c0398b248f1f.zip |
vim-patch:9.1.0102: settabvar() may change the last accessed tabpage (#27450)
Problem: settabvar() may change the last accessed tabpage.
Solution: Save and restore lastused_tabpage.
(zeertzjq)
closes: vim/vim#14017
https://github.com/vim/vim/commit/b47fbb40837512cdd2d8c25eaf9952154836b99d
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/eval/vars.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/nvim/eval/vars.c b/src/nvim/eval/vars.c index e149796fac..e016c65d90 100644 --- a/src/nvim/eval/vars.c +++ b/src/nvim/eval/vars.c @@ -2090,6 +2090,7 @@ void f_settabvar(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) } tabpage_T *const save_curtab = curtab; + tabpage_T *const save_lu_tp = lastused_tabpage; goto_tabpage_tp(tp, false, false); const size_t varname_len = strlen(varname); @@ -2099,9 +2100,12 @@ void f_settabvar(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) set_var(tabvarname, varname_len + 2, varp, true); xfree(tabvarname); - // Restore current tabpage. + // Restore current tabpage and last accessed tabpage. if (valid_tabpage(save_curtab)) { goto_tabpage_tp(save_curtab, false, false); + if (valid_tabpage(save_lu_tp)) { + lastused_tabpage = save_lu_tp; + } } } |