]> granicus.if.org Git - vim/commitdiff
patch 8.0.1374: CTRL-A does not work with an empty line v8.0.1374
authorBram Moolenaar <Bram@vim.org>
Tue, 5 Dec 2017 16:22:12 +0000 (17:22 +0100)
committerBram Moolenaar <Bram@vim.org>
Tue, 5 Dec 2017 16:22:12 +0000 (17:22 +0100)
Problem:    CTRL-A does not work with an empty line. (Alex)
Solution:   Decrement the end only once. (Hirohito Higashi, closes #2387)

src/ops.c
src/testdir/test_increment.vim
src/version.c

index e366903c7115ecde1e6df7cc3641f019b2ae7721..0209334ea4f3df169932f4dd2b4450b2e61c661f 100644 (file)
--- a/src/ops.c
+++ b/src/ops.c
@@ -5433,7 +5433,7 @@ op_addsub(
            }
            else /* oap->motion_type == MCHAR */
            {
-               if (!oap->inclusive)
+               if (pos.lnum == oap->start.lnum && !oap->inclusive)
                    dec(&(oap->end));
                length = (colnr_T)STRLEN(ml_get(pos.lnum));
                pos.col = 0;
index 8bfd95d8109137e313ac9fb2b5aaa8b6c8ec8980..ad355dce9b49da5c62b4f2f0d6608f72624086d9 100644 (file)
@@ -364,11 +364,25 @@ endfunc
 "     Expected:
 "     1) Ctrl-a on visually selected zero
 "     111
+"
+" Also: 019 with "01" selected increments to "029".
 func Test_visual_increment_15()
   call setline(1, ["101"])
   exec "norm! lv\<C-A>"
   call assert_equal(["111"], getline(1, '$'))
   call assert_equal([0, 1, 2, 0], getpos('.'))
+
+  call setline(1, ["019"])
+  exec "norm! 0vl\<C-A>"
+  call assert_equal("029", getline(1))
+
+  call setline(1, ["01239"])
+  exec "norm! 0vlll\<C-A>"
+  call assert_equal("01249", getline(1))
+
+  call setline(1, ["01299"])
+  exec "norm! 0vlll\<C-A>"
+  call assert_equal("1309", getline(1))
 endfunc
 
 " 16) increment right aligned numbers
@@ -756,5 +770,12 @@ func Test_normal_increment_03()
   call assert_equal([0, 3, 25, 0], getpos('.'))
 endfunc
 
+func Test_increment_empty_line()
+  new
+  call setline(1, ['0', '0', '0', '0', '0', '0', ''])
+  exe "normal Gvgg\<C-A>"
+  call assert_equal(['1', '1', '1', '1', '1', '1', ''], getline(1, 7))
+  bwipe!
+endfunc
 
 " vim: shiftwidth=2 sts=2 expandtab
index 837ca025e9c4ac1bbb49810742775a8d3d3c72fe..9df11cc26998fbe3154508e4e27dc3a7100acb5a 100644 (file)
@@ -771,6 +771,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1374,
 /**/
     1373,
 /**/