summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-08-25 16:40:03 +0200
committerBram Moolenaar <Bram@vim.org>2021-08-25 16:40:03 +0200
commitcdd8a5e6fe089a3b1370ac940d06fc3cefc6f8f2 (patch)
tree10f350717f6d85b661fcd8124bc57c69cc6e4797
parent5ca5cc6412d7d68fd380926f9551a8b7ba335199 (diff)
downloadvim-git-cdd8a5e6fe089a3b1370ac940d06fc3cefc6f8f2.tar.gz
patch 8.2.3372: line2byte() value wrong when adding a text propertyv8.2.3372
Problem: line2byte() value wrong when adding a text property. (Yuto Kimura) Solution: Adjust length for text property. (closes #8772) Also fix it for deleting a line.
-rw-r--r--src/memline.c12
-rw-r--r--src/testdir/test_textprop.vim9
-rw-r--r--src/version.c2
3 files changed, 22 insertions, 1 deletions
diff --git a/src/memline.c b/src/memline.c
index 5aeee900f..2192036ed 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -3251,9 +3251,15 @@ ml_append_int(
}
#ifdef FEAT_BYTEOFF
+# ifdef FEAT_PROP_POPUP
+ if (curbuf->b_has_textprop)
+ // only use the space needed for the text, ignore properties
+ len = (colnr_T)STRLEN(line) + 1;
+# endif
// The line was inserted below 'lnum'
ml_updatechunk(buf, lnum + 1, (long)len, ML_CHNK_ADDLINE);
#endif
+
#ifdef FEAT_NETBEANS_INTG
if (netbeans_active())
{
@@ -3752,7 +3758,11 @@ ml_delete_int(buf_T *buf, linenr_T lnum, int flags)
}
#ifdef FEAT_BYTEOFF
- ml_updatechunk(buf, lnum, line_size, ML_CHNK_DELLINE);
+ ml_updatechunk(buf, lnum, line_size
+# ifdef FEAT_PROP_POPUP
+ - textprop_save_len
+# endif
+ , ML_CHNK_DELLINE);
#endif
ret = OK;
diff --git a/src/testdir/test_textprop.vim b/src/testdir/test_textprop.vim
index 373df6e65..f21fd4048 100644
--- a/src/testdir/test_textprop.vim
+++ b/src/testdir/test_textprop.vim
@@ -857,6 +857,15 @@ func Test_prop_line2byte()
call assert_equal(1491, line2byte(401))
bwipe!
+ new
+ call setline(1, range(520))
+ call assert_equal(1491, line2byte(401))
+ call prop_add(2, 1, {'type': 'comment'})
+ call assert_equal(1491, line2byte(401))
+ 2delete
+ call assert_equal(1489, line2byte(400))
+ bwipe!
+
call prop_type_delete('comment')
endfunc
diff --git a/src/version.c b/src/version.c
index 6e7dd93cb..1f9a27016 100644
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 3372,
+/**/
3371,
/**/
3370,