1
0
forked from aniani/vim

updated for version 7.3.1093

Problem:    New regexp engine: When a sub expression is empty \1 skips a
            character.
Solution:   Make \1 try the current position when the match is emtpy.
This commit is contained in:
Bram Moolenaar
2013-06-02 16:07:10 +02:00
parent 69afb7bf0a
commit b122e9798e
4 changed files with 9 additions and 4 deletions

View File

@@ -4435,11 +4435,10 @@ nfa_regmatch(start, submatch, m, endp)
{
if (bytelen == 0)
{
/* empty match always works, add NFA_SKIP with zero to
* be used next */
addstate_here(thislist, t->state->out, &t->subs,
/* empty match always works, output of NFA_SKIP to be
* used next */
addstate_here(thislist, t->state->out->out, &t->subs,
&listidx);
thislist->t[listidx + 1].count = 0;
}
else if (bytelen <= clen)
{

View File

@@ -361,6 +361,7 @@ STARTTEST
:call add(tl, [2, '\(\i\+\) \1', ' abc abc', 'abc abc', 'abc'])
:call add(tl, [2, '\(\i\+\) \1', 'xgoo goox', 'goo goo', 'goo'])
:call add(tl, [2, '\(a\)\(b\)\(c\)\(dd\)\(e\)\(f\)\(g\)\(h\)\(i\)\1\2\3\4\5\6\7\8\9', 'xabcddefghiabcddefghix', 'abcddefghiabcddefghi', 'a', 'b', 'c', 'dd', 'e', 'f', 'g', 'h', 'i'])
:call add(tl, [2, '\(\d*\)a \1b', ' a b ', 'a b', ''])
:"
:"""" Look-behind with limit
:call add(tl, [2, '<\@<=span.', 'xxspanxx<spanyyy', 'spany'])

View File

@@ -815,6 +815,9 @@ OK 2 - \(\i\+\) \1
OK 0 - \(a\)\(b\)\(c\)\(dd\)\(e\)\(f\)\(g\)\(h\)\(i\)\1\2\3\4\5\6\7\8\9
OK 1 - \(a\)\(b\)\(c\)\(dd\)\(e\)\(f\)\(g\)\(h\)\(i\)\1\2\3\4\5\6\7\8\9
OK 2 - \(a\)\(b\)\(c\)\(dd\)\(e\)\(f\)\(g\)\(h\)\(i\)\1\2\3\4\5\6\7\8\9
OK 0 - \(\d*\)a \1b
OK 1 - \(\d*\)a \1b
OK 2 - \(\d*\)a \1b
OK 0 - <\@<=span.
OK 1 - <\@<=span.
OK 2 - <\@<=span.

View File

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