changeset 6681:80abb7288d39 v7.4.665

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)
author Bram Moolenaar <bram@vim.org>
date Fri, 20 Mar 2015 15:58:52 +0100
parents ab2401ab6ff3
children 28bb3ecefb52
files src/screen.c src/version.c
diffstat 2 files changed, 11 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/screen.c
+++ b/src/screen.c
@@ -4484,11 +4484,15 @@ win_line(wp, lnum, startrow, endrow, noc
 		 */
 		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, noc
 			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
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    665,
+/**/
     664,
 /**/
     663,