提交 c76c7874 编写于 作者: R Ron Yorston 提交者: Denys Vlasenko

vi: improve handling of anchored searches

Suppose we search for a git conflict marker '<<<<<<< HEAD' using
the command '/^<<<'.  Using 'n' to go to the next match finds
'<<<' on the current line, apparently ignoring the '^' anchor.

Set a flag in the compiled regular expression to indicate that the
start of the string should not be considered a beginning-of-line
anchor.  An exception has to be made when the search starts from
the beginning of the file.  Make a similar change for end-of-line
anchors.

This doesn't affect a default build with VI_REGEX_SEARCH disabled.
When it's enabled:

function                                             old     new   delta
char_search                                          247     285     +38
Signed-off-by: NRon Yorston <rmy@pobox.com>
Signed-off-by: NDenys Vlasenko <vda.linux@googlemail.com>
上级 2916443a
......@@ -2384,6 +2384,8 @@ static char *char_search(char *p, const char *pat, int dir_and_range)
memset(&preg, 0, sizeof(preg));
err = re_compile_pattern(pat, strlen(pat), &preg);
preg.not_bol = p != text;
preg.not_eol = p != end - 1;
if (err != NULL) {
status_line_bold("bad search pattern '%s': %s", pat, err);
return p;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册