From 33ecbde6688ef887fa9ab4d2bddad9a021adff3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Fri, 24 Jan 2020 11:14:57 +0100 Subject: sam: fix ^ anchor behavior in looping commands Previsouly a command like: x/^.*\n/ would only select every second line. Fixes #774 --- sam.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'sam.c') diff --git a/sam.c b/sam.c index ca0fe5a..b34ccb5 100644 --- a/sam.c +++ b/sam.c @@ -1385,9 +1385,13 @@ static int extract(Vis *vis, Win *win, Command *cmd, const char *argv[], Selecti RegexMatch match[nsub]; while (start < end || trailing_match) { trailing_match = false; - bool found = text_search_range_forward(txt, start, - end - start, cmd->regex, nsub, match, - start > range->start ? REG_NOTBOL : 0) == 0; + char c; + int flags = start > range->start && + text_byte_get(txt, start - 1, &c) && c != '\n' ? + REG_NOTBOL : 0; + bool found = !text_search_range_forward(txt, start, end - start, + cmd->regex, nsub, match, + flags); Filerange r = text_range_empty(); if (found) { if (argv[0][0] == 'x') -- cgit v1.2.3