changeset 4688:371cc0c44097 v7.3.1091

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.
author Bram Moolenaar <bram@vim.org>
date Sun, 02 Jun 2013 15:01:57 +0200
parents 79797c8534b5
children 84bc02d9b970
files src/regexp.c src/regexp_nfa.c src/version.c
diffstat 3 files changed, 10 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -361,6 +361,8 @@ static char_u e_missingbracket[] = N_("E
 static char_u e_unmatchedpp[] = N_("E53: Unmatched %s%%(");
 static char_u e_unmatchedp[] = N_("E54: 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 MULTI_ONE	1
@@ -2120,7 +2122,7 @@ regatom(flagp)
 	    {
 #ifdef FEAT_SYN_HL
 		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)
 			      EMSG_ONE_RET_NULL;
 			  ret = reg(REG_ZPAREN, &flags);
@@ -2139,7 +2141,7 @@ regatom(flagp)
 		case '7':
 		case '8':
 		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');
 			  re_has_z = REX_USE;
 			  break;
--- a/src/regexp_nfa.c
+++ b/src/regexp_nfa.c
@@ -865,6 +865,8 @@ nfa_regatom()
 		case '8':
 		case '9':
 		    /* \z1...\z9 */
+		    if (reg_do_extmatch != REX_USE)
+			EMSG_RET_FAIL(_(e_z1_not_allowed));
 		    EMIT(NFA_ZREF1 + (no_Magic(c) - '1'));
 		    /* No need to set nfa_has_backref, the sub-matches don't
 		     * change when \z1 .. \z9 maches or not. */
@@ -872,6 +874,8 @@ nfa_regatom()
 		    break;
 		case '(':
 		    /* \z(  */
+		    if (reg_do_extmatch != REX_SET)
+			EMSG_RET_FAIL(_(e_z_not_allowed));
 		    if (nfa_reg(REG_ZPAREN) == FAIL)
 			return FAIL;	    /* cascaded error */
 		    re_has_z = REX_SET;
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1091,
+/**/
     1090,
 /**/
     1089,