123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- local t = require('test.testutil')
- local n = require('test.functional.testnvim')()
- local Screen = require('test.functional.ui.screen')
- local clear = n.clear
- local command = n.command
- local eq = t.eq
- local neq = t.neq
- local feed = n.feed
- local eval = n.eval
- local exec = n.exec
- local fn = n.fn
- local api = n.api
- local curwin = n.api.nvim_get_current_win
- local assert_alive = n.assert_alive
- describe('tabpage', function()
- before_each(clear)
- it('advances to the next page via <C-W>gt', function()
- -- add some tabpages
- command('tabnew')
- command('tabnew')
- command('tabnew')
- eq(4, eval('tabpagenr()'))
- feed('<C-W>gt')
- eq(1, eval('tabpagenr()'))
- end)
- it('retreats to the previous page via <C-W>gT', function()
- -- add some tabpages
- command('tabnew')
- command('tabnew')
- command('tabnew')
- eq(4, eval('tabpagenr()'))
- feed('<C-W>gT')
- eq(3, eval('tabpagenr()'))
- end)
- it('does not crash or loop 999 times if BufWipeout autocommand switches window #17868', function()
- exec([[
- tabedit
- let s:window_id = win_getid()
- botright new
- setlocal bufhidden=wipe
- let g:win_closed = 0
- autocmd WinClosed * let g:win_closed += 1
- autocmd BufWipeout <buffer> call win_gotoid(s:window_id)
- tabprevious
- +tabclose
- ]])
- neq(999, eval('g:win_closed'))
- end)
- it('no segfault with strange WinClosed autocommand #20290', function()
- pcall(
- exec,
- [[
- set nohidden
- edit Xa
- split Xb
- tab split
- new
- autocmd WinClosed * tabprev | bwipe!
- close
- ]]
- )
- assert_alive()
- end)
- it('nvim_win_close and nvim_win_hide update tabline #20285', function()
- eq(1, #api.nvim_list_tabpages())
- eq({ 1, 1 }, fn.win_screenpos(0))
- local win1 = curwin()
- command('tabnew')
- eq(2, #api.nvim_list_tabpages())
- eq({ 2, 1 }, fn.win_screenpos(0))
- local win2 = curwin()
- api.nvim_win_close(win1, true)
- eq(win2, curwin())
- eq(1, #api.nvim_list_tabpages())
- eq({ 1, 1 }, fn.win_screenpos(0))
- command('tabnew')
- eq(2, #api.nvim_list_tabpages())
- eq({ 2, 1 }, fn.win_screenpos(0))
- local win3 = curwin()
- api.nvim_win_hide(win2)
- eq(win3, curwin())
- eq(1, #api.nvim_list_tabpages())
- eq({ 1, 1 }, fn.win_screenpos(0))
- end)
- it('switching tabpage after setting laststatus=3 #19591', function()
- local screen = Screen.new(40, 8)
- screen:add_extra_attr_ids {
- [100] = { bold = true, foreground = Screen.colors.Fuchsia },
- }
- command('tabnew')
- command('tabprev')
- command('set laststatus=3')
- command('tabnext')
- feed('<C-G>')
- screen:expect([[
- {24: [No Name] }{5: [No Name] }{2: }{24:X}|
- ^ |
- {1:~ }|*4
- {3:[No Name] }|
- "[No Name]" --No lines in buffer-- |
- ]])
- command('vnew')
- screen:expect([[
- {24: [No Name] }{5: }{100:2}{5: [No Name] }{2: }{24:X}|
- ^ │ |
- {1:~ }│{1:~ }|*4
- {3:[No Name] }|
- "[No Name]" --No lines in buffer-- |
- ]])
- end)
- it(':tabmove handles modifiers and addr', function()
- command('tabnew | tabnew | tabnew')
- eq(4, fn.nvim_tabpage_get_number(0))
- command(' silent :keepalt :: ::: silent! - tabmove')
- eq(3, fn.nvim_tabpage_get_number(0))
- command(' silent :keepalt :: ::: silent! -2 tabmove')
- eq(1, fn.nvim_tabpage_get_number(0))
- end)
- it(':tabs does not overflow IObuff with long path with comma #20850', function()
- api.nvim_buf_set_name(0, ('x'):rep(1024) .. ',' .. ('x'):rep(1024))
- command('tabs')
- assert_alive()
- end)
- end)
|