mirror of
https://github.com/neovim/neovim.git
synced 2024-12-25 05:35:10 -07:00
e61228a214
Before calling "attach" a screen object is just a dummy container for (row, col) values whose purpose is to be sent as part of the "attach" function call anyway. Just create the screen in an attached state directly. Keep the complete (row, col, options) config together. It is still completely valid to later detach and re-attach as needed, including to another session.
195 lines
6.0 KiB
Lua
195 lines
6.0 KiB
Lua
local n = require('test.functional.testnvim')()
|
|
local Screen = require('test.functional.ui.screen')
|
|
|
|
local clear, feed, exec, command = n.clear, n.feed, n.exec, n.command
|
|
|
|
describe('search stat', function()
|
|
local screen
|
|
before_each(function()
|
|
clear()
|
|
screen = Screen.new(30, 10)
|
|
screen:set_default_attr_ids({
|
|
[1] = { bold = true, foreground = Screen.colors.Blue }, -- NonText
|
|
[2] = { background = Screen.colors.Yellow }, -- Search
|
|
[3] = { foreground = Screen.colors.DarkBlue, background = Screen.colors.LightGrey }, -- Folded
|
|
[4] = { reverse = true }, -- IncSearch, TabLineFill
|
|
[5] = { foreground = Screen.colors.Red }, -- WarningMsg
|
|
})
|
|
end)
|
|
|
|
-- oldtest: Test_search_stat_screendump()
|
|
it('right spacing with silent mapping vim-patch:8.1.1970', function()
|
|
exec([[
|
|
set shortmess-=S
|
|
" Append 50 lines with text to search for, "foobar" appears 20 times
|
|
call append(0, repeat(['foobar', 'foo', 'fooooobar', 'foba', 'foobar'], 20))
|
|
call setline(2, 'find this')
|
|
call setline(70, 'find this')
|
|
nnoremap n n
|
|
let @/ = 'find this'
|
|
call cursor(1,1)
|
|
norm n
|
|
]])
|
|
screen:expect([[
|
|
foobar |
|
|
{2:^find this} |
|
|
fooooobar |
|
|
foba |
|
|
foobar |*2
|
|
foo |
|
|
fooooobar |
|
|
foba |
|
|
/find this [1/2] |
|
|
]])
|
|
command('nnoremap <silent> n n')
|
|
feed('gg0n')
|
|
screen:expect([[
|
|
foobar |
|
|
{2:^find this} |
|
|
fooooobar |
|
|
foba |
|
|
foobar |*2
|
|
foo |
|
|
fooooobar |
|
|
foba |
|
|
[1/2] |
|
|
]])
|
|
end)
|
|
|
|
-- oldtest: Test_search_stat_foldopen()
|
|
it('when only match is in fold vim-patch:8.2.0840', function()
|
|
exec([[
|
|
set shortmess-=S
|
|
setl foldenable foldmethod=indent foldopen-=search
|
|
call append(0, ['if', "\tfoo", "\tfoo", 'endif'])
|
|
let @/ = 'foo'
|
|
call cursor(1,1)
|
|
norm n
|
|
]])
|
|
screen:expect([[
|
|
if |
|
|
{3:^+-- 2 lines: foo·············}|
|
|
endif |
|
|
|
|
|
{1:~ }|*5
|
|
/foo [1/2] |
|
|
]])
|
|
-- Note: there is an intermediate state where the search stat disappears.
|
|
feed('n')
|
|
screen:expect_unchanged(true)
|
|
feed('n')
|
|
screen:expect_unchanged(true)
|
|
end)
|
|
|
|
-- oldtest: Test_search_stat_then_gd()
|
|
it('is cleared by gd and gD vim-patch:8.2.3583', function()
|
|
exec([[
|
|
call setline(1, ['int cat;', 'int dog;', 'cat = dog;'])
|
|
set shortmess-=S
|
|
set hlsearch
|
|
]])
|
|
feed('/dog<CR>')
|
|
screen:expect([[
|
|
int cat; |
|
|
int {2:^dog}; |
|
|
cat = {2:dog}; |
|
|
{1:~ }|*6
|
|
/dog [1/2] |
|
|
]])
|
|
feed('G0gD')
|
|
screen:expect([[
|
|
int {2:^cat}; |
|
|
int dog; |
|
|
{2:cat} = dog; |
|
|
{1:~ }|*6
|
|
|
|
|
]])
|
|
end)
|
|
|
|
-- oldtest: Test_search_stat_and_incsearch()
|
|
it('is not broken by calling searchcount() in tabline vim-patch:8.2.4378', function()
|
|
exec([[
|
|
call setline(1, ['abc--c', '--------abc', '--abc'])
|
|
set hlsearch
|
|
set incsearch
|
|
set showtabline=2
|
|
|
|
function MyTabLine()
|
|
try
|
|
let a=searchcount(#{recompute: 1, maxcount: -1})
|
|
return a.current .. '/' .. a.total
|
|
catch
|
|
return ''
|
|
endtry
|
|
endfunction
|
|
|
|
set tabline=%!MyTabLine()
|
|
]])
|
|
|
|
feed('/abc')
|
|
screen:expect([[
|
|
{4: }|
|
|
{2:abc}--c |
|
|
--------{4:abc} |
|
|
--{2:abc} |
|
|
{1:~ }|*5
|
|
/abc^ |
|
|
]])
|
|
|
|
feed('<C-G>')
|
|
screen:expect([[
|
|
{4:3/3 }|
|
|
{2:abc}--c |
|
|
--------{2:abc} |
|
|
--{4:abc} |
|
|
{1:~ }|*5
|
|
/abc^ |
|
|
]])
|
|
|
|
feed('<C-G>')
|
|
screen:expect([[
|
|
{4:1/3 }|
|
|
{4:abc}--c |
|
|
--------{2:abc} |
|
|
--{2:abc} |
|
|
{1:~ }|*5
|
|
/abc^ |
|
|
]])
|
|
end)
|
|
|
|
-- oldtest: Test_search_stat_backwards()
|
|
it('when searching backwards', function()
|
|
screen:try_resize(60, 10)
|
|
exec([[
|
|
set shm-=S
|
|
call setline(1, ['test', ''])
|
|
]])
|
|
|
|
feed('*')
|
|
screen:expect([[
|
|
{2:^test} |
|
|
|
|
|
{1:~ }|*7
|
|
/\<test\> [1/1] |
|
|
]])
|
|
|
|
feed('N')
|
|
screen:expect([[
|
|
{2:^test} |
|
|
|
|
|
{1:~ }|*7
|
|
?\<test\> [1/1] |
|
|
]])
|
|
|
|
command('set shm+=S')
|
|
feed('N')
|
|
-- shows "Search Hit Bottom.."
|
|
screen:expect([[
|
|
{2:^test} |
|
|
|
|
|
{1:~ }|*7
|
|
{5:search hit TOP, continuing at BOTTOM} |
|
|
]])
|
|
end)
|
|
end)
|