aboutsummaryrefslogtreecommitdiff
path: root/test/functional/ui/searchhl_spec.lua
diff options
context:
space:
mode:
Diffstat (limited to 'test/functional/ui/searchhl_spec.lua')
-rw-r--r--test/functional/ui/searchhl_spec.lua352
1 files changed, 140 insertions, 212 deletions
diff --git a/test/functional/ui/searchhl_spec.lua b/test/functional/ui/searchhl_spec.lua
index dc7ef666bd..a05436cf55 100644
--- a/test/functional/ui/searchhl_spec.lua
+++ b/test/functional/ui/searchhl_spec.lua
@@ -5,7 +5,7 @@ local command = helpers.command
local feed_command = helpers.feed_command
local eq = helpers.eq
local eval = helpers.eval
-local funcs = helpers.funcs
+local fn = helpers.fn
local testprg = helpers.testprg
describe('search highlighting', function()
@@ -15,46 +15,50 @@ describe('search highlighting', function()
clear()
screen = Screen.new(40, 7)
screen:attach()
- screen:set_default_attr_ids( {
- [1] = {bold=true, foreground=Screen.colors.Blue},
- [2] = {background = Screen.colors.Yellow}, -- Search
- [3] = {reverse = true},
- [4] = {foreground = Screen.colors.Red}, -- WarningMsg
- [5] = {bold = true, reverse = true}, -- StatusLine
- [6] = {foreground = Screen.colors.Blue4, background = Screen.colors.LightGrey}, -- Folded
+ screen:set_default_attr_ids({
+ [1] = { bold = true, foreground = Screen.colors.Blue },
+ [2] = { background = Screen.colors.Yellow }, -- Search
+ [3] = { reverse = true },
+ [4] = { foreground = Screen.colors.Red }, -- WarningMsg
+ [5] = { bold = true, reverse = true }, -- StatusLine
+ [6] = { foreground = Screen.colors.Blue4, background = Screen.colors.LightGrey }, -- Folded
})
end)
it('is disabled by ":set nohlsearch"', function()
feed_command('set nohlsearch')
- insert("some text\nmore text")
- feed("gg/text<cr>")
+ insert('some text\nmore text')
+ feed('gg/text<cr>')
screen:expect([[
some ^text |
more text |
- {1:~ }|
- {1:~ }|
- {1:~ }|
- {1:~ }|
+ {1:~ }|*4
/text |
]])
end)
it('is disabled in folded text', function()
- insert("some text\nmore text")
+ insert('some text\nmore text')
feed_command('1,2fold')
- feed("gg/text")
- screen:expect{grid=[[
+ feed('gg/text')
+ screen:expect {
+ grid = [[
{6:+-- 2 lines: some text·················}|
- {1:~ }|
- {1:~ }|
- {1:~ }|
- {1:~ }|
- {1:~ }|
+ {1:~ }|*5
/text^ |
- ]], win_viewport={
- [2] = {win = {id = 1000}, topline = 0, botline = 3, curline = 0, curcol = 8, linecount = 2, sum_scroll_delta = 0};
- }}
+ ]],
+ win_viewport = {
+ [2] = {
+ win = 1000,
+ topline = 0,
+ botline = 3,
+ curline = 0,
+ curcol = 8,
+ linecount = 2,
+ sum_scroll_delta = 0,
+ },
+ },
+ }
end)
local function test_search_hl()
@@ -66,7 +70,7 @@ describe('search highlighting', function()
]])
-- 'hlsearch' is enabled by default. #2859
- feed("gg/text<cr>")
+ feed('gg/text<cr>')
screen:expect([[
some {2:^text} |
more {2:text}stuff |
@@ -78,7 +82,7 @@ describe('search highlighting', function()
]])
-- overlapping matches not allowed
- feed("3nx")
+ feed('3nx')
screen:expect([[
some {2:text} |
more {2:text}stuff |
@@ -89,7 +93,7 @@ describe('search highlighting', function()
/text |
]])
- feed("ggn*") -- search for entire word
+ feed('ggn*') -- search for entire word
screen:expect([[
some {2:text} |
more textstuff |
@@ -100,7 +104,7 @@ describe('search highlighting', function()
/\<text\> |
]])
- feed_command("nohlsearch")
+ feed_command('nohlsearch')
screen:expect([[
some text |
more textstuff |
@@ -119,7 +123,7 @@ describe('search highlighting', function()
it("works when 'winhighlight' doesn't change Search highlight", function()
command('setlocal winhl=NonText:Underlined')
local attrs = screen:get_default_attr_ids()
- attrs[1] = {foreground = Screen.colors.SlateBlue, underline = true}
+ attrs[1] = { foreground = Screen.colors.SlateBlue, underline = true }
screen:set_default_attr_ids(attrs)
test_search_hl()
end)
@@ -127,7 +131,7 @@ describe('search highlighting', function()
it("works when 'winhighlight' changes Search highlight", function()
command('setlocal winhl=Search:Underlined')
local attrs = screen:get_default_attr_ids()
- attrs[2] = {foreground = Screen.colors.SlateBlue, underline = true}
+ attrs[2] = { foreground = Screen.colors.SlateBlue, underline = true }
screen:set_default_attr_ids(attrs)
test_search_hl()
end)
@@ -135,9 +139,9 @@ describe('search highlighting', function()
describe('CurSearch highlight', function()
before_each(function()
screen:set_default_attr_ids({
- [1] = {background = Screen.colors.Yellow}, -- Search
- [2] = {foreground = Screen.colors.White, background = Screen.colors.Black}, -- CurSearch
- [3] = {foreground = Screen.colors.Red}, -- WarningMsg
+ [1] = { background = Screen.colors.Yellow }, -- Search
+ [2] = { foreground = Screen.colors.White, background = Screen.colors.Black }, -- CurSearch
+ [3] = { foreground = Screen.colors.Red }, -- WarningMsg
})
command('highlight CurSearch guibg=Black guifg=White')
end)
@@ -152,7 +156,8 @@ describe('search highlighting', function()
humans think is impossible.]])
feed('/bee<CR>')
- screen:expect{grid=[[
+ screen:expect {
+ grid = [[
There is no way that a {2:^bee} should be |
able to fly. Its wings are too small |
to get its fat little body off the |
@@ -160,10 +165,12 @@ describe('search highlighting', function()
anyway because {1:bee}s don't care what |
humans think is impossible. |
{3:search hit BOTTOM, continuing at TOP} |
- ]]}
+ ]],
+ }
feed('nn')
- screen:expect{grid=[[
+ screen:expect {
+ grid = [[
There is no way that a {1:bee} should be |
able to fly. Its wings are too small |
to get its fat little body off the |
@@ -171,10 +178,12 @@ describe('search highlighting', function()
anyway because {2:^bee}s don't care what |
humans think is impossible. |
/bee |
- ]]}
+ ]],
+ }
feed('N')
- screen:expect{grid=[[
+ screen:expect {
+ grid = [[
There is no way that a {1:bee} should be |
able to fly. Its wings are too small |
to get its fat little body off the |
@@ -182,7 +191,8 @@ describe('search highlighting', function()
anyway because {1:bee}s don't care what |
humans think is impossible. |
?bee |
- ]]}
+ ]],
+ }
end)
it('works for multiline match', function()
@@ -273,54 +283,42 @@ describe('search highlighting', function()
end)
it('highlights after EOL', function()
- insert("\n\n\n\n\n\n")
+ insert('\n\n\n\n\n\n')
- feed("gg/^<cr>")
+ feed('gg/^<cr>')
screen:expect([[
{2: } |
{2:^ } |
- {2: } |
- {2: } |
- {2: } |
- {2: } |
+ {2: } |*4
/^ |
]])
-- Test that highlights are preserved after moving the cursor.
- feed("j")
+ feed('j')
screen:expect([[
- {2: } |
- {2: } |
+ {2: } |*2
{2:^ } |
- {2: } |
- {2: } |
- {2: } |
+ {2: } |*3
/^ |
]])
-- Repeat the test in rightleft mode.
- command("nohlsearch")
- command("set rightleft")
- feed("gg/^<cr>")
+ command('nohlsearch')
+ command('set rightleft')
+ feed('gg/^<cr>')
screen:expect([[
{2: }|
{2:^ }|
- {2: }|
- {2: }|
- {2: }|
- {2: }|
+ {2: }|*4
^/ |
]])
- feed("j")
+ feed('j')
screen:expect([[
- {2: }|
- {2: }|
+ {2: }|*2
{2:^ }|
- {2: }|
- {2: }|
- {2: }|
+ {2: }|*3
^/ |
]])
end)
@@ -338,7 +336,7 @@ describe('search highlighting', function()
:file term |
]])
- feed('G') -- Follow :terminal output.
+ feed('G') -- Follow :terminal output.
feed(':vnew<CR>')
insert([[
foo bar baz
@@ -349,8 +347,7 @@ describe('search highlighting', function()
{3:foo} bar baz │{MATCH:%d+}: {2:foo}{MATCH:%s+}|
bar baz {2:foo} │{MATCH:%d+}: {2:foo}{MATCH:%s+}|
bar {2:foo} baz │{MATCH:%d+}: {2:foo}{MATCH:%s+}|
- {1:~ }│{MATCH:.*}|
- {1:~ }│{MATCH:.*}|
+ {1:~ }│{MATCH:.*}|*2
{5:[No Name] [+] }{3:term }|
/foo^ |
]])
@@ -364,82 +361,61 @@ describe('search highlighting', function()
the first line
in a little file]])
command('vsplit')
- feed("gg/li")
+ feed('gg/li')
screen:expect([[
the first {3:li}ne │the first {2:li}ne |
in a {2:li}ttle file │in a {2:li}ttle file |
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
+ {1:~ }│{1:~ }|*4
/li^ |
]])
-- check that consecutive matches are caught by C-g/C-t
- feed("<C-g>")
+ feed('<C-g>')
screen:expect([[
the first {2:li}ne │the first {2:li}ne |
in a {3:li}ttle file │in a {2:li}ttle file |
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
+ {1:~ }│{1:~ }|*4
/li^ |
]])
- feed("<C-t>")
+ feed('<C-t>')
screen:expect([[
the first {3:li}ne │the first {2:li}ne |
in a {2:li}ttle file │in a {2:li}ttle file |
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
+ {1:~ }│{1:~ }|*4
/li^ |
]])
- feed("t")
+ feed('t')
screen:expect([[
the first line │the first line |
in a {3:lit}tle file │in a {2:lit}tle file |
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
+ {1:~ }│{1:~ }|*4
/lit^ |
]])
- feed("<cr>")
+ feed('<cr>')
screen:expect([[
the first line │the first line |
in a {2:^lit}tle file │in a {2:lit}tle file |
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
+ {1:~ }│{1:~ }|*4
/lit |
]])
- feed("/fir")
+ feed('/fir')
screen:expect([[
the {3:fir}st line │the {2:fir}st line |
in a little file │in a little file |
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
+ {1:~ }│{1:~ }|*4
/fir^ |
]])
-- incsearch have priority over hlsearch
- feed("<esc>/ttle")
+ feed('<esc>/ttle')
screen:expect([[
the first line │the first line |
in a li{3:ttle} file │in a li{2:ttle} file |
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
+ {1:~ }│{1:~ }|*4
/ttle^ |
]])
@@ -448,10 +424,7 @@ describe('search highlighting', function()
screen:expect([[
the first line │the first line |
in a {2:^lit}tle file │in a {2:lit}tle file |
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
+ {1:~ }│{1:~ }|*4
|
]])
eq('lit', eval('@/'))
@@ -461,10 +434,7 @@ describe('search highlighting', function()
screen:expect([[
the first line │the first line |
in a ^little file │in a little file |
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
+ {1:~ }│{1:~ }|*4
:noh |
]])
@@ -472,20 +442,14 @@ describe('search highlighting', function()
screen:expect([[
the {3:first} line │the {2:first} line |
in a little file │in a little file |
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
+ {1:~ }│{1:~ }|*4
/first^ |
]])
feed('<esc>')
screen:expect([[
the first line │the first line |
in a ^little file │in a little file |
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
+ {1:~ }│{1:~ }|*4
|
]])
@@ -494,43 +458,34 @@ describe('search highlighting', function()
command([[let @/ = 'i']])
-- moves to next match of previous search pattern, just like /<cr>
feed('/<c-g><cr>')
- eq({0, 1, 6, 0}, funcs.getpos('.'))
+ eq({ 0, 1, 6, 0 }, fn.getpos('.'))
-- moves to next match of previous search pattern, just like /<cr>
feed('/<cr>')
- eq({0, 1, 12, 0}, funcs.getpos('.'))
+ eq({ 0, 1, 12, 0 }, fn.getpos('.'))
-- moves to next match of previous search pattern, just like /<cr>
feed('/<c-t><cr>')
- eq({0, 2, 1, 0}, funcs.getpos('.'))
+ eq({ 0, 2, 1, 0 }, fn.getpos('.'))
-- 8.0.1304, test that C-g and C-t works with incsearch and empty pattern
feed('<esc>/fi<CR>')
screen:expect([[
the {2:fi}rst line │the {2:fi}rst line |
in a little {2:^fi}le │in a little {2:fi}le |
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
+ {1:~ }│{1:~ }|*4
/fi |
]])
feed('//')
screen:expect([[
the {3:fi}rst line │the {2:fi}rst line |
in a little {2:fi}le │in a little {2:fi}le |
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
+ {1:~ }│{1:~ }|*4
//^ |
]])
feed('<C-g>')
screen:expect([[
the {2:fi}rst line │the {2:fi}rst line |
in a little {3:fi}le │in a little {2:fi}le |
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
+ {1:~ }│{1:~ }|*4
//^ |
]])
feed('<Esc>')
@@ -541,10 +496,7 @@ describe('search highlighting', function()
screen:expect([[
the first line │the first line |
in a little {3:file} │in a little {2:file} |
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
+ {1:~ }│{1:~ }|*4
/file^ |
]])
feed('<Esc>')
@@ -557,10 +509,7 @@ describe('search highlighting', function()
screen:expect([[
the {3:first} line │the {2:first} line |
in a little file │in a little file |
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
+ {1:~ }│{1:~ }|*4
/first^ |
]])
feed('<Esc>')
@@ -570,10 +519,7 @@ describe('search highlighting', function()
screen:expect([[
the first line │the first line |
in a {3:little} file │in a {2:little} file |
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
- {1:~ }│{1:~ }|
+ {1:~ }│{1:~ }|*4
/little^ |
]])
feed('<Esc>')
@@ -586,37 +532,28 @@ describe('search highlighting', function()
not the match you're looking for
the match is here]])
- feed("gg/mat/e")
+ feed('gg/mat/e')
screen:expect([[
not the {3:mat}ch you're looking for |
the {2:mat}ch is here |
- {1:~ }|
- {1:~ }|
- {1:~ }|
- {1:~ }|
+ {1:~ }|*4
/mat/e^ |
]])
-- Search with count and /e offset fixed in Vim patch 7.4.532.
- feed("<esc>2/mat/e")
+ feed('<esc>2/mat/e')
screen:expect([[
not the {2:mat}ch you're looking for |
the {3:mat}ch is here |
- {1:~ }|
- {1:~ }|
- {1:~ }|
- {1:~ }|
+ {1:~ }|*4
/mat/e^ |
]])
- feed("<cr>")
+ feed('<cr>')
screen:expect([[
not the {2:mat}ch you're looking for |
the {2:ma^t}ch is here |
- {1:~ }|
- {1:~ }|
- {1:~ }|
- {1:~ }|
+ {1:~ }|*4
/mat/e |
]])
end)
@@ -628,8 +565,7 @@ describe('search highlighting', function()
screen:expect([[
|
a repeated {2:^line } |
- {2:a} repeated {2:line } |
- {2:a} repeated {2:line } |
+ {2:a} repeated {2:line } |*2
{2:a} repeated line |
{1:~ }|
{4:search hit BOTTOM, continuing at TOP} |
@@ -650,83 +586,80 @@ describe('search highlighting', function()
it('works with matchadd and syntax', function()
screen:set_default_attr_ids {
- [1] = {bold=true, foreground=Screen.colors.Blue};
- [2] = {background = Screen.colors.Yellow};
- [3] = {reverse = true};
- [4] = {foreground = Screen.colors.Red};
- [5] = {bold = true, background = Screen.colors.Green};
- [6] = {italic = true, background = Screen.colors.Magenta};
- [7] = {bold = true, background = Screen.colors.Yellow};
- [8] = {foreground = Screen.colors.Blue4, background = Screen.colors.LightGray};
+ [1] = { bold = true, foreground = Screen.colors.Blue },
+ [2] = { background = Screen.colors.Yellow },
+ [3] = { reverse = true },
+ [4] = { foreground = Screen.colors.Red },
+ [5] = { bold = true, background = Screen.colors.Green },
+ [6] = { italic = true, background = Screen.colors.Magenta },
+ [7] = { bold = true, background = Screen.colors.Yellow },
+ [8] = { foreground = Screen.colors.Blue4, background = Screen.colors.LightGray },
}
feed_command('set hlsearch')
insert [[
very special text
]]
- feed_command("syntax on")
- feed_command("highlight MyGroup guibg=Green gui=bold")
- feed_command("highlight MyGroup2 guibg=Magenta gui=italic")
+ feed_command('syntax on')
+ feed_command('highlight MyGroup guibg=Green gui=bold')
+ feed_command('highlight MyGroup2 guibg=Magenta gui=italic')
feed_command("call matchadd('MyGroup', 'special')")
feed_command("call matchadd('MyGroup2', 'text', 0)")
-- searchhl and matchadd matches are exclusive, only the highest priority
-- is used (and matches with lower priorities are not combined)
- feed_command("/ial te")
- screen:expect{grid=[[
+ feed_command('/ial te')
+ screen:expect {
+ grid = [[
very {5:spec^ial}{2: te}{6:xt} |
|
- {1:~ }|
- {1:~ }|
- {1:~ }|
- {1:~ }|
+ {1:~ }|*4
{4:search hit BOTTOM, continuing at TOP} |
- ]], win_viewport={
- [2] = {win = {id = 1000}, topline = 0, botline = 3, curline = 0, curcol = 11, linecount = 2, sum_scroll_delta = 0};
- }}
+ ]],
+ win_viewport = {
+ [2] = {
+ win = 1000,
+ topline = 0,
+ botline = 3,
+ curline = 0,
+ curcol = 11,
+ linecount = 2,
+ sum_scroll_delta = 0,
+ },
+ },
+ }
-- check highlights work also in folds
- feed("zf4j")
- screen:expect{grid=[[
+ feed('zf4j')
+ screen:expect {
+ grid = [[
{8:^+-- 2 lines: very special text·········}|
- {1:~ }|
- {1:~ }|
- {1:~ }|
- {1:~ }|
- {1:~ }|
+ {1:~ }|*5
{4:search hit BOTTOM, continuing at TOP} |
- ]]}
- command("%foldopen")
+ ]],
+ }
+ command('%foldopen')
screen:expect([[
very {5:spec^ial}{2: te}{6:xt} |
|
- {1:~ }|
- {1:~ }|
- {1:~ }|
- {1:~ }|
+ {1:~ }|*4
{4:search hit BOTTOM, continuing at TOP} |
]])
- feed_command("call clearmatches()")
+ feed_command('call clearmatches()')
screen:expect([[
very spec{2:^ial te}xt |
|
- {1:~ }|
- {1:~ }|
- {1:~ }|
- {1:~ }|
+ {1:~ }|*4
:call clearmatches() |
]])
-- searchhl has priority over syntax, but in this case
-- nonconflicting attributes are combined
- feed_command("syntax keyword MyGroup special")
+ feed_command('syntax keyword MyGroup special')
screen:expect([[
very {5:spec}{7:^ial}{2: te}xt |
|
- {1:~ }|
- {1:~ }|
- {1:~ }|
- {1:~ }|
+ {1:~ }|*4
:syntax keyword MyGroup special |
]])
end)
@@ -737,13 +670,8 @@ describe('search highlighting', function()
feed(':%g@a/b')
screen:expect([[
{3:a/b}/c |
- {1:~ }|
- {1:~ }|
- {1:~ }|
- {1:~ }|
- {1:~ }|
+ {1:~ }|*5
:%g@a/b^ |
]])
end)
end)
-