forked from aniani/vim
updated for version 7.3.637
Problem: Cannot catch the error caused by a foldopen when there is no fold. (ZyX, Issue 48) Solution: Do not break out of the loop early when inside try/catch. (Christian Brabandt) Except when there is a syntax error.
This commit is contained in:
parent
dde0efed85
commit
00b8ae0d3d
@ -1295,7 +1295,14 @@ do_cmdline(cmdline, fgetline, cookie, flags)
|
||||
&& cstack.cs_trylevel == 0
|
||||
#endif
|
||||
)
|
||||
&& !(did_emsg && used_getline
|
||||
&& !(did_emsg
|
||||
#ifdef FEAT_EVAL
|
||||
/* Keep going when inside try/catch, so that the error can be
|
||||
* dealth with, except when it is a syntax error, it may cause
|
||||
* the :endtry to be missed. */
|
||||
&& (cstack.cs_trylevel == 0 || did_emsg_syntax)
|
||||
#endif
|
||||
&& used_getline
|
||||
&& (getline_equal(fgetline, cookie, getexmodeline)
|
||||
|| getline_equal(fgetline, cookie, getexline)))
|
||||
&& (next_cmdline != NULL
|
||||
@ -1305,6 +1312,7 @@ do_cmdline(cmdline, fgetline, cookie, flags)
|
||||
|| (flags & DOCMD_REPEAT)));
|
||||
|
||||
vim_free(cmdline_copy);
|
||||
did_emsg_syntax = FALSE;
|
||||
#ifdef FEAT_EVAL
|
||||
free_cmdlines(&lines_ga);
|
||||
ga_clear(&lines_ga);
|
||||
@ -2137,6 +2145,7 @@ do_one_cmd(cmdlinep, sourcing,
|
||||
if (!sourcing)
|
||||
append_command(*cmdlinep);
|
||||
errormsg = IObuff;
|
||||
did_emsg_syntax = TRUE;
|
||||
}
|
||||
goto doend;
|
||||
}
|
||||
|
@ -183,6 +183,8 @@ EXTERN int did_endif INIT(= FALSE); /* just had ":endif" */
|
||||
#endif
|
||||
EXTERN int did_emsg; /* set by emsg() when the message
|
||||
is displayed or thrown */
|
||||
EXTERN int did_emsg_syntax; /* did_emsg set because of a
|
||||
syntax error */
|
||||
EXTERN int called_emsg; /* always set by emsg() */
|
||||
EXTERN int ex_exitval INIT(= 0); /* exit value for ex mode */
|
||||
EXTERN int emsg_on_display INIT(= FALSE); /* there is an error message */
|
||||
|
@ -719,6 +719,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
637,
|
||||
/**/
|
||||
636,
|
||||
/**/
|
||||
|
Loading…
x
Reference in New Issue
Block a user