forked from aniani/vim
updated for version 7.4.360
Problem: In a regexp pattern a "$" followed by \v or \V is not seen as the
end-of-line.
Solution: Handle the situation. (Ozaki Kiichi)
This commit is contained in:
14
src/regexp.c
14
src/regexp.c
@@ -3109,15 +3109,25 @@ peekchr()
|
|||||||
if (reg_magic >= MAGIC_OFF)
|
if (reg_magic >= MAGIC_OFF)
|
||||||
{
|
{
|
||||||
char_u *p = regparse + 1;
|
char_u *p = regparse + 1;
|
||||||
|
int is_magic_all = (reg_magic == MAGIC_ALL);
|
||||||
|
|
||||||
/* ignore \c \C \m and \M after '$' */
|
/* ignore \c \C \m \M \v \V and \Z after '$' */
|
||||||
while (p[0] == '\\' && (p[1] == 'c' || p[1] == 'C'
|
while (p[0] == '\\' && (p[1] == 'c' || p[1] == 'C'
|
||||||
|| p[1] == 'm' || p[1] == 'M' || p[1] == 'Z'))
|
|| p[1] == 'm' || p[1] == 'M'
|
||||||
|
|| p[1] == 'v' || p[1] == 'V' || p[1] == 'Z'))
|
||||||
|
{
|
||||||
|
if (p[1] == 'v')
|
||||||
|
is_magic_all = TRUE;
|
||||||
|
else if (p[1] == 'm' || p[1] == 'M' || p[1] == 'V')
|
||||||
|
is_magic_all = FALSE;
|
||||||
p += 2;
|
p += 2;
|
||||||
|
}
|
||||||
if (p[0] == NUL
|
if (p[0] == NUL
|
||||||
|| (p[0] == '\\'
|
|| (p[0] == '\\'
|
||||||
&& (p[1] == '|' || p[1] == '&' || p[1] == ')'
|
&& (p[1] == '|' || p[1] == '&' || p[1] == ')'
|
||||||
|| p[1] == 'n'))
|
|| p[1] == 'n'))
|
||||||
|
|| (is_magic_all
|
||||||
|
&& (p[0] == '|' || p[0] == '&' || p[0] == ')'))
|
||||||
|| reg_magic == MAGIC_ALL)
|
|| reg_magic == MAGIC_ALL)
|
||||||
curchr = Magic('$');
|
curchr = Magic('$');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -734,6 +734,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
360,
|
||||||
/**/
|
/**/
|
||||||
359,
|
359,
|
||||||
/**/
|
/**/
|
||||||
|
|||||||
Reference in New Issue
Block a user