mirror of
https://github.com/vim/vim
synced 2025-07-16 01:01:58 +00:00
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:
10
src/screen.c
10
src/screen.c
@ -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
|
||||
|
@ -741,6 +741,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
665,
|
||||
/**/
|
||||
664,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user