]> granicus.if.org Git - vim/commitdiff
patch 8.2.1568: prop_find() skips properties in the same line v8.2.1568
authorBram Moolenaar <Bram@vim.org>
Wed, 2 Sep 2020 17:59:00 +0000 (19:59 +0200)
committerBram Moolenaar <Bram@vim.org>
Wed, 2 Sep 2020 17:59:00 +0000 (19:59 +0200)
Problem:    prop_find() skips properties in the same line if "skipstart" is
            used.
Solution:   Use "continue" instead of "break". (closes #6840)

src/testdir/test_textprop.vim
src/textprop.c
src/version.c

index 9db5275d5219d66db37e6d44d32523445a42d552..5990fbf3f1882d08cd640de966d31eda4757dd0b 100644 (file)
@@ -211,6 +211,22 @@ func Test_prop_find()
 
   call prop_clear(1,6)
   call prop_type_delete('prop_name')
+
+  " Multiple props per line, start on the first, should find the second.
+  let expected = {'lnum': 1, 'id': 0, 'col': 14, 'end': 1, 'type': 'misspell', 'length': 2, 'start': 1}
+  eval ['the quikc bronw fox jumsp over the layz dog']->repeat(2)->setline(1)
+  call prop_type_add('misspell', #{highlight: 'ErrorMsg'})
+  for lnum in [1, 2]
+    for col in [8, 14, 24, 38]
+      call prop_add(lnum, col, #{type: 'misspell', length: 2})
+    endfor
+  endfor
+  call cursor(1, 8)
+  let result = prop_find(#{type: 'misspell', skipstart: 1}, 'f')
+  call assert_equal(expected, result)
+
+  call prop_type_delete('misspell')
+  bwipe!
 endfunc
 
 func Test_prop_find_smaller_len_than_match_col()
index 0645e1fd70b51dd75c37d4e1845d54a6ab6826d2..9dff6b869fd979be944c89ea56f204fa2ff76dca 100644 (file)
@@ -718,7 +718,7 @@ f_prop_find(typval_T *argvars, typval_T *rettv)
                    // on a prop and we're not skipping.
                    if (start_pos_has_prop && !skipstart)
                        dir = -1;
-                   break;
+                   continue;
                }
 
                // If skipstart is true, skip the prop at start pos (even if
@@ -726,7 +726,7 @@ f_prop_find(typval_T *argvars, typval_T *rettv)
                if (start_pos_has_prop && skipstart && !seen_end)
                {
                    start_pos_has_prop = 0;
-                   break;
+                   continue;
                }
 
                prop_fill_dict(rettv->vval.v_dict, &prop, buf);
index e1d3b12ca31615f073e1f598bbe1040365f81cf2..840c32535b51ca96d7d5f928cc14cfcceece704a 100644 (file)
@@ -754,6 +754,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1568,
 /**/
     1567,
 /**/