changeset 24608:cb031f421ece v8.2.2843

patch 8.2.2843: Vim9: skip argument to searchpairpos() is not compiled Commit: https://github.com/vim/vim/commit/f06ab6ba388c1ac907adbbde95b63769f67bc59b Author: Bram Moolenaar <Bram@vim.org> Date: Fri May 7 19:44:21 2021 +0200 patch 8.2.2843: Vim9: skip argument to searchpairpos() is not compiled Problem: Vim9: skip argument to searchpairpos() is not compiled. Solution: Handle like searchpair(). Also for search() and searchpos().
author Bram Moolenaar <Bram@vim.org>
date Fri, 07 May 2021 19:45:03 +0200
parents b7f9a322190c
children 5101931c211c
files src/testdir/test_vim9_builtin.vim src/version.c src/vim9compile.c
diffstat 3 files changed, 29 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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
 
--- 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,
--- 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)