mirror of
https://github.com/vim/vim.git
synced 2025-10-02 05:04:20 -04:00
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)
This commit is contained in:
@@ -2903,7 +2903,7 @@ win_line(
|
|||||||
int endrow,
|
int endrow,
|
||||||
int nochange UNUSED) /* not updating for changed text */
|
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 */
|
unsigned off; /* offset in ScreenLines/ScreenAttrs */
|
||||||
int c = 0; /* init for GCC */
|
int c = 0; /* init for GCC */
|
||||||
long vcol = 0; /* virtual column (for tabs) */
|
long vcol = 0; /* virtual column (for tabs) */
|
||||||
@@ -3428,6 +3428,10 @@ win_line(
|
|||||||
ptr = prev_ptr;
|
ptr = prev_ptr;
|
||||||
#else
|
#else
|
||||||
--ptr;
|
--ptr;
|
||||||
|
#endif
|
||||||
|
#ifdef FEAT_MBYTE
|
||||||
|
/* character fits on the screen, don't need to skip it */
|
||||||
|
if ((*mb_ptr2cells)(ptr) >= c && col == 0)
|
||||||
#endif
|
#endif
|
||||||
n_skip = v - vcol;
|
n_skip = v - vcol;
|
||||||
}
|
}
|
||||||
|
@@ -764,6 +764,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
290,
|
||||||
/**/
|
/**/
|
||||||
289,
|
289,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user