summaryrefslogtreecommitdiff
path: root/src/regexp.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-02-12 19:08:15 +0100
committerBram Moolenaar <Bram@vim.org>2016-02-12 19:08:15 +0100
commit7c29f387819b5817b003d2ba73e2b5cf3cb3d0dd (patch)
treedddf01998f1273012d96d067bbd92828606da23c /src/regexp.c
parent7823a3bd2eed6ff9e544d201de96710bd5344aaf (diff)
downloadvim-git-7c29f387819b5817b003d2ba73e2b5cf3cb3d0dd.tar.gz
patch 7.4.1305v7.4.1305
Problem: "\%1l^#.*" does not match on a line starting with "#". Solution: Do not clear the start-of-line flag. (Christian Brabandt)
Diffstat (limited to 'src/regexp.c')
-rw-r--r--src/regexp.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/regexp.c b/src/regexp.c
index a07c6f411..9ed5c7570 100644
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -1500,6 +1500,10 @@ vim_regcomp_had_eol(void)
}
#endif
+/* variables for parsing reginput */
+static int at_start; /* True when on the first character */
+static int prev_at_start; /* True when on the second character */
+
/*
* Parse regular expression, i.e. main body or parenthesized thing.
*
@@ -1918,6 +1922,7 @@ regatom(int *flagp)
int c;
char_u *p;
int extra = 0;
+ int save_prev_at_start = prev_at_start;
*flagp = WORST; /* Tentatively. */
@@ -2331,7 +2336,11 @@ regatom(int *flagp)
else if (c == 'l' || c == 'c' || c == 'v')
{
if (c == 'l')
+ {
ret = regnode(RE_LNUM);
+ if (save_prev_at_start)
+ at_start = TRUE;
+ }
else if (c == 'c')
ret = regnode(RE_COL);
else
@@ -2946,10 +2955,6 @@ regoptail(char_u *p, char_u *val)
/*
* Functions for getting characters from the regexp input.
*/
-
-static int at_start; /* True when on the first character */
-static int prev_at_start; /* True when on the second character */
-
/*
* Start parsing at "str".
*/