summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-08-01 16:11:06 +0100
committerBram Moolenaar <Bram@vim.org>2022-08-01 16:11:06 +0100
commit783ef7214b6a33300bd83f616c1ead587370ce49 (patch)
tree000e03daade5825f8b2ef465690f8dea766f39cc
parent1f4ee19eefecd8f70b7cbe8ee9db8ace6352e23e (diff)
patch 9.0.0131: virtual text with Tab is not displayed correctlyv9.0.0131
Problem: Virtual text with Tab is not displayed correctly. Solution: Change any Tab to a space.
-rw-r--r--runtime/doc/textprop.txt2
-rw-r--r--src/testdir/test_textprop.vim4
-rw-r--r--src/textprop.c8
-rw-r--r--src/version.c2
4 files changed, 13 insertions, 3 deletions
diff --git a/runtime/doc/textprop.txt b/runtime/doc/textprop.txt
index a0c8c348d7..150d466e27 100644
--- a/runtime/doc/textprop.txt
+++ b/runtime/doc/textprop.txt
@@ -187,6 +187,8 @@ prop_add({lnum}, {col}, {props})
in the text will move the cursor to the first character after
the text, or the last character of the line.
A negative "id" will be chosen and is returned. Once a
+ Any Tab in the text will be changed to a space (Rationale:
+ otherwise the size of the text is difficult to compute).
property with "text" has been added for a buffer then using a
negative "id" for any other property will give an error:
*E1293*
diff --git a/src/testdir/test_textprop.vim b/src/testdir/test_textprop.vim
index 2a74dc7e3c..832343de14 100644
--- a/src/testdir/test_textprop.vim
+++ b/src/testdir/test_textprop.vim
@@ -2197,7 +2197,7 @@ func Test_prop_inserts_text()
call prop_type_add('otherprop', #{highlight: 'Search'})
call prop_type_add('moreprop', #{highlight: 'DiffAdd'})
call prop_add(1, 18, #{type: 'someprop', text: 'SOME '})
- call prop_add(1, 38, #{type: 'otherprop', text: 'OTHER '})
+ call prop_add(1, 38, #{type: 'otherprop', text: "OTHER\t"})
call prop_add(1, 69, #{type: 'moreprop', text: 'MORE '})
redraw
normal $
@@ -2222,7 +2222,7 @@ func Test_props_with_text_after()
call prop_type_add('afterprop', #{highlight: 'Search'})
call prop_type_add('belowprop', #{highlight: 'DiffAdd'})
call prop_add(1, 0, #{type: 'rightprop', text: ' RIGHT ', text_align: 'right'})
- call prop_add(1, 0, #{type: 'afterprop', text: ' AFTER ', text_align: 'after'})
+ call prop_add(1, 0, #{type: 'afterprop', text: "\tAFTER\t", text_align: 'after'})
call prop_add(1, 0, #{type: 'belowprop', text: ' BELOW ', text_align: 'below'})
call setline(2, 'Last line.')
diff --git a/src/textprop.c b/src/textprop.c
index f544a3ce5a..6fefc6d24c 100644
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -226,7 +226,8 @@ prop_add_one(
if (text != NULL)
{
- garray_T *gap = &buf->b_textprop_text;
+ garray_T *gap = &buf->b_textprop_text;
+ char_u *p;
// double check we got the right ID
if (-id - 1 != gap->ga_len)
@@ -236,6 +237,11 @@ prop_add_one(
if (ga_grow(gap, 1) == FAIL)
goto theend;
((char_u **)gap->ga_data)[gap->ga_len++] = text;
+
+ // change any Tab to a Space to make it simpler to compute the size
+ for (p = text; *p != NUL; MB_PTR_ADV(p))
+ if (*p == TAB)
+ *p = ' ';
text = NULL;
}
diff --git a/src/version.c b/src/version.c
index 6a8ad9b24f..09ac434b5b 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 */
/**/
+ 131,
+/**/
130,
/**/
129,