Permalink
Browse files

patch 8.0.0290: cursor positioning wrong if wide character wraps

Problem:    If a wide character doesn't fit at the end of the screen line, and
            the line doesn't fit on the screen, then the cursor position may
            be wrong. (anliting)
Solution:   Don't skip over wide character. (Christian Brabandt, closes #1408)
  • Loading branch information...
brammool committed Feb 1, 2017
1 parent 21d7c9b commit 04e87b72c5fa88b7034a5b0ec0be6a7ad763e9d2
Showing with 8 additions and 2 deletions.
  1. +6 −2 src/screen.c
  2. +2 −0 src/version.c
View
@@ -2903,7 +2903,7 @@ win_line(
int endrow,
int nochange UNUSED) /* not updating for changed text */
{
- int col; /* visual column on screen */
+ int col = 0; /* visual column on screen */
unsigned off; /* offset in ScreenLines/ScreenAttrs */
int c = 0; /* init for GCC */
long vcol = 0; /* virtual column (for tabs) */
@@ -3429,7 +3429,11 @@ win_line(
#else
--ptr;
#endif
- n_skip = v - vcol;
+#ifdef FEAT_MBYTE
+ /* character fits on the screen, don't need to skip it */
+ if ((*mb_ptr2cells)(ptr) >= c && col == 0)
+#endif
+ n_skip = v - vcol;
}
/*
View
@@ -764,6 +764,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 290,
/**/
289,
/**/

0 comments on commit 04e87b7

Please sign in to comment.