diff src/ex_docmd.c @ 23:3f44e9abe4ec v7.0015

updated for version 7.0015
author vimboss
date Mon, 06 Sep 2004 17:44:46 +0000
parents cc049b00ee70
children 8ff7fd162d3c
line wrap: on
line diff
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -4460,7 +4460,7 @@ ex_doautocmd(eap)
     exarg_T	*eap;
 {
     (void)do_doautocmd(eap->arg, TRUE);
-    do_modelines();
+    do_modelines(FALSE);
 }
 #endif
 
@@ -6173,11 +6173,10 @@ handle_drop(filec, filev, split)
 }
 #endif
 
-static void alist_clear __ARGS((alist_T *al));
 /*
  * Clear an argument list: free all file names and reset it to zero entries.
  */
-    static void
+    void
 alist_clear(al)
     alist_T	*al;
 {
@@ -6264,8 +6263,8 @@ alist_expand()
 		&& new_arg_file_count > 0)
 	{
 	    alist_set(&global_alist, new_arg_file_count, new_arg_files, TRUE);
-	}
-	vim_free(old_arg_files);
+	    vim_free(old_arg_files);
+	}
     }
     p_su = save_p_su;
 }
@@ -6288,7 +6287,18 @@ alist_set(al, count, files, use_curbuf)
     if (ga_grow(&al->al_ga, count) == OK)
     {
 	for (i = 0; i < count; ++i)
+	{
+	    if (got_int)
+	    {
+		/* When adding many buffers this can take a long time.  Allow
+		 * interrupting here. */
+		while (i < count)
+		    vim_free(files[i++]);
+		break;
+	    }
 	    alist_add(al, files[i], use_curbuf ? 2 : 1);
+	    ui_breakcheck();
+	}
 	vim_free(files);
     }
     else
@@ -9582,7 +9592,7 @@ ex_filetype(eap)
 	if (*arg == 'd')
 	{
 	    (void)do_doautocmd((char_u *)"filetypedetect BufRead", TRUE);
-	    do_modelines();
+	    do_modelines(FALSE);
 	}
     }
     else if (STRCMP(arg, "off") == 0)