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 -- Br...@Moolenaar.net --
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 ///