patch 8.2.3828: when opening a terminal from a timer first typed char is lost
Problem: when opening a terminal from a timer the first typed character
is lost. (Virginia Senioria)
Solution: When opening a terminal while waiting for a character put K_IGNORE
in the input buffer.
diff --git a/src/terminal.c b/src/terminal.c
index 7efe071..8f80f9f 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -739,6 +739,23 @@
curwin->w_buffer = curbuf;
++curbuf->b_nwindows;
}
+ else if (vgetc_busy
+#ifdef FEAT_TIMERS
+ || timer_busy
+#endif
+ || input_busy)
+ {
+ char_u ignore[4];
+
+ // When waiting for input need to return and possibly end up in
+ // terminal_loop() instead.
+ ignore[0] = K_SPECIAL;
+ ignore[1] = KS_EXTRA;
+ ignore[2] = KE_IGNORE;
+ ignore[3] = NUL;
+ ins_typebuf(ignore, REMAP_NONE, 0, TRUE, FALSE);
+ typebuf_was_filled = TRUE;
+ }
}
else
{