0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 8.1.0973: pattern with syntax error gives threee error messages

Problem:    Pattern with syntax error gives threee error messages. (Kuang-che
            Wu)
Solution:   Remove outdated internal error.  Don't fall back to other engine
            after an error.
This commit is contained in:
Bram Moolenaar
2019-02-22 17:29:43 +01:00
parent 72e83c1ae5
commit cd62512c55
4 changed files with 13 additions and 6 deletions

View File

@@ -7969,6 +7969,7 @@ vim_regcomp(char_u *expr_arg, int re_flags)
{
regprog_T *prog = NULL;
char_u *expr = expr_arg;
int save_called_emsg;
regexp_engine = p_re;
@@ -8004,6 +8005,8 @@ vim_regcomp(char_u *expr_arg, int re_flags)
/*
* First try the NFA engine, unless backtracking was requested.
*/
save_called_emsg = called_emsg;
called_emsg = FALSE;
if (regexp_engine != BACKTRACKING_ENGINE)
prog = nfa_regengine.regcomp(expr,
re_flags + (regexp_engine == AUTOMATIC_ENGINE ? RE_AUTO : 0));
@@ -8032,13 +8035,15 @@ vim_regcomp(char_u *expr_arg, int re_flags)
* If the NFA engine failed, try the backtracking engine.
* The NFA engine also fails for patterns that it can't handle well
* but are still valid patterns, thus a retry should work.
* But don't try if an error message was given.
*/
if (regexp_engine == AUTOMATIC_ENGINE)
if (regexp_engine == AUTOMATIC_ENGINE && !called_emsg)
{
regexp_engine = BACKTRACKING_ENGINE;
prog = bt_regengine.regcomp(expr, re_flags);
}
}
called_emsg |= save_called_emsg;
if (prog != NULL)
{