diff options
author | zeertzjq <zeertzjq@outlook.com> | 2024-01-24 07:29:33 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-24 07:29:33 +0800 |
commit | 65bfa86efeeb2ec18ba82fd821ffd4c8f97fcd2b (patch) | |
tree | bf5999ea603cd484c19148687a0dd83c0d8fecc1 /src | |
parent | 6cbfe454542ff498a84b22f0aff1bf215e883485 (diff) | |
download | rneovim-65bfa86efeeb2ec18ba82fd821ffd4c8f97fcd2b.tar.gz rneovim-65bfa86efeeb2ec18ba82fd821ffd4c8f97fcd2b.tar.bz2 rneovim-65bfa86efeeb2ec18ba82fd821ffd4c8f97fcd2b.zip |
vim-patch:9.1.0046: :drop does not re-use empty buffer (#27165)
Problem: :drop does not re-use empty buffer
(Rocco Mao)
Solution: Make :drop re-use an empty buffer
(Rocco Mao)
fixes: vim/vim#13851
closes: vim/vim#13881
https://github.com/vim/vim/commit/f96dc8d07f752ddd96d1447d85278a85255a1462
Co-authored-by: Rocco Mao <dapeng.mao@qq.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/arglist.c | 2 | ||||
-rw-r--r-- | src/nvim/ex_cmds2.c | 6 |
2 files changed, 5 insertions, 3 deletions
diff --git a/src/nvim/arglist.c b/src/nvim/arglist.c index 921d56ed78..e9108f72cc 100644 --- a/src/nvim/arglist.c +++ b/src/nvim/arglist.c @@ -477,7 +477,7 @@ static int do_arglist(char *str, int what, int after, bool will_edit) /// Redefine the argument list. void set_arglist(char *str) { - do_arglist(str, AL_SET, 0, false); + do_arglist(str, AL_SET, 0, true); } /// @return true if window "win" is editing the file at the current argument diff --git a/src/nvim/ex_cmds2.c b/src/nvim/ex_cmds2.c index 234a927291..842f8a4297 100644 --- a/src/nvim/ex_cmds2.c +++ b/src/nvim/ex_cmds2.c @@ -799,8 +799,7 @@ static void script_host_do_range(char *name, exarg_T *eap) } /// ":drop" -/// Opens the first argument in a window. When there are two or more arguments -/// the argument list is redefined. +/// Opens the first argument in a window, and the argument list is redefined. void ex_drop(exarg_T *eap) { bool split = false; @@ -825,6 +824,8 @@ void ex_drop(exarg_T *eap) // edited in a window yet. It's like ":tab all" but without closing // windows or tabs. ex_all(eap); + cmdmod.cmod_tab = 0; + ex_rewind(eap); return; } @@ -845,6 +846,7 @@ void ex_drop(exarg_T *eap) buf_check_timestamp(curbuf); curbuf->b_p_ar = save_ar; } + ex_rewind(eap); return; } } |