2024-04-20 08:44:13 -07:00
|
|
|
local n = require('test.functional.testnvim')()
|
2022-02-04 03:47:20 -07:00
|
|
|
local Screen = require('test.functional.ui.screen')
|
2024-04-20 08:44:13 -07:00
|
|
|
|
|
|
|
local clear, feed, exec, command = n.clear, n.feed, n.exec, n.command
|
2022-02-04 03:47:20 -07:00
|
|
|
|
|
|
|
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
|
2023-05-06 16:57:29 -07:00
|
|
|
[3] = { foreground = Screen.colors.DarkBlue, background = Screen.colors.LightGrey }, -- Folded
|
2022-06-29 04:34:37 -07:00
|
|
|
[4] = { reverse = true }, -- IncSearch, TabLineFill
|
2023-05-06 16:57:29 -07:00
|
|
|
[5] = { foreground = Screen.colors.Red }, -- WarningMsg
|
2022-02-04 03:47:20 -07:00
|
|
|
})
|
|
|
|
end)
|
|
|
|
|
2022-11-11 18:57:29 -07:00
|
|
|
-- oldtest: Test_search_stat_screendump()
|
2022-02-04 03:47:20 -07:00
|
|
|
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 |
|
2023-12-09 05:42:00 -07:00
|
|
|
foobar |*2
|
2022-02-04 03:47:20 -07:00
|
|
|
foo |
|
|
|
|
fooooobar |
|
|
|
|
foba |
|
|
|
|
/find this [1/2] |
|
|
|
|
]])
|
|
|
|
command('nnoremap <silent> n n')
|
|
|
|
feed('gg0n')
|
|
|
|
screen:expect([[
|
|
|
|
foobar |
|
|
|
|
{2:^find this} |
|
|
|
|
fooooobar |
|
|
|
|
foba |
|
2023-12-09 05:42:00 -07:00
|
|
|
foobar |*2
|
2022-02-04 03:47:20 -07:00
|
|
|
foo |
|
|
|
|
fooooobar |
|
|
|
|
foba |
|
|
|
|
[1/2] |
|
|
|
|
]])
|
|
|
|
end)
|
|
|
|
|
2022-11-11 18:57:29 -07:00
|
|
|
-- oldtest: Test_search_stat_foldopen()
|
2022-02-04 03:47:20 -07:00
|
|
|
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 |
|
|
|
|
|
|
2023-12-09 05:42:00 -07:00
|
|
|
{1:~ }|*5
|
2022-02-04 03:47:20 -07:00
|
|
|
/foo [1/2] |
|
|
|
|
]])
|
2023-02-14 16:26:55 -07:00
|
|
|
-- Note: there is an intermediate state where the search stat disappears.
|
2022-02-04 03:47:20 -07:00
|
|
|
feed('n')
|
2023-02-14 16:26:55 -07:00
|
|
|
screen:expect_unchanged(true)
|
2022-02-04 03:47:20 -07:00
|
|
|
feed('n')
|
2023-02-14 16:26:55 -07:00
|
|
|
screen:expect_unchanged(true)
|
2022-02-04 03:47:20 -07:00
|
|
|
end)
|
|
|
|
|
2022-11-11 18:57:29 -07:00
|
|
|
-- oldtest: Test_search_stat_then_gd()
|
2022-02-04 03:47:20 -07:00
|
|
|
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}; |
|
2023-12-09 05:42:00 -07:00
|
|
|
{1:~ }|*6
|
2022-02-04 03:47:20 -07:00
|
|
|
/dog [1/2] |
|
|
|
|
]])
|
|
|
|
feed('G0gD')
|
|
|
|
screen:expect([[
|
|
|
|
int {2:^cat}; |
|
|
|
|
int dog; |
|
|
|
|
{2:cat} = dog; |
|
2023-12-09 05:42:00 -07:00
|
|
|
{1:~ }|*6
|
2022-02-04 03:47:20 -07:00
|
|
|
|
|
|
|
|
]])
|
|
|
|
end)
|
2022-06-29 04:34:37 -07:00
|
|
|
|
2022-11-11 18:57:29 -07:00
|
|
|
-- oldtest: Test_search_stat_and_incsearch()
|
2022-06-29 04:34:37 -07:00
|
|
|
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} |
|
2023-12-09 05:42:00 -07:00
|
|
|
{1:~ }|*5
|
2022-06-29 04:34:37 -07:00
|
|
|
/abc^ |
|
|
|
|
]])
|
|
|
|
|
|
|
|
feed('<C-G>')
|
|
|
|
screen:expect([[
|
|
|
|
{4:3/3 }|
|
|
|
|
{2:abc}--c |
|
|
|
|
--------{2:abc} |
|
|
|
|
--{4:abc} |
|
2023-12-09 05:42:00 -07:00
|
|
|
{1:~ }|*5
|
2022-06-29 04:34:37 -07:00
|
|
|
/abc^ |
|
|
|
|
]])
|
|
|
|
|
|
|
|
feed('<C-G>')
|
|
|
|
screen:expect([[
|
|
|
|
{4:1/3 }|
|
|
|
|
{4:abc}--c |
|
|
|
|
--------{2:abc} |
|
|
|
|
--{2:abc} |
|
2023-12-09 05:42:00 -07:00
|
|
|
{1:~ }|*5
|
2022-06-29 04:34:37 -07:00
|
|
|
/abc^ |
|
|
|
|
]])
|
|
|
|
end)
|
2023-05-06 16:57:29 -07:00
|
|
|
|
|
|
|
-- 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} |
|
|
|
|
|
|
2023-12-09 05:42:00 -07:00
|
|
|
{1:~ }|*7
|
2023-05-06 16:57:29 -07:00
|
|
|
/\<test\> [1/1] |
|
|
|
|
]])
|
|
|
|
|
|
|
|
feed('N')
|
|
|
|
screen:expect([[
|
|
|
|
{2:^test} |
|
|
|
|
|
|
2023-12-09 05:42:00 -07:00
|
|
|
{1:~ }|*7
|
2023-05-06 16:57:29 -07:00
|
|
|
?\<test\> [1/1] |
|
|
|
|
]])
|
|
|
|
|
|
|
|
command('set shm+=S')
|
|
|
|
feed('N')
|
|
|
|
-- shows "Search Hit Bottom.."
|
|
|
|
screen:expect([[
|
|
|
|
{2:^test} |
|
|
|
|
|
|
2023-12-09 05:42:00 -07:00
|
|
|
{1:~ }|*7
|
2023-05-06 16:57:29 -07:00
|
|
|
{5:search hit TOP, continuing at BOTTOM} |
|
|
|
|
]])
|
|
|
|
end)
|
2022-02-04 03:47:20 -07:00
|
|
|
end)
|