Skip to content
Browse files

updated for version 7.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)
  • Loading branch information...
1 parent 819e7ff commit bee8023f3ba0dcb2a7f11e6446a799cf42cb0be9 @brammool brammool committed Dec 5, 2012
Showing with 7 additions and 3 deletions.
  1. +3 −1 src/ex_docmd.c
  2. +1 −2 src/fileio.c
  3. +1 −0 src/proto/fileio.pro
  4. +2 −0 src/version.c
View
4 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;
View
3 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;
View
1 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));
View
2 src/version.c
@@ -726,6 +726,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 753,
+/**/
752,
/**/
751,

0 comments on commit bee8023

Please sign in to comment.
Something went wrong with that request. Please try again.