diff src/regexp_nfa.c @ 4714:fc4d7f02ea3a v7.3.1104

updated for version 7.3.1104 Problem: New regexp engine does not handle "~". Solution: Add support for "~".
author Bram Moolenaar <bram@vim.org>
date Sun, 02 Jun 2013 22:08:03 +0200
parents 832bf8136d86
children a804309e7327
line wrap: on
line diff
--- 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'):