vim-patch:8.0.0147 #7121

Problem:    searchpair() does not work when 'magic' is off. (Chris Paul)
Solution:   Add \m in the pattern. (Christian Brabandt, closes vim/vim#1341)

6e450a5754
This commit is contained in:
ckelsel 2017-08-05 13:26:36 +08:00 committed by Justin M. Keyes
parent 644fa6537c
commit 120d1b80c9
3 changed files with 32 additions and 11 deletions

View File

@ -14203,6 +14203,8 @@ do_searchpair (
int nest = 1;
int options = SEARCH_KEEP;
proftime_T tm;
size_t pat2_len;
size_t pat3_len;
/* Make 'cpoptions' empty, the 'l' flag should not be used here. */
save_cpo = p_cpo;
@ -14211,18 +14213,22 @@ do_searchpair (
/* Set the time limit, if there is one. */
tm = profile_setlimit(time_limit);
/* Make two search patterns: start/end (pat2, for in nested pairs) and
* start/middle/end (pat3, for the top pair). */
pat2 = xmalloc(STRLEN(spat) + STRLEN(epat) + 15);
pat3 = xmalloc(STRLEN(spat) + STRLEN(mpat) + STRLEN(epat) + 23);
sprintf((char *)pat2, "\\(%s\\m\\)\\|\\(%s\\m\\)", spat, epat);
if (*mpat == NUL)
// Make two search patterns: start/end (pat2, for in nested pairs) and
// start/middle/end (pat3, for the top pair).
pat2_len = STRLEN(spat) + STRLEN(epat) + 17;
pat2 = xmalloc(pat2_len);
pat3_len = STRLEN(spat) + STRLEN(mpat) + STRLEN(epat) + 25;
pat3 = xmalloc(pat3_len);
snprintf((char *)pat2, pat2_len, "\\m\\(%s\\m\\)\\|\\(%s\\m\\)", spat, epat);
if (*mpat == NUL) {
STRCPY(pat3, pat2);
else
sprintf((char *)pat3, "\\(%s\\m\\)\\|\\(%s\\m\\)\\|\\(%s\\m\\)",
spat, epat, mpat);
if (flags & SP_START)
} else {
snprintf((char *)pat3, pat3_len,
"\\m\\(%s\\m\\)\\|\\(%s\\m\\)\\|\\(%s\\m\\)", spat, epat, mpat);
}
if (flags & SP_START) {
options |= SEARCH_START;
}
save_cursor = curwin->w_cursor;
pos = curwin->w_cursor;

View File

@ -283,3 +283,18 @@ func Test_use_sub_pat()
call X()
bwipe!
endfunc
func Test_searchpair()
new
call setline(1, ['other code here', '', '[', '" cursor here', ']'])
4
let a=searchpair('\[','',']','bW')
call assert_equal(3, a)
set nomagic
4
let a=searchpair('\[','',']','bW')
call assert_equal(3, a)
set magic
q!
endfunc

View File

@ -805,7 +805,7 @@ static const int included_patches[] = {
150,
// 149,
// 148,
// 147,
147,
146,
// 145 NA
// 144 NA