forked from aniani/vim
updated for version 7.2.354
Problem: Japanese single-width double-byte characters not handled correctly. Solution: Put 0x8e in ScreenLines[] and the second byte in ScreenLines2[]. (partly by Kikuchan)
This commit is contained in:
13
src/screen.c
13
src/screen.c
@@ -2335,13 +2335,12 @@ fold_line(wp, fold_count, foldinfo, lnum, row)
|
|||||||
if (cells > 1)
|
if (cells > 1)
|
||||||
ScreenLines[idx + 1] = 0;
|
ScreenLines[idx + 1] = 0;
|
||||||
}
|
}
|
||||||
else if (cells > 1) /* double-byte character */
|
else if (enc_dbcs == DBCS_JPNU && *p == 0x8e)
|
||||||
{
|
/* double-byte single width character */
|
||||||
if (enc_dbcs == DBCS_JPNU && *p == 0x8e)
|
|
||||||
ScreenLines2[idx] = p[1];
|
ScreenLines2[idx] = p[1];
|
||||||
else
|
else if (cells > 1)
|
||||||
|
/* double-width character */
|
||||||
ScreenLines[idx + 1] = p[1];
|
ScreenLines[idx + 1] = p[1];
|
||||||
}
|
|
||||||
col += cells;
|
col += cells;
|
||||||
idx += cells;
|
idx += cells;
|
||||||
p += c_len;
|
p += c_len;
|
||||||
@@ -4631,7 +4630,11 @@ win_line(wp, lnum, startrow, endrow, nochange)
|
|||||||
ScreenLines[off] = c;
|
ScreenLines[off] = c;
|
||||||
#ifdef FEAT_MBYTE
|
#ifdef FEAT_MBYTE
|
||||||
if (enc_dbcs == DBCS_JPNU)
|
if (enc_dbcs == DBCS_JPNU)
|
||||||
|
{
|
||||||
|
if ((mb_c & 0xff00) == 0x8e00)
|
||||||
|
ScreenLines[off] = 0x8e;
|
||||||
ScreenLines2[off] = mb_c & 0xff;
|
ScreenLines2[off] = mb_c & 0xff;
|
||||||
|
}
|
||||||
else if (enc_utf8)
|
else if (enc_utf8)
|
||||||
{
|
{
|
||||||
if (mb_utf8)
|
if (mb_utf8)
|
||||||
|
@@ -681,6 +681,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 */
|
||||||
|
/**/
|
||||||
|
354,
|
||||||
/**/
|
/**/
|
||||||
353,
|
353,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user