diff src/testdir/test_usercommands.vim @ 15099:39728d503e47 v8.1.0560

patch 8.1.0560: cannot use address type "other" with with user command commit https://github.com/vim/vim/commit/51a7454cd2c34ee459f104e45768eab3817c099e Author: Bram Moolenaar <Bram@vim.org> Date: Sun Dec 2 18:21:49 2018 +0100 patch 8.1.0560: cannot use address type "other" with with user command Problem: Cannot use address type "other" with with user command. Solution: Add "other" to the list. (Daniel Hahler, closes https://github.com/vim/vim/issues/3655) Also reject "%" for commands with "other". Add some more tests.
author Bram Moolenaar <Bram@vim.org>
date Sun, 02 Dec 2018 18:30:07 +0100
parents 9b3f8029a326
children b101b193d5ff
line wrap: on
line diff
--- a/src/testdir/test_usercommands.vim
+++ b/src/testdir/test_usercommands.vim
@@ -154,7 +154,7 @@ func Test_CmdCompletion()
   call assert_equal('"com -nargs=* + 0 1 ?', @:)
 
   call feedkeys(":com -addr=\<C-A>\<C-B>\"\<CR>", 'tx')
-  call assert_equal('"com -addr=arguments buffers lines loaded_buffers quickfix tabs windows', @:)
+  call assert_equal('"com -addr=arguments buffers lines loaded_buffers other quickfix tabs windows', @:)
 
   call feedkeys(":com -complete=co\<C-A>\<C-B>\"\<CR>", 'tx')
   call assert_equal('"com -complete=color command compiler', @:)
@@ -218,3 +218,61 @@ func Test_use_execute_in_completion()
   call assert_equal('"DoExec hi', @:)
   delcommand DoExec
 endfunc
+
+func Test_addr_all()
+  command! -addr=lines DoSomething let g:a1 = <line1> | let g:a2 = <line2>
+  %DoSomething
+  call assert_equal(1, g:a1)
+  call assert_equal(line('$'), g:a2)
+
+  command! -addr=arguments DoSomething let g:a1 = <line1> | let g:a2 = <line2>
+  args one two three
+  %DoSomething
+  call assert_equal(1, g:a1)
+  call assert_equal(3, g:a2)
+
+  command! -addr=buffers DoSomething let g:a1 = <line1> | let g:a2 = <line2>
+  %DoSomething
+  for low in range(1, bufnr('$'))
+    if buflisted(low)
+      break
+    endif
+  endfor
+  call assert_equal(low, g:a1)
+  call assert_equal(bufnr('$'), g:a2)
+
+  command! -addr=loaded_buffers DoSomething let g:a1 = <line1> | let g:a2 = <line2>
+  %DoSomething
+  for low in range(1, bufnr('$'))
+    if bufloaded(low)
+      break
+    endif
+  endfor
+  call assert_equal(low, g:a1)
+  for up in range(bufnr('$'), 1, -1)
+    if bufloaded(up)
+      break
+    endif
+  endfor
+  call assert_equal(up, g:a2)
+
+  command! -addr=windows DoSomething  let g:a1 = <line1> | let g:a2 = <line2>
+  new
+  %DoSomething
+  call assert_equal(1, g:a1)
+  call assert_equal(winnr('$'), g:a2)
+  bwipe
+
+  command! -addr=tabs DoSomething  let g:a1 = <line1> | let g:a2 = <line2>
+  tabnew
+  %DoSomething
+  call assert_equal(1, g:a1)
+  call assert_equal(len(gettabinfo()), g:a2)
+  bwipe
+
+  command! -addr=other DoSomething echo 'nothing'
+  DoSomething
+  call assert_fails('%DoSomething')
+
+  delcommand DoSomething
+endfunc