0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

updated for version 7.0130

This commit is contained in:
Bram Moolenaar
2005-08-15 21:41:48 +00:00
parent 90cfdbe040
commit ae5bce1c12
54 changed files with 2773 additions and 247 deletions

View File

@@ -606,6 +606,7 @@ static int reg_magic; /* magicness of the pattern: */
static int reg_string; /* matching with a string instead of a buffer
line */
static int reg_strict; /* "[abc" is illegal */
/*
* META contains all characters that may be magic, except '^' and '$'.
@@ -1132,6 +1133,7 @@ regcomp_start(expr, re_flags)
else
reg_magic = MAGIC_OFF;
reg_string = (re_flags & RE_STRING);
reg_strict = (re_flags & RE_STRICT);
num_complex_braces = 0;
regnpar = 1;
@@ -2253,6 +2255,9 @@ collection:
*flagp |= HASWIDTH | SIMPLE;
break;
}
else if (reg_strict)
EMSG_M_RET_NULL(_("E769: Missing ] after %s["),
reg_magic > MAGIC_OFF);
}
/* FALLTHROUGH */
@@ -3172,6 +3177,9 @@ reg_getline(lnum)
* can't go before line 1 */
if (reg_firstlnum + lnum < 1)
return NULL;
if (reg_firstlnum + lnum > reg_buf->b_ml.ml_line_count)
/* Must have matched the "\n" in the last line. */
return (char_u *)"";
return ml_get_buf(reg_buf, reg_firstlnum + lnum, FALSE);
}
@@ -3455,8 +3463,8 @@ vim_regexec_both(line, col)
/* if not currently on the first line, get it again */
if (reglnum != 0)
{
regline = reg_getline((linenr_T)0);
reglnum = 0;
regline = reg_getline((linenr_T)0);
}
if (regline[col] == NUL)
break;
@@ -3723,7 +3731,8 @@ regmatch(scan)
op = OP(scan);
/* Check for character class with NL added. */
if (WITH_NL(op) && *reginput == NUL && reglnum < reg_maxline)
if (!reg_line_lbr && WITH_NL(op) && *reginput == NUL
&& reglnum <= reg_maxline)
{
reg_nextline();
}
@@ -4369,7 +4378,7 @@ regmatch(scan)
}
if (clnum == reg_endpos[no].lnum)
break; /* match and at end! */
if (reglnum == reg_maxline)
if (reglnum >= reg_maxline)
{
status = RA_NOMATCH; /* text too short */
break;
@@ -4672,7 +4681,7 @@ regmatch(scan)
break;
case NEWL:
if ((c != NUL || reglnum == reg_maxline)
if ((c != NUL || reglnum > reg_maxline || reg_line_lbr)
&& (c != '\n' || !reg_line_lbr))
status = RA_NOMATCH;
else if (reg_line_lbr)
@@ -5133,7 +5142,8 @@ regrepeat(p, maxcount)
++count;
mb_ptr_adv(scan);
}
if (!WITH_NL(OP(p)) || reglnum == reg_maxline || count == maxcount)
if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr
|| count == maxcount)
break;
++count; /* count the line-break */
reg_nextline();
@@ -5157,7 +5167,7 @@ regrepeat(p, maxcount)
}
else if (*scan == NUL)
{
if (!WITH_NL(OP(p)) || reglnum == reg_maxline)
if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr)
break;
reg_nextline();
scan = reginput;
@@ -5186,7 +5196,7 @@ regrepeat(p, maxcount)
}
else if (*scan == NUL)
{
if (!WITH_NL(OP(p)) || reglnum == reg_maxline)
if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr)
break;
reg_nextline();
scan = reginput;
@@ -5215,7 +5225,7 @@ regrepeat(p, maxcount)
}
else if (*scan == NUL)
{
if (!WITH_NL(OP(p)) || reglnum == reg_maxline)
if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr)
break;
reg_nextline();
scan = reginput;
@@ -5240,7 +5250,7 @@ regrepeat(p, maxcount)
{
if (*scan == NUL)
{
if (!WITH_NL(OP(p)) || reglnum == reg_maxline)
if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr)
break;
reg_nextline();
scan = reginput;
@@ -5270,7 +5280,7 @@ do_class:
#endif
if (*scan == NUL)
{
if (!WITH_NL(OP(p)) || reglnum == reg_maxline)
if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr)
break;
reg_nextline();
scan = reginput;
@@ -5433,7 +5443,7 @@ do_class:
#endif
if (*scan == NUL)
{
if (!WITH_NL(OP(p)) || reglnum == reg_maxline)
if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr)
break;
reg_nextline();
scan = reginput;
@@ -5462,7 +5472,7 @@ do_class:
case NEWL:
while (count < maxcount
&& ((*scan == NUL && reglnum < reg_maxline)
&& ((*scan == NUL && reglnum <= reg_maxline && !reg_line_lbr)
|| (*scan == '\n' && reg_line_lbr)))
{
count++;