]> granicus.if.org Git - vim/commitdiff
patch 8.0.0290: cursor positioning wrong if wide character wraps v8.0.0290
authorBram Moolenaar <Bram@vim.org>
Wed, 1 Feb 2017 20:23:10 +0000 (21:23 +0100)
committerBram Moolenaar <Bram@vim.org>
Wed, 1 Feb 2017 20:23:10 +0000 (21:23 +0100)
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)

src/screen.c
src/version.c

index a392a921263f5726426eb56d6733e9234c5e1ae5..18ae8b902ae243c931e7acb778376955fca92acf 100644 (file)
@@ -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;
        }
 
        /*
index b49b99523f6c3c1e0dc8374c9bcf91889cec27c4..c1b998bdf9ea819a524e090777f8db2f1a574a62 100644 (file)
@@ -764,6 +764,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    290,
 /**/
     289,
 /**/