aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2023-11-30 10:48:55 -0700
committerJosh Rahm <joshuarahm@gmail.com>2023-11-30 10:48:55 -0700
commit49fd5b067fed9744ee7e84f7db9209417023b5db (patch)
tree82f77c751c882aeb27e633a04ab06f9df4529882
parent307d5bcc7940d14f7d17e7c2de795ebed7b0f00c (diff)
parentb08269939de5f1e696c67407e79e539af70c103f (diff)
downloadrneovim-49fd5b067fed9744ee7e84f7db9209417023b5db.tar.gz
rneovim-49fd5b067fed9744ee7e84f7db9209417023b5db.tar.bz2
rneovim-49fd5b067fed9744ee7e84f7db9209417023b5db.zip
Merge branch 'fix_repeatcmdline' into 20231130_mix
-rw-r--r--src/nvim/eval/userfunc.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/nvim/eval/userfunc.c b/src/nvim/eval/userfunc.c
index e0bf30b158..3b101454b5 100644
--- a/src/nvim/eval/userfunc.c
+++ b/src/nvim/eval/userfunc.c
@@ -933,6 +933,7 @@ void call_user_func(ufunc_T *fp, int argcount, typval_T *argvars, typval_T *rett
int started_profiling = false;
bool did_save_redo = false;
save_redo_T save_redo;
+ char* saved_repeat_cmdline = NULL;
// If depth of calling is getting too high, don't execute the function
if (depth >= p_mfd) {
@@ -945,6 +946,9 @@ void call_user_func(ufunc_T *fp, int argcount, typval_T *argvars, typval_T *rett
// Save search patterns and redo buffer.
save_search_patterns();
if (!ins_compl_active()) {
+ if (repeat_cmdline) {
+ saved_repeat_cmdline = xstrdup(repeat_cmdline);
+ }
saveRedobuff(&save_redo);
did_save_redo = true;
}
@@ -1287,6 +1291,8 @@ void call_user_func(ufunc_T *fp, int argcount, typval_T *argvars, typval_T *rett
// restore search patterns and redo buffer
if (did_save_redo) {
restoreRedobuff(&save_redo);
+ xfree(repeat_cmdline);
+ repeat_cmdline = saved_repeat_cmdline;
}
restore_search_patterns();
}