changeset 10801:e7b8be5ecacd v8.0.0290

patch 8.0.0290: cursor positioning wrong if wide character wraps commit https://github.com/vim/vim/commit/04e87b72c5fa88b7034a5b0ec0be6a7ad763e9d2 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Feb 1 21:23:10 2017 +0100 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)
author Christian Brabandt <cb@256bit.org>
date Wed, 01 Feb 2017 21:30:04 +0100
parents 6976b8224589
children 61c9e63e1017
files src/screen.c src/version.c
diffstat 2 files changed, 8 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/screen.c
+++ b/src/screen.c
@@ -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;
 	}
 
 	/*
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    290,
+/**/
     289,
 /**/
     288,