diff src/os_win32.c @ 203:80000fb16feb

updated for version 7.0060
author vimboss
date Tue, 15 Mar 2005 22:34:55 +0000
parents f529edb9bab3
children bf6ee000a80c
line wrap: on
line diff
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -1323,9 +1323,6 @@ mch_inchar(
 
     int		len;
     int		c;
-#ifdef FEAT_AUTOCMD
-    static int	once_already = 0;
-#endif
 #define TYPEAHEADLEN 20
     static char_u   typeahead[TYPEAHEADLEN];	/* previously typed bytes. */
     static int	    typeaheadlen = 0;
@@ -1358,40 +1355,29 @@ mch_inchar(
     if (time >= 0)
     {
 	if (!WaitForChar(time))     /* no character available */
-	{
-#ifdef FEAT_AUTOCMD
-	    once_already = 0;
-#endif
 	    return 0;
-	}
     }
     else    /* time == -1, wait forever */
     {
 	mch_set_winsize_now();	/* Allow winsize changes from now on */
 
-#ifdef FEAT_AUTOCMD
-	/* If there is no character available within 2 seconds (default),
-	 * write the autoscript file to disk */
-	if (once_already == 2)
-	    updatescript(0);
-	else if (once_already == 1)
-	{
-	    setcursor();
-	    once_already = 2;
-	    return 0;
-	}
-	else
-#endif
-	    if (!WaitForChar(p_ut))
+	/*
+	 * If there is no character available within 2 seconds (default)
+	 * write the autoscript file to disk.  Or cause the CursorHold event
+	 * to be triggered.
+	 */
+	if (!WaitForChar(p_ut))
 	{
 #ifdef FEAT_AUTOCMD
-	    if (has_cursorhold() && get_real_state() == NORMAL_BUSY)
+	    if (!did_cursorhold && has_cursorhold()
+			    && get_real_state() == NORMAL_BUSY && maxlen >= 3)
 	    {
-		apply_autocmds(EVENT_CURSORHOLD, NULL, NULL, FALSE, curbuf);
-		update_screen(VALID);
-		once_already = 1;
-		return 0;
+		buf[0] = K_SPECIAL;
+		buf[1] = KS_EXTRA;
+		buf[2] = (int)KE_CURSORHOLD;
+		return 3;
 	    }
+	    else
 #endif
 	    updatescript(0);
 	}
@@ -1528,10 +1514,6 @@ mch_inchar(
     }
 #endif
 
-#ifdef FEAT_AUTOCMD
-    once_already = 0;
-#endif
-
 theend:
     /* Move typeahead to "buf", as much as fits. */
     len = 0;