diff options
author | Bram Moolenaar <Bram@vim.org> | 2012-12-05 19:13:18 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2012-12-05 19:13:18 +0100 |
commit | 21691f896a49f9bfc63eb1557958e85a7de1adbf (patch) | |
tree | 071fb4182fcf895899f894e6c3ff081e5c44b341 | |
parent | 34feacbccea905d3a71ccf9175d872c50f370705 (diff) |
updated for version 7.3.753v7.3.753
Problem: When there is a QuitPre autocommand using ":q" twice does not work
for exiting when there are more files to edit.
Solution: Do not decrement quitmore in an autocommand. (Techlive Zheng)
-rw-r--r-- | src/ex_docmd.c | 4 | ||||
-rw-r--r-- | src/fileio.c | 3 | ||||
-rw-r--r-- | src/proto/fileio.pro | 1 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 7 insertions, 3 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 6c3b6f4e89..d0d9f56059 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -1729,11 +1729,13 @@ do_one_cmd(cmdlinep, sourcing, ++ex_nesting_level; #endif - /* when not editing the last file :q has to be typed twice */ + /* When the last file has not been edited :q has to be typed twice. */ if (quitmore #ifdef FEAT_EVAL /* avoid that a function call in 'statusline' does this */ && !getline_equal(fgetline, cookie, get_func_line) + /* avoid that an autocommand, e.g. QuitPre, does this */ + && !getline_equal(fgetline, cookie, getnextac) #endif ) --quitmore; diff --git a/src/fileio.c b/src/fileio.c index a3113d7b19..470cce2525 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -7774,7 +7774,6 @@ static char_u *find_end_event __ARGS((char_u *arg, int have_group)); static int event_ignored __ARGS((event_T event)); static int au_get_grouparg __ARGS((char_u **argp)); static int do_autocmd_event __ARGS((event_T event, char_u *pat, int nested, char_u *cmd, int forceit, int group)); -static char_u *getnextac __ARGS((int c, void *cookie, int indent)); static int apply_autocmds_group __ARGS((event_T event, char_u *fname, char_u *fname_io, int force, int group, buf_T *buf, exarg_T *eap)); static void auto_next_pat __ARGS((AutoPatCmd *apc, int stop_at_last)); @@ -9613,7 +9612,7 @@ auto_next_pat(apc, stop_at_last) * Called by do_cmdline() to get the next line for ":if". * Returns allocated string, or NULL for end of autocommands. */ - static char_u * + char_u * getnextac(c, cookie, indent) int c UNUSED; void *cookie; diff --git a/src/proto/fileio.pro b/src/proto/fileio.pro index baf6216646..113b668bdf 100644 --- a/src/proto/fileio.pro +++ b/src/proto/fileio.pro @@ -47,6 +47,7 @@ int has_cursormovedI __ARGS((void)); int has_insertcharpre __ARGS((void)); void block_autocmds __ARGS((void)); void unblock_autocmds __ARGS((void)); +char_u *getnextac __ARGS((int c, void *cookie, int indent)); int has_autocmd __ARGS((event_T event, char_u *sfname, buf_T *buf)); char_u *get_augroup_name __ARGS((expand_T *xp, int idx)); char_u *set_context_in_autocmd __ARGS((expand_T *xp, char_u *arg, int doautocmd)); diff --git a/src/version.c b/src/version.c index 435bff41cc..1bfaa82d8f 100644 --- a/src/version.c +++ b/src/version.c @@ -726,6 +726,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 753, +/**/ 752, /**/ 751, |