From: Bram Moolenaar <Bram@vim.org>
Date: Sun, 2 Jun 2013 20:08:03 +0000 (+0200)
Subject: updated for version 7.3.1104
X-Git-Tag: v7.3.1104
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f18fb7af7504a47e59ce85ddd1e50b56651a80d3;p=vim

updated for version 7.3.1104
Problem:    New regexp engine does not handle "~".
Solution:   Add support for "~".
---

diff --git a/src/regexp_nfa.c b/src/regexp_nfa.c
index f9b188861..6b6d36977 100644
--- a/src/regexp_nfa.c
+++ b/src/regexp_nfa.c
@@ -829,9 +829,26 @@ nfa_regatom()
 	    EMSGN(_(e_misplaced), no_Magic(c));
 	    return FAIL;
 
-	case Magic('~'):		/* previous substitute pattern */
-	    /* TODO: Not supported yet */
-	    return FAIL;
+	case Magic('~'):
+	    {
+		char_u	    *lp;
+
+		/* Previous substitute pattern.
+		 * Generated as "\%(pattern\)". */
+		if (reg_prev_sub == NULL)
+		{
+		    EMSG(_(e_nopresub));
+		    return FAIL;
+		}
+		for (lp = reg_prev_sub; *lp != NUL; mb_cptr_adv(lp))
+		{
+		    EMIT(PTR2CHAR(lp));
+		    if (lp != reg_prev_sub)
+			EMIT(NFA_CONCAT);
+		}
+		EMIT(NFA_NOPEN);
+		break;
+	    }
 
 	case Magic('1'):
 	case Magic('2'):
diff --git a/src/testdir/test24.in b/src/testdir/test24.in
index 80eb90bf6..7dfc1afdc 100644
Binary files a/src/testdir/test24.in and b/src/testdir/test24.in differ
diff --git a/src/testdir/test24.ok b/src/testdir/test24.ok
index ed25dd436..cd6121096 100644
--- a/src/testdir/test24.ok
+++ b/src/testdir/test24.ok
@@ -27,3 +27,6 @@ xx foobar xA xx
 xx an A xx
 XX 9;
 YY 77;
+ xyz 
+ bcd
+ BB
diff --git a/src/version.c b/src/version.c
index 2ec288143..57320724c 100644
--- a/src/version.c
+++ b/src/version.c
@@ -728,6 +728,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1104,
 /**/
     1103,
 /**/