changeset 20667:a126f643d566 v8.2.0887

patch 8.2.0887: searchcount().exact_match is 1 right after a match Commit: https://github.com/vim/vim/commit/57f75a5a364ad4d8334fdf6b6b41420b48e08390 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Jun 2 22:06:21 2020 +0200 patch 8.2.0887: searchcount().exact_match is 1 right after a match Problem: Searchcount().exact_match is 1 right after a match. Solution: Use LT_POS() instead of LTOREQ_POS(). (closes https://github.com/vim/vim/issues/6189)
author Bram Moolenaar <Bram@vim.org>
date Tue, 02 Jun 2020 22:15:04 +0200
parents e66b9b38cfab
children ba02770e447a
files src/search.c src/testdir/test_search_stat.vim src/version.c
diffstat 3 files changed, 11 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/search.c
+++ b/src/search.c
@@ -3252,7 +3252,7 @@ update_search_stat(
 	    if (LTOREQ_POS(lastpos, p))
 	    {
 		cur = cnt;
-		if (LTOREQ_POS(p, endpos))
+		if (LT_POS(p, endpos))
 		    exact_match = TRUE;
 	    }
 	    fast_breakcheck();
--- a/src/testdir/test_search_stat.vim
+++ b/src/testdir/test_search_stat.vim
@@ -27,6 +27,14 @@ func Test_search_stat()
   call assert_equal(
     \ #{current: 1, exact_match: 1, total: 10, incomplete: 0, maxcount: 99},
     \ searchcount(#{pattern: 'fooooobar', pos: [3, 1, 0]}))
+  " on last char of match
+  call assert_equal(
+    \ #{current: 1, exact_match: 1, total: 10, incomplete: 0, maxcount: 99},
+    \ searchcount(#{pattern: 'fooooobar', pos: [3, 9, 0]}))
+  " on char after match
+  call assert_equal(
+    \ #{current: 1, exact_match: 0, total: 10, incomplete: 0, maxcount: 99},
+    \ searchcount(#{pattern: 'fooooobar', pos: [3, 10, 0]}))
   call assert_equal(
     \ #{current: 1, exact_match: 0, total: 10, incomplete: 0, maxcount: 99},
     \ searchcount(#{pattern: 'fooooobar', pos: [4, 1, 0]}))
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    887,
+/**/
     886,
 /**/
     885,