|
Karsten Hopp |
29bbff |
To: vim_dev@googlegroups.com
|
|
Karsten Hopp |
29bbff |
Subject: Patch 7.3.1076
|
|
Karsten Hopp |
29bbff |
Fcc: outbox
|
|
Karsten Hopp |
29bbff |
From: Bram Moolenaar <Bram@moolenaar.net>
|
|
Karsten Hopp |
29bbff |
Mime-Version: 1.0
|
|
Karsten Hopp |
29bbff |
Content-Type: text/plain; charset=UTF-8
|
|
Karsten Hopp |
29bbff |
Content-Transfer-Encoding: 8bit
|
|
Karsten Hopp |
29bbff |
------------
|
|
Karsten Hopp |
29bbff |
|
|
Karsten Hopp |
29bbff |
Patch 7.3.1076
|
|
Karsten Hopp |
29bbff |
Problem: New regexp engine: \@= and \& don't work.
|
|
Karsten Hopp |
29bbff |
Solution: Make these items work. Add column info to logging.
|
|
Karsten Hopp |
29bbff |
Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok
|
|
Karsten Hopp |
29bbff |
|
|
Karsten Hopp |
29bbff |
|
|
Karsten Hopp |
29bbff |
*** ../vim-7.3.1075/src/regexp_nfa.c 2013-05-30 19:18:27.000000000 +0200
|
|
Karsten Hopp |
29bbff |
--- src/regexp_nfa.c 2013-05-30 21:41:51.000000000 +0200
|
|
Karsten Hopp |
29bbff |
***************
|
|
Karsten Hopp |
29bbff |
*** 1740,1747 ****
|
|
Karsten Hopp |
29bbff |
STRCPY(code, "NFA_PREV_ATOM_NO_WIDTH"); break;
|
|
Karsten Hopp |
29bbff |
case NFA_PREV_ATOM_NO_WIDTH_NEG:
|
|
Karsten Hopp |
29bbff |
STRCPY(code, "NFA_PREV_ATOM_NO_WIDTH_NEG"); break;
|
|
Karsten Hopp |
29bbff |
! case NFA_NOPEN: STRCPY(code, "NFA_MOPEN_INVISIBLE"); break;
|
|
Karsten Hopp |
29bbff |
! case NFA_NCLOSE: STRCPY(code, "NFA_MCLOSE_INVISIBLE"); break;
|
|
Karsten Hopp |
29bbff |
case NFA_START_INVISIBLE: STRCPY(code, "NFA_START_INVISIBLE"); break;
|
|
Karsten Hopp |
29bbff |
case NFA_END_INVISIBLE: STRCPY(code, "NFA_END_INVISIBLE"); break;
|
|
Karsten Hopp |
29bbff |
|
|
Karsten Hopp |
29bbff |
--- 1740,1747 ----
|
|
Karsten Hopp |
29bbff |
STRCPY(code, "NFA_PREV_ATOM_NO_WIDTH"); break;
|
|
Karsten Hopp |
29bbff |
case NFA_PREV_ATOM_NO_WIDTH_NEG:
|
|
Karsten Hopp |
29bbff |
STRCPY(code, "NFA_PREV_ATOM_NO_WIDTH_NEG"); break;
|
|
Karsten Hopp |
29bbff |
! case NFA_NOPEN: STRCPY(code, "NFA_NOPEN"); break;
|
|
Karsten Hopp |
29bbff |
! case NFA_NCLOSE: STRCPY(code, "NFA_NCLOSE"); break;
|
|
Karsten Hopp |
29bbff |
case NFA_START_INVISIBLE: STRCPY(code, "NFA_START_INVISIBLE"); break;
|
|
Karsten Hopp |
29bbff |
case NFA_END_INVISIBLE: STRCPY(code, "NFA_END_INVISIBLE"); break;
|
|
Karsten Hopp |
29bbff |
|
|
Karsten Hopp |
29bbff |
***************
|
|
Karsten Hopp |
29bbff |
*** 2373,2384 ****
|
|
Karsten Hopp |
29bbff |
break;
|
|
Karsten Hopp |
29bbff |
|
|
Karsten Hopp |
29bbff |
case NFA_PREV_ATOM_NO_WIDTH:
|
|
Karsten Hopp |
29bbff |
! /* The \@= operator: match the preceding atom with 0 width.
|
|
Karsten Hopp |
29bbff |
* Surrounds the preceding atom with START_INVISIBLE and
|
|
Karsten Hopp |
29bbff |
! * END_INVISIBLE, similarly to MOPEN.
|
|
Karsten Hopp |
29bbff |
! */
|
|
Karsten Hopp |
29bbff |
! /* TODO: Maybe this drops the speed? */
|
|
Karsten Hopp |
29bbff |
! goto theend;
|
|
Karsten Hopp |
29bbff |
|
|
Karsten Hopp |
29bbff |
if (nfa_calc_size == TRUE)
|
|
Karsten Hopp |
29bbff |
{
|
|
Karsten Hopp |
29bbff |
--- 2373,2381 ----
|
|
Karsten Hopp |
29bbff |
break;
|
|
Karsten Hopp |
29bbff |
|
|
Karsten Hopp |
29bbff |
case NFA_PREV_ATOM_NO_WIDTH:
|
|
Karsten Hopp |
29bbff |
! /* The \@= operator: match the preceding atom with zero width.
|
|
Karsten Hopp |
29bbff |
* Surrounds the preceding atom with START_INVISIBLE and
|
|
Karsten Hopp |
29bbff |
! * END_INVISIBLE, similarly to MOPEN. */
|
|
Karsten Hopp |
29bbff |
|
|
Karsten Hopp |
29bbff |
if (nfa_calc_size == TRUE)
|
|
Karsten Hopp |
29bbff |
{
|
|
Karsten Hopp |
29bbff |
***************
|
|
Karsten Hopp |
29bbff |
*** 2745,2750 ****
|
|
Karsten Hopp |
29bbff |
--- 2742,2750 ----
|
|
Karsten Hopp |
29bbff |
int save_in_use;
|
|
Karsten Hopp |
29bbff |
char_u *save_ptr;
|
|
Karsten Hopp |
29bbff |
int i;
|
|
Karsten Hopp |
29bbff |
+ #ifdef ENABLE_LOG
|
|
Karsten Hopp |
29bbff |
+ int did_print = FALSE;
|
|
Karsten Hopp |
29bbff |
+ #endif
|
|
Karsten Hopp |
29bbff |
|
|
Karsten Hopp |
29bbff |
if (l == NULL || state == NULL)
|
|
Karsten Hopp |
29bbff |
return;
|
|
Karsten Hopp |
29bbff |
***************
|
|
Karsten Hopp |
29bbff |
*** 2782,2788 ****
|
|
Karsten Hopp |
29bbff |
/* These nodes do not need to be added, but we need to bail out
|
|
Karsten Hopp |
29bbff |
* when it was tried to be added to this list before. */
|
|
Karsten Hopp |
29bbff |
if (state->lastlist == l->id)
|
|
Karsten Hopp |
29bbff |
! return;
|
|
Karsten Hopp |
29bbff |
state->lastlist = l->id;
|
|
Karsten Hopp |
29bbff |
break;
|
|
Karsten Hopp |
29bbff |
|
|
Karsten Hopp |
29bbff |
--- 2782,2788 ----
|
|
Karsten Hopp |
29bbff |
/* These nodes do not need to be added, but we need to bail out
|
|
Karsten Hopp |
29bbff |
* when it was tried to be added to this list before. */
|
|
Karsten Hopp |
29bbff |
if (state->lastlist == l->id)
|
|
Karsten Hopp |
29bbff |
! goto skip_add;
|
|
Karsten Hopp |
29bbff |
state->lastlist = l->id;
|
|
Karsten Hopp |
29bbff |
break;
|
|
Karsten Hopp |
29bbff |
|
|
Karsten Hopp |
29bbff |
***************
|
|
Karsten Hopp |
29bbff |
*** 2792,2798 ****
|
|
Karsten Hopp |
29bbff |
--- 2792,2806 ----
|
|
Karsten Hopp |
29bbff |
/* This state is already in the list, don't add it again,
|
|
Karsten Hopp |
29bbff |
* unless it is an MOPEN that is used for a backreference. */
|
|
Karsten Hopp |
29bbff |
if (!nfa_has_backref)
|
|
Karsten Hopp |
29bbff |
+ {
|
|
Karsten Hopp |
29bbff |
+ skip_add:
|
|
Karsten Hopp |
29bbff |
+ #ifdef ENABLE_LOG
|
|
Karsten Hopp |
29bbff |
+ nfa_set_code(state->c);
|
|
Karsten Hopp |
29bbff |
+ fprintf(log_fd, "> Not adding state %d to list %d. char %d: %s\n",
|
|
Karsten Hopp |
29bbff |
+ abs(state->id), l->id, state->c, code);
|
|
Karsten Hopp |
29bbff |
+ #endif
|
|
Karsten Hopp |
29bbff |
return;
|
|
Karsten Hopp |
29bbff |
+ }
|
|
Karsten Hopp |
29bbff |
|
|
Karsten Hopp |
29bbff |
/* See if the same state is already in the list with the same
|
|
Karsten Hopp |
29bbff |
* positions. */
|
|
Karsten Hopp |
29bbff |
***************
|
|
Karsten Hopp |
29bbff |
*** 2801,2807 ****
|
|
Karsten Hopp |
29bbff |
thread = &l->t[i];
|
|
Karsten Hopp |
29bbff |
if (thread->state->id == state->id
|
|
Karsten Hopp |
29bbff |
&& sub_equal(&thread->sub, sub))
|
|
Karsten Hopp |
29bbff |
! return;
|
|
Karsten Hopp |
29bbff |
}
|
|
Karsten Hopp |
29bbff |
}
|
|
Karsten Hopp |
29bbff |
|
|
Karsten Hopp |
29bbff |
--- 2809,2815 ----
|
|
Karsten Hopp |
29bbff |
thread = &l->t[i];
|
|
Karsten Hopp |
29bbff |
if (thread->state->id == state->id
|
|
Karsten Hopp |
29bbff |
&& sub_equal(&thread->sub, sub))
|
|
Karsten Hopp |
29bbff |
! goto skip_add;
|
|
Karsten Hopp |
29bbff |
}
|
|
Karsten Hopp |
29bbff |
}
|
|
Karsten Hopp |
29bbff |
|
|
Karsten Hopp |
29bbff |
***************
|
|
Karsten Hopp |
29bbff |
*** 2832,2843 ****
|
|
Karsten Hopp |
29bbff |
&sub->list.line[0],
|
|
Karsten Hopp |
29bbff |
sizeof(struct linepos) * sub->in_use);
|
|
Karsten Hopp |
29bbff |
}
|
|
Karsten Hopp |
29bbff |
}
|
|
Karsten Hopp |
29bbff |
|
|
Karsten Hopp |
29bbff |
#ifdef ENABLE_LOG
|
|
Karsten Hopp |
29bbff |
! nfa_set_code(state->c);
|
|
Karsten Hopp |
29bbff |
! fprintf(log_fd, "> Adding state %d to list. Character %d: %s\n",
|
|
Karsten Hopp |
29bbff |
! abs(state->id), state->c, code);
|
|
Karsten Hopp |
29bbff |
#endif
|
|
Karsten Hopp |
29bbff |
switch (state->c)
|
|
Karsten Hopp |
29bbff |
{
|
|
Karsten Hopp |
29bbff |
--- 2840,2878 ----
|
|
Karsten Hopp |
29bbff |
&sub->list.line[0],
|
|
Karsten Hopp |
29bbff |
sizeof(struct linepos) * sub->in_use);
|
|
Karsten Hopp |
29bbff |
}
|
|
Karsten Hopp |
29bbff |
+ #ifdef ENABLE_LOG
|
|
Karsten Hopp |
29bbff |
+ {
|
|
Karsten Hopp |
29bbff |
+ int col;
|
|
Karsten Hopp |
29bbff |
+
|
|
Karsten Hopp |
29bbff |
+ if (thread->sub.in_use <= 0)
|
|
Karsten Hopp |
29bbff |
+ col = -1;
|
|
Karsten Hopp |
29bbff |
+ else if (REG_MULTI)
|
|
Karsten Hopp |
29bbff |
+ col = thread->sub.list.multi[0].start.col;
|
|
Karsten Hopp |
29bbff |
+ else
|
|
Karsten Hopp |
29bbff |
+ col = (int)(thread->sub.list.line[0].start - regline);
|
|
Karsten Hopp |
29bbff |
+ nfa_set_code(state->c);
|
|
Karsten Hopp |
29bbff |
+ fprintf(log_fd, "> Adding state %d to list %d. char %d: %s (start col %d)\n",
|
|
Karsten Hopp |
29bbff |
+ abs(state->id), l->id, state->c, code, col);
|
|
Karsten Hopp |
29bbff |
+ did_print = TRUE;
|
|
Karsten Hopp |
29bbff |
+ }
|
|
Karsten Hopp |
29bbff |
+ #endif
|
|
Karsten Hopp |
29bbff |
}
|
|
Karsten Hopp |
29bbff |
|
|
Karsten Hopp |
29bbff |
#ifdef ENABLE_LOG
|
|
Karsten Hopp |
29bbff |
! if (!did_print)
|
|
Karsten Hopp |
29bbff |
! {
|
|
Karsten Hopp |
29bbff |
! int col;
|
|
Karsten Hopp |
29bbff |
!
|
|
Karsten Hopp |
29bbff |
! if (sub->in_use <= 0)
|
|
Karsten Hopp |
29bbff |
! col = -1;
|
|
Karsten Hopp |
29bbff |
! else if (REG_MULTI)
|
|
Karsten Hopp |
29bbff |
! col = sub->list.multi[0].start.col;
|
|
Karsten Hopp |
29bbff |
! else
|
|
Karsten Hopp |
29bbff |
! col = (int)(sub->list.line[0].start - regline);
|
|
Karsten Hopp |
29bbff |
! nfa_set_code(state->c);
|
|
Karsten Hopp |
29bbff |
! fprintf(log_fd, "> Processing state %d for list %d. char %d: %s (start col %d)\n",
|
|
Karsten Hopp |
29bbff |
! abs(state->id), l->id, state->c, code, col);
|
|
Karsten Hopp |
29bbff |
! }
|
|
Karsten Hopp |
29bbff |
#endif
|
|
Karsten Hopp |
29bbff |
switch (state->c)
|
|
Karsten Hopp |
29bbff |
{
|
|
Karsten Hopp |
29bbff |
***************
|
|
Karsten Hopp |
29bbff |
*** 2873,2886 ****
|
|
Karsten Hopp |
29bbff |
addstate(l, state->out, sub, off);
|
|
Karsten Hopp |
29bbff |
break;
|
|
Karsten Hopp |
29bbff |
|
|
Karsten Hopp |
29bbff |
- /* If this state is reached, then a recursive call of nfa_regmatch()
|
|
Karsten Hopp |
29bbff |
- * succeeded. the next call saves the found submatches in the
|
|
Karsten Hopp |
29bbff |
- * first state after the "invisible" branch. */
|
|
Karsten Hopp |
29bbff |
- #if 0
|
|
Karsten Hopp |
29bbff |
- case NFA_END_INVISIBLE:
|
|
Karsten Hopp |
29bbff |
- break;
|
|
Karsten Hopp |
29bbff |
- #endif
|
|
Karsten Hopp |
29bbff |
-
|
|
Karsten Hopp |
29bbff |
case NFA_MOPEN + 0:
|
|
Karsten Hopp |
29bbff |
case NFA_MOPEN + 1:
|
|
Karsten Hopp |
29bbff |
case NFA_MOPEN + 2:
|
|
Karsten Hopp |
29bbff |
--- 2908,2913 ----
|
|
Karsten Hopp |
29bbff |
***************
|
|
Karsten Hopp |
29bbff |
*** 3450,3458 ****
|
|
Karsten Hopp |
29bbff |
fprintf(debug, "%s, ", code);
|
|
Karsten Hopp |
29bbff |
#endif
|
|
Karsten Hopp |
29bbff |
#ifdef ENABLE_LOG
|
|
Karsten Hopp |
29bbff |
! nfa_set_code(t->state->c);
|
|
Karsten Hopp |
29bbff |
! fprintf(log_fd, "(%d) %s, code %d ... \n", abs(t->state->id),
|
|
Karsten Hopp |
29bbff |
! code, (int)t->state->c);
|
|
Karsten Hopp |
29bbff |
#endif
|
|
Karsten Hopp |
29bbff |
|
|
Karsten Hopp |
29bbff |
/*
|
|
Karsten Hopp |
29bbff |
--- 3477,3495 ----
|
|
Karsten Hopp |
29bbff |
fprintf(debug, "%s, ", code);
|
|
Karsten Hopp |
29bbff |
#endif
|
|
Karsten Hopp |
29bbff |
#ifdef ENABLE_LOG
|
|
Karsten Hopp |
29bbff |
! {
|
|
Karsten Hopp |
29bbff |
! int col;
|
|
Karsten Hopp |
29bbff |
!
|
|
Karsten Hopp |
29bbff |
! if (t->sub.in_use <= 0)
|
|
Karsten Hopp |
29bbff |
! col = -1;
|
|
Karsten Hopp |
29bbff |
! else if (REG_MULTI)
|
|
Karsten Hopp |
29bbff |
! col = t->sub.list.multi[0].start.col;
|
|
Karsten Hopp |
29bbff |
! else
|
|
Karsten Hopp |
29bbff |
! col = (int)(t->sub.list.line[0].start - regline);
|
|
Karsten Hopp |
29bbff |
! nfa_set_code(t->state->c);
|
|
Karsten Hopp |
29bbff |
! fprintf(log_fd, "(%d) char %d %s (start col %d) ... \n",
|
|
Karsten Hopp |
29bbff |
! abs(t->state->id), (int)t->state->c, code, col);
|
|
Karsten Hopp |
29bbff |
! }
|
|
Karsten Hopp |
29bbff |
#endif
|
|
Karsten Hopp |
29bbff |
|
|
Karsten Hopp |
29bbff |
/*
|
|
Karsten Hopp |
29bbff |
***************
|
|
Karsten Hopp |
29bbff |
*** 3504,3509 ****
|
|
Karsten Hopp |
29bbff |
--- 3541,3547 ----
|
|
Karsten Hopp |
29bbff |
addstate_here(thislist, t->state->out, &t->sub, &listidx);
|
|
Karsten Hopp |
29bbff |
else
|
|
Karsten Hopp |
29bbff |
{
|
|
Karsten Hopp |
29bbff |
+ /* TODO: only copy positions in use. */
|
|
Karsten Hopp |
29bbff |
*m = t->sub;
|
|
Karsten Hopp |
29bbff |
nfa_match = TRUE;
|
|
Karsten Hopp |
29bbff |
}
|
|
Karsten Hopp |
29bbff |
***************
|
|
Karsten Hopp |
29bbff |
*** 3538,3543 ****
|
|
Karsten Hopp |
29bbff |
--- 3576,3582 ----
|
|
Karsten Hopp |
29bbff |
result = nfa_regmatch(t->state->out, submatch, m);
|
|
Karsten Hopp |
29bbff |
nfa_set_neg_listids(start);
|
|
Karsten Hopp |
29bbff |
nfa_restore_listids(start, listids);
|
|
Karsten Hopp |
29bbff |
+ nfa_match = FALSE;
|
|
Karsten Hopp |
29bbff |
|
|
Karsten Hopp |
29bbff |
#ifdef ENABLE_LOG
|
|
Karsten Hopp |
29bbff |
log_fd = fopen(NFA_REGEXP_RUN_LOG, "a");
|
|
Karsten Hopp |
29bbff |
***************
|
|
Karsten Hopp |
29bbff |
*** 3575,3583 ****
|
|
Karsten Hopp |
29bbff |
t->sub.list.line[j].start = m->list.line[j].start;
|
|
Karsten Hopp |
29bbff |
t->sub.list.line[j].end = m->list.line[j].end;
|
|
Karsten Hopp |
29bbff |
}
|
|
Karsten Hopp |
29bbff |
! t->sub.in_use = m->in_use;
|
|
Karsten Hopp |
29bbff |
|
|
Karsten Hopp |
29bbff |
! /* t->state->out1 is the corresponding END_INVISIBLE node */
|
|
Karsten Hopp |
29bbff |
addstate_here(thislist, t->state->out1->out, &t->sub,
|
|
Karsten Hopp |
29bbff |
&listidx);
|
|
Karsten Hopp |
29bbff |
}
|
|
Karsten Hopp |
29bbff |
--- 3614,3624 ----
|
|
Karsten Hopp |
29bbff |
t->sub.list.line[j].start = m->list.line[j].start;
|
|
Karsten Hopp |
29bbff |
t->sub.list.line[j].end = m->list.line[j].end;
|
|
Karsten Hopp |
29bbff |
}
|
|
Karsten Hopp |
29bbff |
! if (m->in_use > t->sub.in_use)
|
|
Karsten Hopp |
29bbff |
! t->sub.in_use = m->in_use;
|
|
Karsten Hopp |
29bbff |
|
|
Karsten Hopp |
29bbff |
! /* t->state->out1 is the corresponding END_INVISIBLE node;
|
|
Karsten Hopp |
29bbff |
! * Add it to the current list (zero-width match). */
|
|
Karsten Hopp |
29bbff |
addstate_here(thislist, t->state->out1->out, &t->sub,
|
|
Karsten Hopp |
29bbff |
&listidx);
|
|
Karsten Hopp |
29bbff |
}
|
|
Karsten Hopp |
29bbff |
***************
|
|
Karsten Hopp |
29bbff |
*** 4146,4152 ****
|
|
Karsten Hopp |
29bbff |
fprintf(f, "\tRegexp is \"%s\"\n", nfa_regengine.expr);
|
|
Karsten Hopp |
29bbff |
#endif
|
|
Karsten Hopp |
29bbff |
fprintf(f, "\tInput text is \"%s\" \n", reginput);
|
|
Karsten Hopp |
29bbff |
! fprintf(f, " =======================================================\n\n\n\n\n\n\n");
|
|
Karsten Hopp |
29bbff |
nfa_print_state(f, start);
|
|
Karsten Hopp |
29bbff |
fprintf(f, "\n\n");
|
|
Karsten Hopp |
29bbff |
fclose(f);
|
|
Karsten Hopp |
29bbff |
--- 4187,4193 ----
|
|
Karsten Hopp |
29bbff |
fprintf(f, "\tRegexp is \"%s\"\n", nfa_regengine.expr);
|
|
Karsten Hopp |
29bbff |
#endif
|
|
Karsten Hopp |
29bbff |
fprintf(f, "\tInput text is \"%s\" \n", reginput);
|
|
Karsten Hopp |
29bbff |
! fprintf(f, " =======================================================\n\n");
|
|
Karsten Hopp |
29bbff |
nfa_print_state(f, start);
|
|
Karsten Hopp |
29bbff |
fprintf(f, "\n\n");
|
|
Karsten Hopp |
29bbff |
fclose(f);
|
|
Karsten Hopp |
29bbff |
*** ../vim-7.3.1075/src/testdir/test64.in 2013-05-30 18:45:20.000000000 +0200
|
|
Karsten Hopp |
29bbff |
--- src/testdir/test64.in 2013-05-30 21:28:06.000000000 +0200
|
|
Karsten Hopp |
29bbff |
***************
|
|
Karsten Hopp |
29bbff |
*** 294,315 ****
|
|
Karsten Hopp |
29bbff |
:call add(tl, [2, '\v(a \zsif .*){2}', 'a if then a if last', 'if last', 'a if last'])
|
|
Karsten Hopp |
29bbff |
:call add(tl, [2, '\>\zs.', 'aword. ', '.'])
|
|
Karsten Hopp |
29bbff |
:"
|
|
Karsten Hopp |
29bbff |
! :"""" Tests for \@ features
|
|
Karsten Hopp |
29bbff |
! :call add(tl, [0, 'abc\@=', 'abc', 'ab'])
|
|
Karsten Hopp |
29bbff |
! :call add(tl, [0, 'abc\@=cd', 'abcd', 'abcd'])
|
|
Karsten Hopp |
29bbff |
! :call add(tl, [0, 'abc\@=', 'ababc', 'ab'])
|
|
Karsten Hopp |
29bbff |
:" will never match, no matter the input text
|
|
Karsten Hopp |
29bbff |
:call add(tl, [2, 'abcd\@=e', 'abcd'])
|
|
Karsten Hopp |
29bbff |
:" will never match
|
|
Karsten Hopp |
29bbff |
:call add(tl, [2, 'abcd\@=e', 'any text in here ... '])
|
|
Karsten Hopp |
29bbff |
! :call add(tl, [0, '\v(abc)@=..', 'xabcd', 'ab', 'abc'])
|
|
Karsten Hopp |
29bbff |
:" no match
|
|
Karsten Hopp |
29bbff |
:call add(tl, [2, '\(.*John\)\@=.*Bob', 'here is John, and here is B'])
|
|
Karsten Hopp |
29bbff |
! :call add(tl, [0, '\(John.*\)\@=.*Bob', 'John is Bobs friend', 'John is Bob', 'John is Bobs friend'])
|
|
Karsten Hopp |
29bbff |
:" no match
|
|
Karsten Hopp |
29bbff |
:call add(tl, [2, '.*John\&.*Bob', 'here is John, and here is B'])
|
|
Karsten Hopp |
29bbff |
! :call add(tl, [0, '.*John\&.*Bob', 'John is Bobs friend', 'John is Bob'])
|
|
Karsten Hopp |
29bbff |
! :call add(tl, [0, '\v(test1)@=.*yep', 'this is a test1, yep it is', 'test1, yep', 'test1'])
|
|
Karsten Hopp |
29bbff |
:"
|
|
Karsten Hopp |
29bbff |
:"""" Combining different tests and features
|
|
Karsten Hopp |
29bbff |
:call add(tl, [2, '[[:alpha:]]\{-2,6}', '787abcdiuhsasiuhb4', 'ab'])
|
|
Karsten Hopp |
29bbff |
--- 294,315 ----
|
|
Karsten Hopp |
29bbff |
:call add(tl, [2, '\v(a \zsif .*){2}', 'a if then a if last', 'if last', 'a if last'])
|
|
Karsten Hopp |
29bbff |
:call add(tl, [2, '\>\zs.', 'aword. ', '.'])
|
|
Karsten Hopp |
29bbff |
:"
|
|
Karsten Hopp |
29bbff |
! :"""" Tests for \@= and \& features
|
|
Karsten Hopp |
29bbff |
! :call add(tl, [2, 'abc\@=', 'abc', 'ab'])
|
|
Karsten Hopp |
29bbff |
! :call add(tl, [2, 'abc\@=cd', 'abcd', 'abcd'])
|
|
Karsten Hopp |
29bbff |
! :call add(tl, [2, 'abc\@=', 'ababc', 'ab'])
|
|
Karsten Hopp |
29bbff |
:" will never match, no matter the input text
|
|
Karsten Hopp |
29bbff |
:call add(tl, [2, 'abcd\@=e', 'abcd'])
|
|
Karsten Hopp |
29bbff |
:" will never match
|
|
Karsten Hopp |
29bbff |
:call add(tl, [2, 'abcd\@=e', 'any text in here ... '])
|
|
Karsten Hopp |
29bbff |
! :call add(tl, [2, '\v(abc)@=..', 'xabcd', 'ab', 'abc'])
|
|
Karsten Hopp |
29bbff |
:" no match
|
|
Karsten Hopp |
29bbff |
:call add(tl, [2, '\(.*John\)\@=.*Bob', 'here is John, and here is B'])
|
|
Karsten Hopp |
29bbff |
! :call add(tl, [2, '\(John.*\)\@=.*Bob', 'John is Bobs friend', 'John is Bob', 'John is Bobs friend'])
|
|
Karsten Hopp |
29bbff |
:" no match
|
|
Karsten Hopp |
29bbff |
:call add(tl, [2, '.*John\&.*Bob', 'here is John, and here is B'])
|
|
Karsten Hopp |
29bbff |
! :call add(tl, [2, '.*John\&.*Bob', 'John is Bobs friend', 'John is Bob'])
|
|
Karsten Hopp |
29bbff |
! :call add(tl, [2, '\v(test1)@=.*yep', 'this is a test1, yep it is', 'test1, yep', 'test1'])
|
|
Karsten Hopp |
29bbff |
:"
|
|
Karsten Hopp |
29bbff |
:"""" Combining different tests and features
|
|
Karsten Hopp |
29bbff |
:call add(tl, [2, '[[:alpha:]]\{-2,6}', '787abcdiuhsasiuhb4', 'ab'])
|
|
Karsten Hopp |
29bbff |
*** ../vim-7.3.1075/src/testdir/test64.ok 2013-05-30 18:45:20.000000000 +0200
|
|
Karsten Hopp |
29bbff |
--- src/testdir/test64.ok 2013-05-30 21:29:06.000000000 +0200
|
|
Karsten Hopp |
29bbff |
***************
|
|
Karsten Hopp |
29bbff |
*** 647,656 ****
|
|
Karsten Hopp |
29bbff |
--- 647,659 ----
|
|
Karsten Hopp |
29bbff |
OK 2 - \>\zs.
|
|
Karsten Hopp |
29bbff |
OK 0 - abc\@=
|
|
Karsten Hopp |
29bbff |
OK 1 - abc\@=
|
|
Karsten Hopp |
29bbff |
+ OK 2 - abc\@=
|
|
Karsten Hopp |
29bbff |
OK 0 - abc\@=cd
|
|
Karsten Hopp |
29bbff |
OK 1 - abc\@=cd
|
|
Karsten Hopp |
29bbff |
+ OK 2 - abc\@=cd
|
|
Karsten Hopp |
29bbff |
OK 0 - abc\@=
|
|
Karsten Hopp |
29bbff |
OK 1 - abc\@=
|
|
Karsten Hopp |
29bbff |
+ OK 2 - abc\@=
|
|
Karsten Hopp |
29bbff |
OK 0 - abcd\@=e
|
|
Karsten Hopp |
29bbff |
OK 1 - abcd\@=e
|
|
Karsten Hopp |
29bbff |
OK 2 - abcd\@=e
|
|
Karsten Hopp |
29bbff |
***************
|
|
Karsten Hopp |
29bbff |
*** 659,676 ****
|
|
Karsten Hopp |
29bbff |
--- 662,683 ----
|
|
Karsten Hopp |
29bbff |
OK 2 - abcd\@=e
|
|
Karsten Hopp |
29bbff |
OK 0 - \v(abc)@=..
|
|
Karsten Hopp |
29bbff |
OK 1 - \v(abc)@=..
|
|
Karsten Hopp |
29bbff |
+ OK 2 - \v(abc)@=..
|
|
Karsten Hopp |
29bbff |
OK 0 - \(.*John\)\@=.*Bob
|
|
Karsten Hopp |
29bbff |
OK 1 - \(.*John\)\@=.*Bob
|
|
Karsten Hopp |
29bbff |
OK 2 - \(.*John\)\@=.*Bob
|
|
Karsten Hopp |
29bbff |
OK 0 - \(John.*\)\@=.*Bob
|
|
Karsten Hopp |
29bbff |
OK 1 - \(John.*\)\@=.*Bob
|
|
Karsten Hopp |
29bbff |
+ OK 2 - \(John.*\)\@=.*Bob
|
|
Karsten Hopp |
29bbff |
OK 0 - .*John\&.*Bob
|
|
Karsten Hopp |
29bbff |
OK 1 - .*John\&.*Bob
|
|
Karsten Hopp |
29bbff |
OK 2 - .*John\&.*Bob
|
|
Karsten Hopp |
29bbff |
OK 0 - .*John\&.*Bob
|
|
Karsten Hopp |
29bbff |
OK 1 - .*John\&.*Bob
|
|
Karsten Hopp |
29bbff |
+ OK 2 - .*John\&.*Bob
|
|
Karsten Hopp |
29bbff |
OK 0 - \v(test1)@=.*yep
|
|
Karsten Hopp |
29bbff |
OK 1 - \v(test1)@=.*yep
|
|
Karsten Hopp |
29bbff |
+ OK 2 - \v(test1)@=.*yep
|
|
Karsten Hopp |
29bbff |
OK 0 - [[:alpha:]]\{-2,6}
|
|
Karsten Hopp |
29bbff |
OK 1 - [[:alpha:]]\{-2,6}
|
|
Karsten Hopp |
29bbff |
OK 2 - [[:alpha:]]\{-2,6}
|
|
Karsten Hopp |
29bbff |
*** ../vim-7.3.1075/src/version.c 2013-05-30 19:18:27.000000000 +0200
|
|
Karsten Hopp |
29bbff |
--- src/version.c 2013-05-30 21:34:53.000000000 +0200
|
|
Karsten Hopp |
29bbff |
***************
|
|
Karsten Hopp |
29bbff |
*** 730,731 ****
|
|
Karsten Hopp |
29bbff |
--- 730,733 ----
|
|
Karsten Hopp |
29bbff |
{ /* Add new patch number below this line */
|
|
Karsten Hopp |
29bbff |
+ /**/
|
|
Karsten Hopp |
29bbff |
+ 1076,
|
|
Karsten Hopp |
29bbff |
/**/
|
|
Karsten Hopp |
29bbff |
|
|
Karsten Hopp |
29bbff |
--
|
|
Karsten Hopp |
29bbff |
I'm not familiar with this proof, but I'm aware of a significant
|
|
Karsten Hopp |
29bbff |
following of toddlers who believe that peanut butter is the solution
|
|
Karsten Hopp |
29bbff |
to all of life's problems... -- Tim Hammerquist
|
|
Karsten Hopp |
29bbff |
|
|
Karsten Hopp |
29bbff |
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
|
|
Karsten Hopp |
29bbff |
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
|
|
Karsten Hopp |
29bbff |
\\\ an exciting new programming language -- http://www.Zimbu.org ///
|
|
Karsten Hopp |
29bbff |
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
|