mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 11:15:14 -07:00
245 lines
6.7 KiB
Lua
245 lines
6.7 KiB
Lua
-- Test for user command counts
|
|
|
|
local helpers = require('test.functional.helpers')(after_each)
|
|
local clear, source, expect = helpers.clear, helpers.source, helpers.expect
|
|
local feed_command = helpers.feed_command
|
|
|
|
-- luacheck: ignore 613 (Trailing whitespace in a string)
|
|
describe('command_count', function()
|
|
it('is working', function()
|
|
-- It is relevant for the test to load a file initially. If this is
|
|
-- emulated with :arg the buffer count is wrong as nvim creates an empty
|
|
-- buffer if it was started without a filename.
|
|
clear('test_command_count.in')
|
|
|
|
source([[
|
|
let g:tmpname = tempname()
|
|
call mkdir(g:tmpname)
|
|
execute "cd ".g:tmpname
|
|
lang C
|
|
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>)
|
|
com -range -addr=loaded_buffers RangeLoadedBuffers
|
|
\ :call add(g:lines, 'RangeLoadedBuffers '.<line1>.' '.<line2>)
|
|
com -range=% -addr=loaded_buffers RangeLoadedBuffersAll
|
|
\ :call add(g:lines, 'RangeLoadedBuffersAll '.<line1>.' '.<line2>)
|
|
com -range -addr=buffers RangeBuffers
|
|
\ :call add(g:lines, 'RangeBuffers '.<line1>.' '.<line2>)
|
|
com -range=% -addr=buffers RangeBuffersAll
|
|
\ :call add(g:lines, 'RangeBuffersAll '.<line1>.' '.<line2>)
|
|
com -range -addr=windows RangeWindows
|
|
\ :call add(g:lines, 'RangeWindows '.<line1>.' '.<line2>)
|
|
com -range=% -addr=windows RangeWindowsAll
|
|
\ :call add(g:lines, 'RangeWindowsAll '.<line1>.' '.<line2>)
|
|
com -range -addr=tabs RangeTabs
|
|
\ :call add(g:lines, 'RangeTabs '.<line1>.' '.<line2>)
|
|
com -range=% -addr=tabs RangeTabsAll
|
|
\ :call add(g:lines, 'RangeTabsAll '.<line1>.' '.<line2>)
|
|
set hidden
|
|
arga a b c d
|
|
argdo echo "loading buffers"
|
|
argu 3
|
|
.-,$-RangeArguments
|
|
%RangeArguments
|
|
RangeArgumentsAll
|
|
N
|
|
.RangeArguments
|
|
split
|
|
split
|
|
split
|
|
split
|
|
3wincmd w
|
|
.,$RangeWindows
|
|
%RangeWindows
|
|
RangeWindowsAll
|
|
only
|
|
blast
|
|
bd
|
|
.,$RangeLoadedBuffers
|
|
%RangeLoadedBuffers
|
|
RangeLoadedBuffersAll
|
|
.,$RangeBuffers
|
|
%RangeBuffers
|
|
RangeBuffersAll
|
|
tabe
|
|
tabe
|
|
tabe
|
|
tabe
|
|
normal 2gt
|
|
.,$RangeTabs
|
|
%RangeTabs
|
|
RangeTabsAll
|
|
1tabonly
|
|
s/\n/\r\r\r\r\r/
|
|
2ma<
|
|
$-ma>
|
|
'<,'>RangeLines
|
|
com -range=% -buffer LocalRangeLines
|
|
\ :call add(g:lines, 'LocalRangeLines '.<line1>.' '.<line2>)
|
|
'<,'>LocalRangeLines
|
|
b1
|
|
call add(g:lines, '')
|
|
%argd
|
|
arga a b c d
|
|
]])
|
|
-- This can not be in the source() call as it will produce errors.
|
|
feed_command([[let v:errmsg = '']])
|
|
feed_command('5argu')
|
|
feed_command([[call add(g:lines, '5argu ' . v:errmsg)]])
|
|
feed_command('$argu')
|
|
feed_command([[call add(g:lines, '4argu ' . expand('%:t'))]])
|
|
feed_command([[let v:errmsg = '']])
|
|
feed_command('1argu')
|
|
feed_command([[call add(g:lines, '1argu ' . expand('%:t'))]])
|
|
feed_command([[let v:errmsg = '']])
|
|
feed_command('100b')
|
|
feed_command([[call add(g:lines, '100b ' . v:errmsg)]])
|
|
feed_command('split')
|
|
feed_command('split')
|
|
feed_command('split')
|
|
feed_command('split')
|
|
feed_command([[let v:errmsg = '']])
|
|
feed_command('0close')
|
|
feed_command([[call add(g:lines, '0close ' . v:errmsg)]])
|
|
feed_command('$wincmd w')
|
|
feed_command('$close')
|
|
feed_command([[call add(g:lines, '$close ' . winnr())]])
|
|
feed_command([[let v:errmsg = '']])
|
|
feed_command('$+close')
|
|
feed_command([[call add(g:lines, '$+close ' . v:errmsg)]])
|
|
feed_command('$tabe')
|
|
feed_command([[call add(g:lines, '$tabe ' . tabpagenr())]])
|
|
feed_command([[let v:errmsg = '']])
|
|
feed_command('$+tabe')
|
|
feed_command([[call add(g:lines, '$+tabe ' . v:errmsg)]])
|
|
source([[
|
|
only!
|
|
e x
|
|
0tabm
|
|
normal 1gt
|
|
call add(g:lines, '0tabm ' . expand('%:t'))
|
|
tabonly!
|
|
only!
|
|
e! test.out
|
|
call append(0, g:lines)
|
|
unlet g:lines
|
|
w
|
|
bd
|
|
b1
|
|
let g:lines = []
|
|
func BufStatus()
|
|
call add(g:lines,
|
|
\ 'aaa: ' . buflisted(g:buf_aaa) .
|
|
\ ' bbb: ' . buflisted(g:buf_bbb) .
|
|
\ ' ccc: ' . buflisted(g:buf_ccc))
|
|
endfunc
|
|
se nohidden
|
|
e aaa
|
|
let buf_aaa = bufnr('%')
|
|
e bbb
|
|
let buf_bbb = bufnr('%')
|
|
e ccc
|
|
let buf_ccc = bufnr('%')
|
|
b1
|
|
call BufStatus()
|
|
exe buf_bbb . "," . buf_ccc . "bdelete"
|
|
call BufStatus()
|
|
exe buf_aaa . "bdelete"
|
|
call BufStatus()
|
|
e! test.out
|
|
call append('$', g:lines)
|
|
unlet g:lines
|
|
delfunc BufStatus
|
|
w
|
|
bd
|
|
b1
|
|
se hidden
|
|
only!
|
|
let g:lines = []
|
|
%argd
|
|
arga a b c d e f
|
|
3argu
|
|
let args = ''
|
|
.,$-argdo let args .= ' '.expand('%')
|
|
call add(g:lines, 'argdo:' . args)
|
|
split
|
|
split
|
|
split
|
|
split
|
|
2wincmd w
|
|
let windows = ''
|
|
.,$-windo let windows .= ' '.winnr()
|
|
call add(g:lines, 'windo:'. windows)
|
|
b2
|
|
let buffers = ''
|
|
.,$-bufdo let buffers .= ' '.bufnr('%')
|
|
call add(g:lines, 'bufdo:' . buffers)
|
|
3bd
|
|
let buffers = ''
|
|
3,7bufdo let buffers .= ' '.bufnr('%')
|
|
call add(g:lines, 'bufdo:' . buffers)
|
|
tabe
|
|
tabe
|
|
tabe
|
|
tabe
|
|
normal! 2gt
|
|
let tabpages = ''
|
|
.,$-tabdo let tabpages .= ' '.tabpagenr()
|
|
call add(g:lines, 'tabdo:' . tabpages)
|
|
e! test.out
|
|
call append('$', g:lines)
|
|
]])
|
|
|
|
-- Assert buffer contents.
|
|
expect([[
|
|
RangeArguments 2 4
|
|
RangeArguments 1 5
|
|
RangeArgumentsAll 1 5
|
|
RangeArguments 2 2
|
|
RangeWindows 3 5
|
|
RangeWindows 1 5
|
|
RangeWindowsAll 1 5
|
|
RangeLoadedBuffers 2 4
|
|
RangeLoadedBuffers 1 4
|
|
RangeLoadedBuffersAll 1 4
|
|
RangeBuffers 2 5
|
|
RangeBuffers 1 5
|
|
RangeBuffersAll 1 5
|
|
RangeTabs 2 5
|
|
RangeTabs 1 5
|
|
RangeTabsAll 1 5
|
|
RangeLines 2 5
|
|
LocalRangeLines 2 5
|
|
|
|
5argu E16: Invalid range
|
|
4argu d
|
|
1argu a
|
|
100b E16: Invalid range
|
|
0close
|
|
$close 3
|
|
$+close E16: Invalid range
|
|
$tabe 2
|
|
$+tabe E16: Invalid range
|
|
0tabm x
|
|
|
|
aaa: 1 bbb: 1 ccc: 1
|
|
aaa: 1 bbb: 0 ccc: 0
|
|
aaa: 0 bbb: 0 ccc: 0
|
|
argdo: c d e
|
|
windo: 2 3 4
|
|
bufdo: 2 3 4 5 6 7 8 9 10 15
|
|
bufdo: 4 5 6 7
|
|
tabdo: 2 3 4]])
|
|
|
|
source([[
|
|
cd ..
|
|
call delete(g:tmpname, 'rf')
|
|
]])
|
|
end)
|
|
end)
|