aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2023-01-14 23:23:14 -0700
committerJosh Rahm <joshuarahm@gmail.com>2023-01-14 23:23:14 -0700
commita466b96406dccccf8702288f5d8ed0b245ebb0d7 (patch)
tree3231474fd04be3a1b230834a374374621c88e457
parent451985e92c56f09f50ac5bc6a056965f8c254fc5 (diff)
parentcd16d3df4c2a21ada895a1353712969045e5c728 (diff)
downloadrneovim-a466b96406dccccf8702288f5d8ed0b245ebb0d7.tar.gz
rneovim-a466b96406dccccf8702288f5d8ed0b245ebb0d7.tar.bz2
rneovim-a466b96406dccccf8702288f5d8ed0b245ebb0d7.zip
Merge remote-tracking branch 'origin/fix_repeatcmdline' into HEAD
-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 c70d56cd25..f3d496bef4 100644
--- a/src/nvim/eval/userfunc.c
+++ b/src/nvim/eval/userfunc.c
@@ -854,6 +854,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_u* saved_repeat_cmdline = NULL;
// If depth of calling is getting too high, don't execute the function
if (depth >= p_mfd) {
@@ -866,6 +867,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;
}
@@ -1215,6 +1219,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();
}