To: vim_dev@googlegroups.com Subject: Patch 7.4.1076 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ 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! $\" + call assert_equal(["1234 57"], getline(1, '$')) + call assert_equal([0, 1, 7, 0], getpos('.')) + + exec "norm! \" + 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 -- Bram@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 ///