diff options
author | Bram Moolenaar <bram@vim.org> | 2012-02-12 00:18:58 +0100 |
---|---|---|
committer | Bram Moolenaar <bram@vim.org> | 2012-02-12 00:18:58 +0100 |
commit | 30907936e36897e6e247bb17e75672bf21b6e959 (patch) | |
tree | 1c846b92ba00623ca649477096a8ad5c59782bd8 | |
parent | 2d37f5850c4493acf3e0ce7ffcc9e1ca4df80e83 (diff) | |
download | vim-30907936e36897e6e247bb17e75672bf21b6e959.tar.gz |
Problem: There is no way to avoid ":doautoall" reading modelines.
Solution: Add the <nomodeline> argument. Adjust documentation.
-rw-r--r-- | runtime/doc/autocmd.txt | 13 | ||||
-rw-r--r-- | src/fileio.c | 20 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 25 insertions, 10 deletions
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt index ff0b403e..1e2bc773 100644 --- a/runtime/doc/autocmd.txt +++ b/runtime/doc/autocmd.txt @@ -1073,13 +1073,8 @@ option will not cause any commands to be executed. 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 executed. 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* diff --git a/src/fileio.c b/src/fileio.c index 8ed878d7..6d1bbbc1 100644 --- 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); + retval = do_doautocmd(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); + 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); diff --git a/src/version.c b/src/version.c index 59498a4c..bce741c0 100644 --- 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, |