From 3f8f82772313af9f2417b06651f30988b63e1c96 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Thu, 8 Dec 2022 21:49:35 +0000 Subject: patch 9.0.1036: undo misbehaves when writing from an insert mode mapping Problem: Undo misbehaves when writing from an insert mode mapping. Solution: Sync undo when writing. (closes #11674) --- src/edit.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'src/edit.c') diff --git a/src/edit.c b/src/edit.c index 43f7d9abb0..9e8346d1c2 100644 --- a/src/edit.c +++ b/src/edit.c @@ -1049,12 +1049,19 @@ doESCkey: case K_COMMAND: // command case K_SCRIPT_COMMAND: // command - do_cmdkey_command(c, 0); + { + do_cmdkey_command(c, 0); + #ifdef FEAT_TERMINAL - if (term_use_loop()) - // Started a terminal that gets the input, exit Insert mode. - goto doESCkey; + if (term_use_loop()) + // Started a terminal that gets the input, exit Insert mode. + goto doESCkey; #endif + if (curbuf->b_u_synced) + // The command caused undo to be synced. Need to save the + // line for undo before inserting the next char. + ins_need_undo = TRUE; + } break; case K_CURSORHOLD: // Didn't type something for a while. -- cgit v1.2.3