Karsten Hopp f7f001
To: vim_dev@googlegroups.com
Karsten Hopp f7f001
Subject: Patch 7.3.553
Karsten Hopp f7f001
Fcc: outbox
Karsten Hopp f7f001
From: Bram Moolenaar <Bram@moolenaar.net>
Karsten Hopp f7f001
Mime-Version: 1.0
Karsten Hopp f7f001
Content-Type: text/plain; charset=UTF-8
Karsten Hopp f7f001
Content-Transfer-Encoding: 8bit
Karsten Hopp f7f001
------------
Karsten Hopp f7f001
Karsten Hopp f7f001
Patch 7.3.553
Karsten Hopp f7f001
Problem:    With double-width characters and 'listchars' containing "precedes"
Karsten Hopp f7f001
	    the text is displayed one cell off.
Karsten Hopp f7f001
Solution:   Check for double-width character being overwritten by the
Karsten Hopp f7f001
	    "precedes" character. (Yasuhiro Matsumoto)
Karsten Hopp f7f001
Files:	    src/screen.c
Karsten Hopp f7f001
Karsten Hopp f7f001
Karsten Hopp f7f001
*** ../vim-7.3.552/src/screen.c	2012-06-06 19:05:45.000000000 +0200
Karsten Hopp f7f001
--- src/screen.c	2012-06-13 17:55:10.000000000 +0200
Karsten Hopp f7f001
***************
Karsten Hopp f7f001
*** 89,94 ****
Karsten Hopp f7f001
--- 89,97 ----
Karsten Hopp f7f001
  
Karsten Hopp f7f001
  #include "vim.h"
Karsten Hopp f7f001
  
Karsten Hopp f7f001
+ #define MB_FILLER_CHAR '<'  /* character used when a double-width character
Karsten Hopp f7f001
+ 			     * doesn't fit. */
Karsten Hopp f7f001
+ 
Karsten Hopp f7f001
  /*
Karsten Hopp f7f001
   * The attributes that are actually active for writing to the screen.
Karsten Hopp f7f001
   */
Karsten Hopp f7f001
***************
Karsten Hopp f7f001
*** 4016,4022 ****
Karsten Hopp f7f001
  		if (n_skip > 0 && mb_l > 1 && n_extra == 0)
Karsten Hopp f7f001
  		{
Karsten Hopp f7f001
  		    n_extra = 1;
Karsten Hopp f7f001
! 		    c_extra = '<';
Karsten Hopp f7f001
  		    c = ' ';
Karsten Hopp f7f001
  		    if (area_attr == 0 && search_attr == 0)
Karsten Hopp f7f001
  		    {
Karsten Hopp f7f001
--- 4019,4025 ----
Karsten Hopp f7f001
  		if (n_skip > 0 && mb_l > 1 && n_extra == 0)
Karsten Hopp f7f001
  		{
Karsten Hopp f7f001
  		    n_extra = 1;
Karsten Hopp f7f001
! 		    c_extra = MB_FILLER_CHAR;
Karsten Hopp f7f001
  		    c = ' ';
Karsten Hopp f7f001
  		    if (area_attr == 0 && search_attr == 0)
Karsten Hopp f7f001
  		    {
Karsten Hopp f7f001
***************
Karsten Hopp f7f001
*** 4576,4581 ****
Karsten Hopp f7f001
--- 4579,4593 ----
Karsten Hopp f7f001
  	    c = lcs_prec;
Karsten Hopp f7f001
  	    lcs_prec_todo = NUL;
Karsten Hopp f7f001
  #ifdef FEAT_MBYTE
Karsten Hopp f7f001
+ 	    if (has_mbyte && (*mb_char2cells)(mb_c) > 1)
Karsten Hopp f7f001
+ 	    {
Karsten Hopp f7f001
+ 		/* Double-width character being overwritten by the "precedes"
Karsten Hopp f7f001
+ 		 * character, need to fill up half the character. */
Karsten Hopp f7f001
+ 		c_extra = MB_FILLER_CHAR;
Karsten Hopp f7f001
+ 		n_extra = 1;
Karsten Hopp f7f001
+ 		n_attr = 2;
Karsten Hopp f7f001
+ 		extra_attr = hl_attr(HLF_AT);
Karsten Hopp f7f001
+ 	    }
Karsten Hopp f7f001
  	    mb_c = c;
Karsten Hopp f7f001
  	    if (enc_utf8 && (*mb_char2len)(c) > 1)
Karsten Hopp f7f001
  	    {
Karsten Hopp f7f001
*** ../vim-7.3.552/src/version.c	2012-06-13 17:28:51.000000000 +0200
Karsten Hopp f7f001
--- src/version.c	2012-06-13 17:48:45.000000000 +0200
Karsten Hopp f7f001
***************
Karsten Hopp f7f001
*** 716,717 ****
Karsten Hopp f7f001
--- 716,719 ----
Karsten Hopp f7f001
  {   /* Add new patch number below this line */
Karsten Hopp f7f001
+ /**/
Karsten Hopp f7f001
+     553,
Karsten Hopp f7f001
  /**/
Karsten Hopp f7f001
Karsten Hopp f7f001
-- 
Karsten Hopp f7f001
hundred-and-one symptoms of being an internet addict:
Karsten Hopp f7f001
32. You don't know what sex three of your closest friends are, because they
Karsten Hopp f7f001
    have neutral nicknames and you never bothered to ask.
Karsten Hopp f7f001
Karsten Hopp f7f001
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
Karsten Hopp f7f001
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
Karsten Hopp f7f001
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
Karsten Hopp f7f001
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///