Karsten Hopp 860de2
To: vim_dev@googlegroups.com
Karsten Hopp 860de2
Subject: Patch 7.4.324
Karsten Hopp 860de2
Fcc: outbox
Karsten Hopp 860de2
From: Bram Moolenaar <Bram@moolenaar.net>
Karsten Hopp 860de2
Mime-Version: 1.0
Karsten Hopp 860de2
Content-Type: text/plain; charset=UTF-8
Karsten Hopp 860de2
Content-Transfer-Encoding: 8bit
Karsten Hopp 860de2
------------
Karsten Hopp 860de2
Karsten Hopp 860de2
Patch 7.4.324
Karsten Hopp 860de2
Problem:    In Ex mode, cyrillic characters are not handled. (Stas Malavin)
Karsten Hopp 860de2
Solution:   Support multi-byte characters in Ex mode. (Yukihiro Nakadaira)
Karsten Hopp 860de2
Files:	    src/ex_getln.c
Karsten Hopp 860de2
Karsten Hopp 860de2
Karsten Hopp 860de2
*** ../vim-7.4.323/src/ex_getln.c	2014-05-29 14:36:26.156862577 +0200
Karsten Hopp 860de2
--- src/ex_getln.c	2014-06-12 19:33:10.440522741 +0200
Karsten Hopp 860de2
***************
Karsten Hopp 860de2
*** 2188,2193 ****
Karsten Hopp 860de2
--- 2188,2194 ----
Karsten Hopp 860de2
      int		vcol = 0;
Karsten Hopp 860de2
      char_u	*p;
Karsten Hopp 860de2
      int		prev_char;
Karsten Hopp 860de2
+     int		len;
Karsten Hopp 860de2
  
Karsten Hopp 860de2
      /* Switch cursor on now.  This avoids that it happens after the "\n", which
Karsten Hopp 860de2
       * confuses the system function that computes tabstops. */
Karsten Hopp 860de2
***************
Karsten Hopp 860de2
*** 2264,2270 ****
Karsten Hopp 860de2
  	    {
Karsten Hopp 860de2
  		if (line_ga.ga_len > 0)
Karsten Hopp 860de2
  		{
Karsten Hopp 860de2
! 		    --line_ga.ga_len;
Karsten Hopp 860de2
  		    goto redraw;
Karsten Hopp 860de2
  		}
Karsten Hopp 860de2
  		continue;
Karsten Hopp 860de2
--- 2265,2281 ----
Karsten Hopp 860de2
  	    {
Karsten Hopp 860de2
  		if (line_ga.ga_len > 0)
Karsten Hopp 860de2
  		{
Karsten Hopp 860de2
! #ifdef FEAT_MBYTE
Karsten Hopp 860de2
! 		    if (has_mbyte)
Karsten Hopp 860de2
! 		    {
Karsten Hopp 860de2
! 			p = (char_u *)line_ga.ga_data;
Karsten Hopp 860de2
! 			p[line_ga.ga_len] = NUL;
Karsten Hopp 860de2
! 			len = (*mb_head_off)(p, p + line_ga.ga_len - 1) + 1;
Karsten Hopp 860de2
! 			line_ga.ga_len -= len;
Karsten Hopp 860de2
! 		    }
Karsten Hopp 860de2
! 		    else
Karsten Hopp 860de2
! #endif
Karsten Hopp 860de2
! 			--line_ga.ga_len;
Karsten Hopp 860de2
  		    goto redraw;
Karsten Hopp 860de2
  		}
Karsten Hopp 860de2
  		continue;
Karsten Hopp 860de2
***************
Karsten Hopp 860de2
*** 2280,2286 ****
Karsten Hopp 860de2
  
Karsten Hopp 860de2
  	    if (c1 == Ctrl_T)
Karsten Hopp 860de2
  	    {
Karsten Hopp 860de2
! 		long        sw = get_sw_value(curbuf);
Karsten Hopp 860de2
  
Karsten Hopp 860de2
  		p = (char_u *)line_ga.ga_data;
Karsten Hopp 860de2
  		p[line_ga.ga_len] = NUL;
Karsten Hopp 860de2
--- 2291,2297 ----
Karsten Hopp 860de2
  
Karsten Hopp 860de2
  	    if (c1 == Ctrl_T)
Karsten Hopp 860de2
  	    {
Karsten Hopp 860de2
! 		long	    sw = get_sw_value(curbuf);
Karsten Hopp 860de2
  
Karsten Hopp 860de2
  		p = (char_u *)line_ga.ga_data;
Karsten Hopp 860de2
  		p[line_ga.ga_len] = NUL;
Karsten Hopp 860de2
***************
Karsten Hopp 860de2
*** 2300,2307 ****
Karsten Hopp 860de2
  		/* redraw the line */
Karsten Hopp 860de2
  		msg_col = startcol;
Karsten Hopp 860de2
  		vcol = 0;
Karsten Hopp 860de2
! 		for (p = (char_u *)line_ga.ga_data;
Karsten Hopp 860de2
! 			  p < (char_u *)line_ga.ga_data + line_ga.ga_len; ++p)
Karsten Hopp 860de2
  		{
Karsten Hopp 860de2
  		    if (*p == TAB)
Karsten Hopp 860de2
  		    {
Karsten Hopp 860de2
--- 2311,2319 ----
Karsten Hopp 860de2
  		/* redraw the line */
Karsten Hopp 860de2
  		msg_col = startcol;
Karsten Hopp 860de2
  		vcol = 0;
Karsten Hopp 860de2
! 		p = (char_u *)line_ga.ga_data;
Karsten Hopp 860de2
! 		p[line_ga.ga_len] = NUL;
Karsten Hopp 860de2
! 		while (p < (char_u *)line_ga.ga_data + line_ga.ga_len)
Karsten Hopp 860de2
  		{
Karsten Hopp 860de2
  		    if (*p == TAB)
Karsten Hopp 860de2
  		    {
Karsten Hopp 860de2
***************
Karsten Hopp 860de2
*** 2309,2319 ****
Karsten Hopp 860de2
  			{
Karsten Hopp 860de2
  			    msg_putchar(' ');
Karsten Hopp 860de2
  			} while (++vcol % 8);
Karsten Hopp 860de2
  		    }
Karsten Hopp 860de2
  		    else
Karsten Hopp 860de2
  		    {
Karsten Hopp 860de2
! 			msg_outtrans_len(p, 1);
Karsten Hopp 860de2
! 			vcol += char2cells(*p);
Karsten Hopp 860de2
  		    }
Karsten Hopp 860de2
  		}
Karsten Hopp 860de2
  		msg_clr_eos();
Karsten Hopp 860de2
--- 2321,2334 ----
Karsten Hopp 860de2
  			{
Karsten Hopp 860de2
  			    msg_putchar(' ');
Karsten Hopp 860de2
  			} while (++vcol % 8);
Karsten Hopp 860de2
+ 			++p;
Karsten Hopp 860de2
  		    }
Karsten Hopp 860de2
  		    else
Karsten Hopp 860de2
  		    {
Karsten Hopp 860de2
! 			len = MB_PTR2LEN(p);
Karsten Hopp 860de2
! 			msg_outtrans_len(p, len);
Karsten Hopp 860de2
! 			vcol += ptr2cells(p);
Karsten Hopp 860de2
! 			p += len;
Karsten Hopp 860de2
  		    }
Karsten Hopp 860de2
  		}
Karsten Hopp 860de2
  		msg_clr_eos();
Karsten Hopp 860de2
***************
Karsten Hopp 860de2
*** 2362,2368 ****
Karsten Hopp 860de2
  
Karsten Hopp 860de2
  	if (IS_SPECIAL(c1))
Karsten Hopp 860de2
  	    c1 = '?';
Karsten Hopp 860de2
! 	((char_u *)line_ga.ga_data)[line_ga.ga_len] = c1;
Karsten Hopp 860de2
  	if (c1 == '\n')
Karsten Hopp 860de2
  	    msg_putchar('\n');
Karsten Hopp 860de2
  	else if (c1 == TAB)
Karsten Hopp 860de2
--- 2377,2392 ----
Karsten Hopp 860de2
  
Karsten Hopp 860de2
  	if (IS_SPECIAL(c1))
Karsten Hopp 860de2
  	    c1 = '?';
Karsten Hopp 860de2
! #ifdef FEAT_MBYTE
Karsten Hopp 860de2
! 	if (has_mbyte)
Karsten Hopp 860de2
! 	    len = (*mb_char2bytes)(c1,
Karsten Hopp 860de2
! 				  (char_u *)line_ga.ga_data + line_ga.ga_len);
Karsten Hopp 860de2
! 	else
Karsten Hopp 860de2
! #endif
Karsten Hopp 860de2
! 	{
Karsten Hopp 860de2
! 	    len = 1;
Karsten Hopp 860de2
! 	    ((char_u *)line_ga.ga_data)[line_ga.ga_len] = c1;
Karsten Hopp 860de2
! 	}
Karsten Hopp 860de2
  	if (c1 == '\n')
Karsten Hopp 860de2
  	    msg_putchar('\n');
Karsten Hopp 860de2
  	else if (c1 == TAB)
Karsten Hopp 860de2
***************
Karsten Hopp 860de2
*** 2376,2385 ****
Karsten Hopp 860de2
  	else
Karsten Hopp 860de2
  	{
Karsten Hopp 860de2
  	    msg_outtrans_len(
Karsten Hopp 860de2
! 		     ((char_u *)line_ga.ga_data) + line_ga.ga_len, 1);
Karsten Hopp 860de2
  	    vcol += char2cells(c1);
Karsten Hopp 860de2
  	}
Karsten Hopp 860de2
! 	++line_ga.ga_len;
Karsten Hopp 860de2
  	escaped = FALSE;
Karsten Hopp 860de2
  
Karsten Hopp 860de2
  	windgoto(msg_row, msg_col);
Karsten Hopp 860de2
--- 2400,2409 ----
Karsten Hopp 860de2
  	else
Karsten Hopp 860de2
  	{
Karsten Hopp 860de2
  	    msg_outtrans_len(
Karsten Hopp 860de2
! 		     ((char_u *)line_ga.ga_data) + line_ga.ga_len, len);
Karsten Hopp 860de2
  	    vcol += char2cells(c1);
Karsten Hopp 860de2
  	}
Karsten Hopp 860de2
! 	line_ga.ga_len += len;
Karsten Hopp 860de2
  	escaped = FALSE;
Karsten Hopp 860de2
  
Karsten Hopp 860de2
  	windgoto(msg_row, msg_col);
Karsten Hopp 860de2
*** ../vim-7.4.323/src/version.c	2014-06-12 18:39:16.828400409 +0200
Karsten Hopp 860de2
--- src/version.c	2014-06-12 19:37:40.296532950 +0200
Karsten Hopp 860de2
***************
Karsten Hopp 860de2
*** 736,737 ****
Karsten Hopp 860de2
--- 736,739 ----
Karsten Hopp 860de2
  {   /* Add new patch number below this line */
Karsten Hopp 860de2
+ /**/
Karsten Hopp 860de2
+     324,
Karsten Hopp 860de2
  /**/
Karsten Hopp 860de2
Karsten Hopp 860de2
-- 
Karsten Hopp 860de2
ZOOT:  I'm afraid our life must seem very dull and quiet compared to yours.
Karsten Hopp 860de2
       We are but eightscore young blondes, all between sixteen and
Karsten Hopp 860de2
       nineteen-and-a-half, cut off in this castle, with no one to protect us.
Karsten Hopp 860de2
       Oooh.  It is a lonely life ... bathing ...  dressing ... undressing ...
Karsten Hopp 860de2
       making exciting underwear....
Karsten Hopp 860de2
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
Karsten Hopp 860de2
Karsten Hopp 860de2
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
Karsten Hopp 860de2
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
Karsten Hopp 860de2
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
Karsten Hopp 860de2
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///