patch 7.4.1305
Problem: "\%1l^#.*" does not match on a line starting with "#".
Solution: Do not clear the start-of-line flag. (Christian Brabandt)
diff --git a/src/regexp.c b/src/regexp.c
index a07c6f4..9ed5c75 100644
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -1500,6 +1500,10 @@
}
#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 @@
int c;
char_u *p;
int extra = 0;
+ int save_prev_at_start = prev_at_start;
*flagp = WORST; /* Tentatively. */
@@ -2331,7 +2336,11 @@
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 @@
/*
* 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".
*/