# HG changeset patch # User Bram Moolenaar # Date 1599069605 -7200 # Node ID 35c8996a798e81db42fac0db7b914ce3faa952ab # Parent 12f8ed01b5b3a527e91123091eb978507f725343 patch 8.2.1568: prop_find() skips properties in the same line Commit: https://github.com/vim/vim/commit/4da7a259f6b28a4f855a6fa7d0ede5e038600154 Author: Bram Moolenaar Date: Wed Sep 2 19:59:00 2020 +0200 patch 8.2.1568: prop_find() skips properties in the same line Problem: prop_find() skips properties in the same line if "skipstart" is used. Solution: Use "continue" instead of "break". (closes #6840) diff --git a/src/testdir/test_textprop.vim b/src/testdir/test_textprop.vim --- a/src/testdir/test_textprop.vim +++ b/src/testdir/test_textprop.vim @@ -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() diff --git a/src/textprop.c b/src/textprop.c --- a/src/textprop.c +++ b/src/textprop.c @@ -718,7 +718,7 @@ f_prop_find(typval_T *argvars, typval_T // 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 if (start_pos_has_prop && skipstart && !seen_end) { start_pos_has_prop = 0; - break; + continue; } prop_fill_dict(rettv->vval.v_dict, &prop, buf); diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1568, +/**/ 1567, /**/ 1566,