changeset 3342:bb67cd961fc3 v7.3.438

updated for version 7.3.438 Problem: There is no way to avoid ":doautoall" reading modelines. Solution: Add the <nomodeline> argument. Adjust documentation.
author Bram Moolenaar <bram@vim.org>
date Sun, 12 Feb 2012 00:18:58 +0100
parents 4d2f7f850f63
children a64a3bc0feda
files runtime/doc/autocmd.txt src/fileio.c src/version.c
diffstat 3 files changed, 26 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -1073,13 +1073,8 @@ option will not cause any commands to be
 			autocommands for that group.  Note: if you use an
 			undefined group name, Vim gives you an error message.
 
-			After applying the autocommands the modelines are
-			processed, so that their settings overrule the
-			settings from autocommands, like what happens when
-			editing a file.
-
 						*:doautoa* *:doautoall*
-:doautoa[ll] [group] {event} [fname]
+:doautoa[ll] [<nomodeline>] [group] {event} [fname]
 			Like ":doautocmd", but apply the autocommands to each
 			loaded buffer.  Note that [fname] is used to select
 			the autocommands, not the buffers to which they are
@@ -1090,6 +1085,12 @@ option will not cause any commands to be
 			This command is intended for autocommands that set
 			options, change highlighting, and things like that.
 
+			After applying the autocommands the modelines are
+			processed, so that their settings overrule the
+			settings from autocommands, like what happens when
+			editing a file. This is skipped when the <nomodeline>
+			argument is present.
+
 ==============================================================================
 10. Using autocommands					*autocmd-use*
 
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -8739,6 +8739,14 @@ ex_doautoall(eap)
     int		retval;
     aco_save_T	aco;
     buf_T	*buf;
+    char_u	*arg = eap->arg;
+    int		call_do_modelines = TRUE;
+
+    if (STRNCMP(arg, "<nomodeline>", 12) == 0)
+    {
+	call_do_modelines = FALSE;
+	arg = skipwhite(arg + 12);
+    }
 
     /*
      * This is a bit tricky: For some commands curwin->w_buffer needs to be
@@ -8755,11 +8763,15 @@ ex_doautoall(eap)
 	    aucmd_prepbuf(&aco, buf);
 
 	    /* execute the autocommands for this buffer */
-	    retval = do_doautocmd(eap->arg, FALSE);
-
-	    /* Execute the modeline settings, but don't set window-local
-	     * options if we are using the current window for another buffer. */
-	    do_modelines(curwin == aucmd_win ? OPT_NOWIN : 0);
+	    retval = do_doautocmd(arg, FALSE);
+
+	    if (call_do_modelines)
+	    {
+		/* Execute the modeline settings, but don't set window-local
+		 * options if we are using the current window for another
+		 * buffer. */
+		do_modelines(curwin == aucmd_win ? OPT_NOWIN : 0);
+	    }
 
 	    /* restore the current window */
 	    aucmd_restbuf(&aco);
--- a/src/version.c
+++ b/src/version.c
@@ -715,6 +715,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    438,
+/**/
     437,
 /**/
     436,