patch 9.0.0132: multi-byte characters in virtual text not handled correctly
Problem: Multi-byte characters in virtual text not handled correctly.
Solution: Count screen cells instead of bytes.
diff --git a/src/charset.c b/src/charset.c
index 2b65747..c213704 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -1097,9 +1097,8 @@
{
char_u *p = ((char_u **)wp->w_buffer->b_textprop_text.ga_data)[
-tp->tp_id - 1];
- int len = (int)STRLEN(p);
+ int len = vim_strsize(p);
- // TODO: count screen cells
if (tp->tp_col == MAXCOL)
{
// TODO: truncating
@@ -1454,8 +1453,9 @@
if (cursor != NULL)
{
#ifdef FEAT_PROP_POPUP
- // cursor is after inserted text
- vcol += cts.cts_cur_text_width;
+ if ((State & MODE_INSERT) == 0)
+ // cursor is after inserted text
+ vcol += cts.cts_cur_text_width;
#endif
if (*ptr == TAB
&& (State & MODE_NORMAL)