updated for version 7.4.565
Problem: Ranges for arguments, buffers, tabs, etc. are not checked to be
valid but limited to the maximum. This can cause the wrong thing
to happen.
Solution: Give an error for an invalid value. (Marcin Szamotulski)
Use windows range for ":wincmd".
diff --git a/src/testdir/test62.in b/src/testdir/test62.in
index 93d968b..c201fe7 100644
--- a/src/testdir/test62.in
+++ b/src/testdir/test62.in
Binary files differ
diff --git a/src/testdir/test_argument_count.in b/src/testdir/test_argument_count.in
index cdac030..db7eadb 100644
--- a/src/testdir/test_argument_count.in
+++ b/src/testdir/test_argument_count.in
@@ -27,10 +27,9 @@
:1arga c
:1arga b
:$argu
-:+arga d
:$arga x
:call add(arglists, argv())
-:$-10arga Y
+:0arga Y
:call add(arglists, argv())
:%argd
:call add(arglists, argv())
diff --git a/src/testdir/test_argument_count.ok b/src/testdir/test_argument_count.ok
index f591bf2..f515626 100644
--- a/src/testdir/test_argument_count.ok
+++ b/src/testdir/test_argument_count.ok
@@ -7,7 +7,7 @@
a b d
a d
a
-a b c d x
-Y a b c d x
+a b c x
+Y a b c x
a f
diff --git a/src/testdir/test_close_count.in b/src/testdir/test_close_count.in
index 8a4e090..f07da99 100644
--- a/src/testdir/test_close_count.in
+++ b/src/testdir/test_close_count.in
@@ -28,7 +28,7 @@
:new
:new
:2wincmd w
-:-2close!
+:-1close!
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
@@ -61,7 +61,7 @@
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
-:9hide
+:$hide
:let buffers = []
:windo call add(buffers, bufnr('%'))
:call add(tests, buffers)
diff --git a/src/testdir/test_command_count.in b/src/testdir/test_command_count.in
index c71ae5a..e7dadd2 100644
--- a/src/testdir/test_command_count.in
+++ b/src/testdir/test_command_count.in
@@ -1,8 +1,8 @@
Test for user command counts vim: set ft=vim :
STARTTEST
-:let g:lines = []
:so tiny.vim
+:let g:lines = []
:com -range=% RangeLines :call add(g:lines, 'RangeLines '.<line1>.' '.<line2>)
:com -range -addr=arguments RangeArguments :call add(g:lines, 'RangeArguments '.<line1>.' '.<line2>)
:com -range=% -addr=arguments RangeArgumentsAll :call add(g:lines, 'RangeArgumentsAll '.<line1>.' '.<line2>)
@@ -48,6 +48,46 @@
:'<,'>RangeLines
:com -range=% -buffer LocalRangeLines :call add(g:lines, 'LocalRangeLines '.<line1>.' '.<line2>)
:'<,'>LocalRangeLines
+:b1
+ENDTEST
+
+STARTTEST
+:call add(g:lines, '')
+:%argd
+:arga a b c d
+:let v:errmsg = ''
+:5argu
+:call add(g:lines, '5argu ' . v:errmsg)
+:$argu
+:call add(g:lines, '4argu ' . expand('%:t'))
+:let v:errmsg = ''
+:1argu
+:call add(g:lines, '1argu ' . expand('%:t'))
+:let v:errmsg = ''
+:100b
+:call add(g:lines, '100b ' . v:errmsg)
+:split|split|split|split
+:let v:errmsg = ''
+:0close
+:call add(g:lines, '0close ' . v:errmsg)
+:$wincmd w
+:$close
+:call add(g:lines, '$close ' . winnr())
+:let v:errmsg = ''
+:$+close
+:call add(g:lines, '$+close ' . v:errmsg)
+:$tabe
+:call add(g:lines, '$tabe ' . tabpagenr())
+:let v:errmsg = ''
+:$+tabe
+:call add(g:lines, '$+tabe ' . v:errmsg)
+:only!
+:e x
+:0tabm
+:normal 1gt
+:call add(g:lines, '0tabm ' . expand('%:t'))
+:tabonly!
+:only!
:e! test.out
:call append(0, g:lines)
:w|qa!
diff --git a/src/testdir/test_command_count.ok b/src/testdir/test_command_count.ok
index 693a22d..6e85f29 100644
--- a/src/testdir/test_command_count.ok
+++ b/src/testdir/test_command_count.ok
@@ -17,3 +17,14 @@
RangeLines 2 5
LocalRangeLines 2 5
+5argu E16: Invalid range
+4argu d
+1argu a
+100b E16: Invalid range
+0close E16: Invalid range
+$close 4
+$+close E16: Invalid range
+$tabe 2
+$+tabe E16: Invalid range
+0tabm x
+