patch 7.4.1759
Problem: When using feedkeys() in a timer the inserted characters are not
used right away.
Solution: Break the wait loop when characters have been added to typebuf.
use this for testing CursorHoldI.
diff --git a/src/os_win32.c b/src/os_win32.c
index 627d515..159905d 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -1446,6 +1446,7 @@
INPUT_RECORD ir;
DWORD cRecords;
WCHAR ch, ch2;
+ int tb_change_cnt = typebuf.tb_change_cnt;
if (msec > 0)
/* Wait until the specified time has elapsed. */
@@ -1511,6 +1512,11 @@
/* Trigger timers and then get the time in msec until the
* next one is due. Wait up to that time. */
due_time = check_due_timer();
+ if (typebuf.tb_change_cnt != tb_change_cnt)
+ {
+ /* timer may have used feedkeys() */
+ return FALSE;
+ }
if (due_time > 0 && dwWaitTime > (DWORD)due_time)
dwWaitTime = due_time;
}