Patch 7.4.324
Problem:    In Ex mode, cyrillic characters are not handled. (Stas Malavin)
Solution:   Support multi-byte characters in Ex mode. (Yukihiro Nakadaira)
Files:      src/ex_getln.c


*** ../vim-7.4.323/src/ex_getln.c       2014-05-29 14:36:26.156862577 +0200
--- src/ex_getln.c      2014-06-12 19:33:10.440522741 +0200
***************
*** 2188,2193 ****
--- 2188,2194 ----
      int               vcol = 0;
      char_u    *p;
      int               prev_char;
+     int               len;
  
      /* Switch cursor on now.  This avoids that it happens after the "\n", 
which
       * confuses the system function that computes tabstops. */
***************
*** 2264,2270 ****
            {
                if (line_ga.ga_len > 0)
                {
!                   --line_ga.ga_len;
                    goto redraw;
                }
                continue;
--- 2265,2281 ----
            {
                if (line_ga.ga_len > 0)
                {
! #ifdef FEAT_MBYTE
!                   if (has_mbyte)
!                   {
!                       p = (char_u *)line_ga.ga_data;
!                       p[line_ga.ga_len] = NUL;
!                       len = (*mb_head_off)(p, p + line_ga.ga_len - 1) + 1;
!                       line_ga.ga_len -= len;
!                   }
!                   else
! #endif
!                       --line_ga.ga_len;
                    goto redraw;
                }
                continue;
***************
*** 2280,2286 ****
  
            if (c1 == Ctrl_T)
            {
!               long        sw = get_sw_value(curbuf);
  
                p = (char_u *)line_ga.ga_data;
                p[line_ga.ga_len] = NUL;
--- 2291,2297 ----
  
            if (c1 == Ctrl_T)
            {
!               long        sw = get_sw_value(curbuf);
  
                p = (char_u *)line_ga.ga_data;
                p[line_ga.ga_len] = NUL;
***************
*** 2300,2307 ****
                /* redraw the line */
                msg_col = startcol;
                vcol = 0;
!               for (p = (char_u *)line_ga.ga_data;
!                         p < (char_u *)line_ga.ga_data + line_ga.ga_len; ++p)
                {
                    if (*p == TAB)
                    {
--- 2311,2319 ----
                /* redraw the line */
                msg_col = startcol;
                vcol = 0;
!               p = (char_u *)line_ga.ga_data;
!               p[line_ga.ga_len] = NUL;
!               while (p < (char_u *)line_ga.ga_data + line_ga.ga_len)
                {
                    if (*p == TAB)
                    {
***************
*** 2309,2319 ****
                        {
                            msg_putchar(' ');
                        } while (++vcol % 8);
                    }
                    else
                    {
!                       msg_outtrans_len(p, 1);
!                       vcol += char2cells(*p);
                    }
                }
                msg_clr_eos();
--- 2321,2334 ----
                        {
                            msg_putchar(' ');
                        } while (++vcol % 8);
+                       ++p;
                    }
                    else
                    {
!                       len = MB_PTR2LEN(p);
!                       msg_outtrans_len(p, len);
!                       vcol += ptr2cells(p);
!                       p += len;
                    }
                }
                msg_clr_eos();
***************
*** 2362,2368 ****
  
        if (IS_SPECIAL(c1))
            c1 = '?';
!       ((char_u *)line_ga.ga_data)[line_ga.ga_len] = c1;
        if (c1 == '\n')
            msg_putchar('\n');
        else if (c1 == TAB)
--- 2377,2392 ----
  
        if (IS_SPECIAL(c1))
            c1 = '?';
! #ifdef FEAT_MBYTE
!       if (has_mbyte)
!           len = (*mb_char2bytes)(c1,
!                                 (char_u *)line_ga.ga_data + line_ga.ga_len);
!       else
! #endif
!       {
!           len = 1;
!           ((char_u *)line_ga.ga_data)[line_ga.ga_len] = c1;
!       }
        if (c1 == '\n')
            msg_putchar('\n');
        else if (c1 == TAB)
***************
*** 2376,2385 ****
        else
        {
            msg_outtrans_len(
!                    ((char_u *)line_ga.ga_data) + line_ga.ga_len, 1);
            vcol += char2cells(c1);
        }
!       ++line_ga.ga_len;
        escaped = FALSE;
  
        windgoto(msg_row, msg_col);
--- 2400,2409 ----
        else
        {
            msg_outtrans_len(
!                    ((char_u *)line_ga.ga_data) + line_ga.ga_len, len);
            vcol += char2cells(c1);
        }
!       line_ga.ga_len += len;
        escaped = FALSE;
  
        windgoto(msg_row, msg_col);
*** ../vim-7.4.323/src/version.c        2014-06-12 18:39:16.828400409 +0200
--- src/version.c       2014-06-12 19:37:40.296532950 +0200
***************
*** 736,737 ****
--- 736,739 ----
  {   /* Add new patch number below this line */
+ /**/
+     324,
  /**/

-- 
ZOOT:  I'm afraid our life must seem very dull and quiet compared to yours.
       We are but eightscore young blondes, all between sixteen and
       nineteen-and-a-half, cut off in this castle, with no one to protect us.
       Oooh.  It is a lonely life ... bathing ...  dressing ... undressing ...
       making exciting underwear....
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui