diff src/regexp_nfa.c @ 4730:749e2b2755d5 v7.3.1112

updated for version 7.3.1112 Problem: New regexp engine: \%V not supported. Solution: Implement \%V. Add tests.
author Bram Moolenaar <bram@vim.org>
date Tue, 04 Jun 2013 18:28:48 +0200
parents 43de4ebbe7ad
children 0798b096bab3
line wrap: on
line diff
--- a/src/regexp_nfa.c
+++ b/src/regexp_nfa.c
@@ -178,6 +178,7 @@ enum
     NFA_VCOL,		/*	Match cursor virtual column */
     NFA_VCOL_GT,	/*	Match > cursor virtual column */
     NFA_VCOL_LT,	/*	Match < cursor virtual column */
+    NFA_VISUAL,		/*	Match Visual area */
 
     NFA_FIRST_NL = NFA_ANY + ADD_NL,
     NFA_LAST_NL = NFA_NUPPER + ADD_NL,
@@ -960,8 +961,7 @@ nfa_regatom()
 		    break;
 
 		case 'V':
-		    /* TODO: not supported yet */
-		    return FAIL;
+		    EMIT(NFA_VISUAL);
 		    break;
 
 		case '[':
@@ -4733,6 +4733,13 @@ nfa_regmatch(prog, start, submatch, m)
 							    t->pim, &listidx);
 		break;
 
+	    case NFA_VISUAL:
+		result = reg_match_visual();
+		if (result)
+		    addstate_here(thislist, t->state->out, &t->subs,
+							    t->pim, &listidx);
+		break;
+
 	    default:	/* regular character */
 	      {
 		int c = t->state->c;