summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-08-07 21:48:37 +0100
committerBram Moolenaar <Bram@vim.org>2022-08-07 21:48:37 +0100
commit50652b0c5cfc9d48d3561772420e1f01f878f033 (patch)
tree3fe87a0db7ee82c42791fbe27951af5f51f0b2aa
parente44336b00a6c51bef904450a8012e4982e38ba2d (diff)
patch 9.0.0166: when using text properties line text length computed twicev9.0.0166
Problem: When using text properties the line text length is computed twice. Solution: If the text lenght was already computed don't do it again.
-rw-r--r--src/memline.c28
-rw-r--r--src/version.c2
2 files changed, 24 insertions, 6 deletions
diff --git a/src/memline.c b/src/memline.c
index 2f73477b5f..0b1815a37d 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -2821,6 +2821,9 @@ ml_append_int(
infoptr_T *ip;
#ifdef FEAT_PROP_POPUP
char_u *tofree = NULL;
+# ifdef FEAT_BYTEOFF
+ colnr_T text_len = 0; // text len with NUL without text properties
+# endif
#endif
int ret = FAIL;
@@ -2831,7 +2834,19 @@ ml_append_int(
lowest_marked = lnum + 1;
if (len == 0)
+ {
len = (colnr_T)STRLEN(line) + 1; // space needed for the text
+#if defined(FEAT_PROP_POPUP) && defined(FEAT_BYTEOFF)
+ text_len = len;
+#endif
+ }
+#if defined(FEAT_PROP_POPUP) && defined(FEAT_BYTEOFF)
+ else if (curbuf->b_has_textprop)
+ // "len" may include text properties, get the length of the text.
+ text_len = (colnr_T)STRLEN(line) + 1;
+ else
+ text_len = len;
+#endif
#ifdef FEAT_PROP_POPUP
if (curbuf->b_has_textprop && lnum > 0
@@ -3292,13 +3307,14 @@ 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);
+ ml_updatechunk(buf, lnum + 1,
+# ifdef FEAT_PROP_POPUP
+ (long)text_len
+# else
+ (long)len
+#endif
+ , ML_CHNK_ADDLINE);
#endif
#ifdef FEAT_NETBEANS_INTG
diff --git a/src/version.c b/src/version.c
index bccf787ef8..7544d6f1a9 100644
--- a/src/version.c
+++ b/src/version.c
@@ -736,6 +736,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 166,
+/**/
165,
/**/
164,