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;
 		}