updated for version 7.0060
diff --git a/src/gui_mac.c b/src/gui_mac.c
index 03dc326..e9a44b3 100644
--- a/src/gui_mac.c
+++ b/src/gui_mac.c
@@ -4305,6 +4305,15 @@
     RGBBackColor(&TheColor);
 }
 
+/*
+ * Set the current text speail color. TODO
+ */
+    void
+gui_mch_set_sp_color(color)
+    guicolor_T	color;
+{
+}
+
     void
 gui_mch_draw_string(row, col, s, len, flags)
     int		row;
diff --git a/src/os_msdos.c b/src/os_msdos.c
index 41d5877..963de38 100644
--- a/src/os_msdos.c
+++ b/src/os_msdos.c
@@ -989,9 +989,6 @@
     int		c;
     int		tmp_c;
     static int	nextchar = 0;	    /* may keep character when maxlen == 1 */
-#ifdef FEAT_AUTOCMD
-    static int	once_already = 0;
-#endif
 
     /*
      * if we got a ctrl-C when we were busy, there will be a "^C" somewhere
@@ -1027,38 +1024,26 @@
 #ifdef FEAT_MOUSE
 	    show_mouse(FALSE);
 #endif
-#ifdef FEAT_AUTOCMD
-	    once_already = 0;
-#endif
 	    return 0;
 	}
     }
     else    /* time == -1 */
     {
-#ifdef FEAT_AUTOCMD
-	if (once_already == 2)
-	    updatescript(0);
-	else if (once_already == 1)
-	{
-	    setcursor();
-	    once_already = 2;
-	    return 0;
-	}
-	else
-#endif
 	/*
 	 * If there is no character available within 2 seconds (default)
-	 * write the autoscript file to disk
+	 * write the autoscript file to disk.  Or cause the CursorHold event
+	 * to be triggered.
 	 */
-	    if (WaitForChar(p_ut) == 0)
+	if (WaitForChar(p_ut) == 0)
 	{
 #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
@@ -1194,9 +1179,6 @@
 #endif
 
     beep_count = 0;	    /* may beep again now that we got some chars */
-#ifdef FEAT_AUTOCMD
-    once_already = 0;
-#endif
     return len;
 }
 
diff --git a/src/regexp.c b/src/regexp.c
index 3d47c17..3cd7cc9 100644
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -4522,7 +4522,7 @@
 		    /* It could match.  Prepare for trying to match what
 		     * follows.  The code is below.  Parameters are stored in
 		     * a regstar_T on the regstack. */
-		    if (((unsigned)regstack.ga_len >> 10) >= p_mmp)
+		    if ((long)((unsigned)regstack.ga_len >> 10) >= p_mmp)
 		    {
 			EMSG(_(e_maxmempat));
 			status = RA_FAIL;
@@ -4567,7 +4567,7 @@
 	  case BEHIND:
 	  case NOBEHIND:
 	    /* Need a bit of room to store extra positions. */
-	    if (((unsigned)regstack.ga_len >> 10) >= p_mmp)
+	    if ((long)((unsigned)regstack.ga_len >> 10) >= p_mmp)
 	    {
 		EMSG(_(e_maxmempat));
 		status = RA_FAIL;
@@ -5004,7 +5004,7 @@
 {
     regitem_T	*rp;
 
-    if (((unsigned)regstack->ga_len >> 10) >= p_mmp)
+    if ((long)((unsigned)regstack->ga_len >> 10) >= p_mmp)
     {
 	EMSG(_(e_maxmempat));
 	return NULL;