0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

updated for version 7.3.1091

Problem:    New regexp engine: no error when using \z1 or \z( where it does
            not work.
Solution:   Give an error message.
This commit is contained in:
Bram Moolenaar 2013-06-02 15:01:57 +02:00
parent efb23f26e8
commit 5de820b916
3 changed files with 10 additions and 2 deletions

View File

@ -361,6 +361,8 @@ static char_u e_missingbracket[] = N_("E769: Missing ] after %s[");
static char_u e_unmatchedpp[] = N_("E53: Unmatched %s%%("); static char_u e_unmatchedpp[] = N_("E53: Unmatched %s%%(");
static char_u e_unmatchedp[] = N_("E54: Unmatched %s("); static char_u e_unmatchedp[] = N_("E54: Unmatched %s(");
static char_u e_unmatchedpar[] = N_("E55: Unmatched %s)"); static char_u e_unmatchedpar[] = N_("E55: Unmatched %s)");
static char_u e_z_not_allowed[] = N_("E66: \\z( not allowed here");
static char_u e_z1_not_allowed[] = N_("E67: \\z1 et al. not allowed here");
#define NOT_MULTI 0 #define NOT_MULTI 0
#define MULTI_ONE 1 #define MULTI_ONE 1
@ -2120,7 +2122,7 @@ regatom(flagp)
{ {
#ifdef FEAT_SYN_HL #ifdef FEAT_SYN_HL
case '(': if (reg_do_extmatch != REX_SET) case '(': if (reg_do_extmatch != REX_SET)
EMSG_RET_NULL(_("E66: \\z( not allowed here")); EMSG_RET_NULL(_(e_z_not_allowed));
if (one_exactly) if (one_exactly)
EMSG_ONE_RET_NULL; EMSG_ONE_RET_NULL;
ret = reg(REG_ZPAREN, &flags); ret = reg(REG_ZPAREN, &flags);
@ -2139,7 +2141,7 @@ regatom(flagp)
case '7': case '7':
case '8': case '8':
case '9': if (reg_do_extmatch != REX_USE) case '9': if (reg_do_extmatch != REX_USE)
EMSG_RET_NULL(_("E67: \\z1 et al. not allowed here")); EMSG_RET_NULL(_(e_z1_not_allowed));
ret = regnode(ZREF + c - '0'); ret = regnode(ZREF + c - '0');
re_has_z = REX_USE; re_has_z = REX_USE;
break; break;

View File

@ -865,6 +865,8 @@ nfa_regatom()
case '8': case '8':
case '9': case '9':
/* \z1...\z9 */ /* \z1...\z9 */
if (reg_do_extmatch != REX_USE)
EMSG_RET_FAIL(_(e_z1_not_allowed));
EMIT(NFA_ZREF1 + (no_Magic(c) - '1')); EMIT(NFA_ZREF1 + (no_Magic(c) - '1'));
/* No need to set nfa_has_backref, the sub-matches don't /* No need to set nfa_has_backref, the sub-matches don't
* change when \z1 .. \z9 maches or not. */ * change when \z1 .. \z9 maches or not. */
@ -872,6 +874,8 @@ nfa_regatom()
break; break;
case '(': case '(':
/* \z( */ /* \z( */
if (reg_do_extmatch != REX_SET)
EMSG_RET_FAIL(_(e_z_not_allowed));
if (nfa_reg(REG_ZPAREN) == FAIL) if (nfa_reg(REG_ZPAREN) == FAIL)
return FAIL; /* cascaded error */ return FAIL; /* cascaded error */
re_has_z = REX_SET; re_has_z = REX_SET;

View File

@ -728,6 +728,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1091,
/**/ /**/
1090, 1090,
/**/ /**/