0
0
mirror of https://github.com/vim/vim.git synced 2025-09-27 04:14:06 -04:00

patch 9.0.1828: cursor wrong with virt text before double-width char

Problem:  Wrong cursor position with virtual text before double-width
          char at window edge.
Solution: Check for double-width char before adding virtual text size.

closes: #12977

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
This commit is contained in:
zeertzjq
2023-08-31 18:07:30 +02:00
committed by Christian Brabandt
parent e102e44fc6
commit ac2d8815ae
4 changed files with 25 additions and 2 deletions

View File

@@ -1159,6 +1159,9 @@ win_lbr_chartabsize(
size = win_chartabsize(wp, s, vcol);
if (*s == NUL && !has_lcs_eol)
size = 0; // NUL is not displayed
# ifdef FEAT_LINEBREAK
int is_doublewidth = has_mbyte && size == 2 && MB_BYTE2LEN(*s) > 1;
# endif
# ifdef FEAT_PROP_POPUP
if (cts->cts_has_prop_with_text)
@@ -1242,8 +1245,7 @@ win_lbr_chartabsize(
# endif
# ifdef FEAT_LINEBREAK
if (has_mbyte && size == 2 && MB_BYTE2LEN(*s) > 1
&& wp->w_p_wrap && in_win_border(wp, vcol))
if (is_doublewidth && wp->w_p_wrap && in_win_border(wp, vcol + size - 2))
{
++size; // Count the ">" in the last column.
mb_added = 1;