diff options
author | Bram Moolenaar <Bram@vim.org> | 2021-05-07 19:44:21 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-05-07 19:44:21 +0200 |
commit | f06ab6ba388c1ac907adbbde95b63769f67bc59b (patch) | |
tree | 087376a950cb6e74a92a35112583a6f60240517e | |
parent | f18332fb9e2e4208a97d800f096b02c6681780e7 (diff) | |
download | vim-git-f06ab6ba388c1ac907adbbde95b63769f67bc59b.tar.gz |
patch 8.2.2843: Vim9: skip argument to searchpairpos() is not compiledv8.2.2843
Problem: Vim9: skip argument to searchpairpos() is not compiled.
Solution: Handle like searchpair(). Also for search() and searchpos().
-rw-r--r-- | src/testdir/test_vim9_builtin.vim | 21 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim9compile.c | 8 |
3 files changed, 29 insertions, 2 deletions
diff --git a/src/testdir/test_vim9_builtin.vim b/src/testdir/test_vim9_builtin.vim index 3232d9b3b..41063c544 100644 --- a/src/testdir/test_vim9_builtin.vim +++ b/src/testdir/test_vim9_builtin.vim @@ -958,6 +958,20 @@ def Test_search() search('bar', 'W', 0, 0, () => 1)->assert_equal(0) assert_fails("search('bar', '', 0, 0, () => -1)", 'E1023:') assert_fails("search('bar', '', 0, 0, () => -1)", 'E1023:') + + setline(1, "find this word") + normal gg + var col = 7 + assert_equal(1, search('this', '', 0, 0, 'col(".") > col')) + normal 0 + assert_equal([1, 6], searchpos('this', '', 0, 0, 'col(".") > col')) + + col = 5 + normal 0 + assert_equal(0, search('this', '', 0, 0, 'col(".") > col')) + normal 0 + assert_equal([0, 0], searchpos('this', '', 0, 0, 'col(".") > col')) + bwipe! enddef def Test_searchcount() @@ -977,14 +991,21 @@ enddef def Test_searchpair() new setline(1, "here { and } there") + normal f{ var col = 15 assert_equal(1, searchpair('{', '', '}', '', 'col(".") > col')) assert_equal(12, col('.')) + normal 0f{ + assert_equal([1, 12], searchpairpos('{', '', '}', '', 'col(".") > col')) + col = 8 normal 0f{ assert_equal(0, searchpair('{', '', '}', '', 'col(".") > col')) assert_equal(6, col('.')) + normal 0f{ + assert_equal([0, 0], searchpairpos('{', '', '}', '', 'col(".") > col')) + bwipe! enddef diff --git a/src/version.c b/src/version.c index 12aace894..01c77921c 100644 --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2843, +/**/ 2842, /**/ 2841, diff --git a/src/vim9compile.c b/src/vim9compile.c index 03aca55b8..fd32660e0 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -3285,8 +3285,12 @@ compile_call( vim_strncpy(namebuf, *arg, varlen); name = fname_trans_sid(namebuf, fname_buf, &tofree, &error); - // we handle the "skip" argument of searchpair() differently - is_searchpair = (varlen == 10 && STRNCMP(*arg, "searchpair", 10) == 0); + // We handle the "skip" argument of searchpair() and searchpairpos() + // differently. + is_searchpair = (varlen == 6 && STRNCMP(*arg, "search", 6) == 0) + || (varlen == 9 && STRNCMP(*arg, "searchpos", 9) == 0) + || (varlen == 10 && STRNCMP(*arg, "searchpair", 10) == 0) + || (varlen == 13 && STRNCMP(*arg, "searchpairpos", 13) == 0); *arg = skipwhite(*arg + varlen + 1); if (compile_arguments(arg, cctx, &argcount, is_searchpair) == FAIL) |