patch 7.4.765
Problem: CTRL-A and CTRL-X in Visual mode do not always work well.
Solution: Improvements for increment and decrement. (Christian Brabandt)
diff --git a/src/testdir/test_increment.in b/src/testdir/test_increment.in
index 00e9ad0..45ed23b 100644
--- a/src/testdir/test_increment.in
+++ b/src/testdir/test_increment.in
@@ -6,6 +6,7 @@
1) Ctrl-A on visually selected number
Text:
foobar-10
+ Expected:
1) Ctrl-A on start of line:
foobar-9
2) Ctrl-A on visually selected "-10":
@@ -24,6 +25,7 @@
30
40
+ Expected:
1) Ctrl-A on visually selected lines:
11
21
@@ -46,6 +48,7 @@
40
+ Expected:
1) 2 g Ctrl-A on visually selected lines:
12
@@ -66,9 +69,122 @@
4) Ctrl-A on non-number
Text:
foobar-10
+ Expected:
1) visually select foobar:
foobar-10
+5) g<Ctrl-A> on letter
+Test:
+a
+a
+a
+a
+ Expected:
+ 1) g Ctrl-A on visually selected lines
+ b
+ c
+ d
+ e
+
+6) g<Ctrl-A> on letter
+Test:
+z
+z
+z
+z
+ Expected:
+ 1) g Ctrl-X on visually selected lines
+ y
+ x
+ w
+ v
+
+7) <Ctrl-A> on letter
+Test:
+2
+1
+0
+-1
+-2
+
+ Expected:
+ 1) Ctrl-A on visually selected lines
+ 3
+ 2
+ 1
+ 0
+ -1
+
+ 2) Ctrl-X on visually selected lines
+ 1
+ 0
+ -1
+ -2
+ -3
+8) Block increment on 0x9
+Text:
+0x9
+0x9
+ Expected:
+ 1) Ctrl-A on visually block selected region (cursor at beginning):
+ 0xa
+ 0xa
+ 2) Ctrl-A on visually block selected region (cursor at end)
+ 0xa
+ 0xa
+
+9) Increment and redo
+Text:
+2
+2
+
+3
+3
+
+ Expected:
+ 1) 2 Ctrl-A on first 2 visually selected lines
+ 4
+ 4
+ 2) redo (.) on 3
+ 5
+ 5
+10) sequentially decrement 1
+Text:
+1
+1
+1
+1
+ Expected:
+ 1) g Ctrl-X on visually selected lines
+ 0
+ -1
+ -2
+ -3
+
+11) visually block selected indented lines
+Text:
+ 1
+1
+ 1
+ 1
+ Expexted:
+ 1) g Ctrl-A on block selected indented lines
+ 2
+1
+ 3
+ 4
+
+12) visually selected several columns
+Text:
+0 0
+0 0
+0 0
+ Expected:
+ 1) 'v' select last zero and first zeroes
+ 0 1
+ 1 0
+ 1 0
+
STARTTEST
:so small.vim
:"
@@ -77,16 +193,16 @@
:"
:" Test 1
:/^S1=/+,/^E1=/-y a
-:/^E1/+put a
-:/^E1/+2put a
-f-v$:/^E1/+3put a
-f1v$:/^E1/+4put a
-f-v$:/^E1/+5put a
+:/^E1=/+put a
+:/^E1=/+2put a
+f-v$:/^E1=/+3put a
+f1v$:/^E1=/+4put a
+f-v$:/^E1=/+5put a
f1v$
:" Test 22
:/^S2=/+,/^E2=/-y a
-:/^E2/+put a
+:/^E2=/+put a
V3k$:.+put a
V3k$
@@ -101,6 +217,49 @@
:/^E4=/+put a
vf-
+:" Test 5
+:set nrformats+=alpha
+:/^S5=/+,/^E5=/-y a
+:/^E5=/+put a
+v3kg
+
+:" Test 6
+:/^S6=/+,/^E6=/-y a
+:/^E6=/+put a
+v3kg
+
+:" Test 7
+:/^S7=/+,/^E7=/-y a
+:/^E7=/+put a
+V4k:.+put a
+V4k
+
+:" Test 8
+:/^S8=/+,/^E8=/-y a
+:/^E8=/+put a
+kj$:.+put a
+k$+
+
+:" Test 9
+:/^S9=/+,/^E9=/-y a
+:/^E9=/+put a
+5kVj22j.
+
+:" Test 10
+:/^S10=/+,/^E10=/-y a
+:/^E10=/+put a
+V3kg
+
+: Test 11
+:/^S11=/+,/^E11=/-y a
+:/^E11=/+put a
+3kf13jg
+
+:" Test 12
+:/^S12=/+,/^E12=/-y a
+:/^E12=/+put a
+2k$v++
+
:" Save the report
:/^# Test 1/,$w! test.out
:qa!
@@ -142,5 +301,93 @@
E4=====
+
+# Test 5
+S5====
+a
+a
+a
+a
+E5====
+
+
+# Test 6
+S6====
+z
+z
+z
+z
+E6====
+
+
+
+# Test 7
+S7====
+2
+1
+0
+-1
+-2
+E7====
+
+
+
+# Test 8
+S8====
+0x9
+0x9
+E8====
+
+
+
+
+# Test 9
+S9====
+2
+2
+
+3
+3
+
+E9====
+
+
+
+
+# Test 10
+S10====
+1
+1
+1
+1
+E10====
+
+
+
+
+# Test 11
+S11====
+ 1
+1
+ 1
+ 1
+E11====
+
+
+
+# Test 12
+S12====
+0 0
+0 0
+0 0
+E12====
+
+
+
+
+
+
+
+
ENDTEST
diff --git a/src/testdir/test_increment.ok b/src/testdir/test_increment.ok
index 4a61ad1..03a10cb 100644
--- a/src/testdir/test_increment.ok
+++ b/src/testdir/test_increment.ok
@@ -62,5 +62,132 @@
foobar-10
+
+# Test 5
+S5====
+a
+a
+a
+a
+E5====
+
+b
+c
+d
+e
+
+# Test 6
+S6====
+z
+z
+z
+z
+E6====
+
+y
+x
+w
+v
+
+
+# Test 7
+S7====
+2
+1
+0
+-1
+-2
+E7====
+
+3
+2
+1
+0
+-1
+
+1
+0
+-1
+-2
+-3
+
+# Test 8
+S8====
+0x9
+0x9
+E8====
+
+0xa
+0xa
+
+0xa
+0xa
+
+
+# Test 9
+S9====
+2
+2
+
+3
+3
+
+E9====
+
+4
+4
+
+5
+5
+
+
+
+
+# Test 10
+S10====
+1
+1
+1
+1
+E10====
+
+0
+-1
+-2
+-3
+
+
+
+# Test 11
+S11====
+ 1
+1
+ 1
+ 1
+E11====
+
+ 2
+1
+ 3
+ 4
+
+
+# Test 12
+S12====
+0 0
+0 0
+0 0
+E12====
+
+0 1
+1 0
+1 0
+
+
+
+
+
+
+
ENDTEST