updated for version 7.4.665

Problem:    'linebreak' does not work properly with multi-byte characters.
Solution:   Compute the pointer offset with mb_head_off().  (Yasuhiro
            Matsumoto)
This commit is contained in:
Bram Moolenaar
2015-03-20 15:58:52 +01:00
parent 6b31467aa7
commit 76feaf1bfe
2 changed files with 11 additions and 1 deletions

View File

@ -4484,11 +4484,15 @@ win_line(wp, lnum, startrow, endrow, nochange)
*/
if (wp->w_p_lbr && vim_isbreak(c) && !vim_isbreak(*ptr))
{
# ifdef FEAT_MBYTE
int off = has_mbyte ? (*mb_head_off)(line, ptr - 1) : 0;
# endif
char_u *p = ptr - (
# ifdef FEAT_MBYTE
has_mbyte ? mb_l :
off +
# endif
1);
/* TODO: is passing p for start of the line OK? */
n_extra = win_lbr_chartabsize(wp, line, p, (colnr_T)vcol,
NULL) - 1;
@ -4496,7 +4500,11 @@ win_line(wp, lnum, startrow, endrow, nochange)
n_extra = (int)wp->w_buffer->b_p_ts
- vcol % (int)wp->w_buffer->b_p_ts - 1;
# ifdef FEAT_MBYTE
c_extra = off > 0 ? MB_FILLER_CHAR : ' ';
# else
c_extra = ' ';
# endif
if (vim_iswhite(c))
{
#ifdef FEAT_CONCEAL

View File

@ -741,6 +741,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
665,
/**/
664,
/**/