Patch 7.4.1076
Problem:    CTRL-A does not work well in right-left mode.
Solution:   Remove reversing the line, add a test. (Hirohito Higashi)
Files:      src/ops.c, src/testdir/test_increment.vim


*** ../vim-7.4.1075/src/ops.c   2016-01-04 21:43:02.824884502 +0100
--- src/ops.c   2016-01-10 14:06:50.759177823 +0100
***************
*** 5339,5369 ****
      bdp->textstart = pstart;
  }
  
- #ifdef FEAT_RIGHTLEFT
- static void reverse_line __ARGS((char_u *s));
- 
-     static void
- reverse_line(s)
-     char_u *s;
- {
-     int           i, j;
-     char_u  c;
- 
-     if ((i = (int)STRLEN(s) - 1) <= 0)
-       return;
- 
-     curwin->w_cursor.col = i - curwin->w_cursor.col;
-     for (j = 0; j < i; j++, i--)
-     {
-       c = s[i]; s[i] = s[j]; s[j] = c;
-     }
- }
- 
- # define RLADDSUBFIX(ptr) if (curwin->w_p_rl) reverse_line(ptr);
- #else
- # define RLADDSUBFIX(ptr)
- #endif
- 
  /*
   * add or subtract 'Prenum1' from a number in a line
   * 'command' is CTRL-A for add, CTRL-X for subtract
--- 5339,5344 ----
***************
*** 5426,5432 ****
        }
  
        ptr = ml_get(VIsual.lnum);
-       RLADDSUBFIX(ptr);
        if (VIsual_mode == 'V')
        {
            VIsual.col = 0;
--- 5401,5406 ----
***************
*** 5457,5463 ****
      else
      {
        ptr = ml_get_curline();
-       RLADDSUBFIX(ptr);
  
        if (dobin)
            while (col > 0 && vim_isbdigit(ptr[col]))
--- 5431,5436 ----
***************
*** 5526,5532 ****
        t = curwin->w_cursor;
        curwin->w_cursor.lnum = i;
        ptr = ml_get_curline();
-       RLADDSUBFIX(ptr);
        if ((int)STRLEN(ptr) <= col)
            /* try again on next line */
            continue;
--- 5499,5504 ----
***************
*** 5812,5821 ****
            col = 0;
        Prenum1 += offset;
        curwin->w_set_curswant = TRUE;
- #ifdef FEAT_RIGHTLEFT
-       ptr = ml_get_buf(curbuf, curwin->w_cursor.lnum, TRUE);
-       RLADDSUBFIX(ptr);
- #endif
      }
      if (visual)
        /* cursor at the top of the selection */
--- 5784,5789 ----
*** ../vim-7.4.1075/src/testdir/test_increment.vim      2016-01-09 
21:08:24.527969866 +0100
--- src/testdir/test_increment.vim      2016-01-10 14:05:20.864146915 +0100
***************
*** 558,561 ****
--- 558,578 ----
    call assert_equal([0, 1, 1, 0], getpos('.'))
  endfunc
  
+ " 27) increment with 'rightreft', if supported
+ func Test_visual_increment_27()
+   if exists('+rightleft')
+     set rightleft
+     call setline(1, ["1234 56"])
+ 
+     exec "norm! $\<C-A>"
+     call assert_equal(["1234 57"], getline(1, '$'))
+     call assert_equal([0, 1, 7, 0], getpos('.'))
+ 
+     exec "norm! \<C-A>"
+     call assert_equal(["1234 58"], getline(1, '$'))
+     call assert_equal([0, 1, 7, 0], getpos('.'))
+     set norightleft
+   endif
+ endfunc
+ 
  " vim: tabstop=2 shiftwidth=2 expandtab
*** ../vim-7.4.1075/src/version.c       2016-01-10 13:54:42.875030745 +0100
--- src/version.c       2016-01-10 14:07:43.962604256 +0100
***************
*** 743,744 ****
--- 743,746 ----
  {   /* Add new patch number below this line */
+ /**/
+     1076,
  /**/

-- 
FATAL ERROR! SYSTEM HALTED! - Press any key to continue doing nothing.

 /// 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