diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-04-16 16:35:51 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-16 16:35:51 +0800 |
commit | 0b855f7c07b5424bfb68352532b03bc4eb21b94a (patch) | |
tree | f819f554846dcf794cc80cf52f5003ca079ffde3 /src/nvim/ex_cmds2.c | |
parent | 0d9b0fbe579343fa6d6c46e6e1bf6bb8719ea5e0 (diff) | |
parent | a81c137251243ed0a6c40fdb5120fe0e1fb48aa8 (diff) | |
download | rneovim-0b855f7c07b5424bfb68352532b03bc4eb21b94a.tar.gz rneovim-0b855f7c07b5424bfb68352532b03bc4eb21b94a.tar.bz2 rneovim-0b855f7c07b5424bfb68352532b03bc4eb21b94a.zip |
Merge pull request #23116 from zeertzjq/vim-9.0.1064
vim-patch:9.0.{1064,1456}
Diffstat (limited to 'src/nvim/ex_cmds2.c')
-rw-r--r-- | src/nvim/ex_cmds2.c | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/src/nvim/ex_cmds2.c b/src/nvim/ex_cmds2.c index 6d190df939..4d71285447 100644 --- a/src/nvim/ex_cmds2.c +++ b/src/nvim/ex_cmds2.c @@ -38,6 +38,7 @@ #include "nvim/move.h" #include "nvim/normal.h" #include "nvim/option.h" +#include "nvim/optionstr.h" #include "nvim/os/os_defs.h" #include "nvim/path.h" #include "nvim/pos.h" @@ -467,7 +468,6 @@ void ex_listdo(exarg_T *eap) | (eap->forceit ? CCGD_FORCEIT : 0) | CCGD_EXCMD)) { int next_fnum = 0; - char *p_shm_save; int i = 0; // start at the eap->line1 argument/window/buffer wp = firstwin; @@ -514,7 +514,9 @@ void ex_listdo(exarg_T *eap) if (qf_size == 0 || (size_t)eap->line1 > qf_size) { buf = NULL; } else { + save_clear_shm_value(); ex_cc(eap); + restore_shm_value(); buf = curbuf; i = (int)eap->line1 - 1; @@ -541,11 +543,9 @@ void ex_listdo(exarg_T *eap) if (curwin->w_arg_idx != i || !editing_arg_idx(curwin)) { // Clear 'shm' to avoid that the file message overwrites // any output from the command. - p_shm_save = xstrdup(p_shm); - set_option_value_give_err("shm", 0L, "", 0); + save_clear_shm_value(); do_argfile(eap, i); - set_option_value_give_err("shm", 0L, p_shm_save, 0); - xfree(p_shm_save); + restore_shm_value(); } if (curwin->w_arg_idx != i) { break; @@ -610,11 +610,9 @@ void ex_listdo(exarg_T *eap) // Go to the next buffer. Clear 'shm' to avoid that the file // message overwrites any output from the command. - p_shm_save = xstrdup(p_shm); - set_option_value_give_err("shm", 0L, "", 0); + save_clear_shm_value(); goto_buffer(eap, DOBUF_FIRST, FORWARD, next_fnum); - set_option_value_give_err("shm", 0L, p_shm_save, 0); - xfree(p_shm_save); + restore_shm_value(); // If autocommands took us elsewhere, quit here. if (curbuf->b_fnum != next_fnum) { @@ -633,11 +631,9 @@ void ex_listdo(exarg_T *eap) // Clear 'shm' to avoid that the file message overwrites // any output from the command. - p_shm_save = xstrdup(p_shm); - set_option_value_give_err("shm", 0L, "", 0); + save_clear_shm_value(); ex_cnext(eap); - set_option_value_give_err("shm", 0L, p_shm_save, 0); - xfree(p_shm_save); + restore_shm_value(); // If jumping to the next quickfix entry fails, quit here. if (qf_get_cur_idx(eap) == qf_idx) { |