diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-08-07 21:48:37 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-08-07 21:48:37 +0100 |
commit | 50652b0c5cfc9d48d3561772420e1f01f878f033 (patch) | |
tree | 3fe87a0db7ee82c42791fbe27951af5f51f0b2aa | |
parent | e44336b00a6c51bef904450a8012e4982e38ba2d (diff) | |
download | vim-git-50652b0c5cfc9d48d3561772420e1f01f878f033.tar.gz |
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.c | 28 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 24 insertions, 6 deletions
diff --git a/src/memline.c b/src/memline.c index 2f73477b5..0b1815a37 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 bccf787ef..7544d6f1a 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, |