diff options
Diffstat (limited to 'test/functional/ui/searchhl_spec.lua')
-rw-r--r-- | test/functional/ui/searchhl_spec.lua | 177 |
1 files changed, 103 insertions, 74 deletions
diff --git a/test/functional/ui/searchhl_spec.lua b/test/functional/ui/searchhl_spec.lua index 1e8af4225a..68596f27ad 100644 --- a/test/functional/ui/searchhl_spec.lua +++ b/test/functional/ui/searchhl_spec.lua @@ -15,20 +15,20 @@ 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 | @@ -38,16 +38,27 @@ describe('search highlighting', function() 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:~ }|*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 = { id = 1000 }, + topline = 0, + botline = 3, + curline = 0, + curcol = 8, + linecount = 2, + sum_scroll_delta = 0, + }, + }, + } end) local function test_search_hl() @@ -59,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 | @@ -71,7 +82,7 @@ describe('search highlighting', function() ]]) -- overlapping matches not allowed - feed("3nx") + feed('3nx') screen:expect([[ some {2:text} | more {2:text}stuff | @@ -82,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 | @@ -93,7 +104,7 @@ describe('search highlighting', function() /\<text\> | ]]) - feed_command("nohlsearch") + feed_command('nohlsearch') screen:expect([[ some text | more textstuff | @@ -112,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) @@ -120,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) @@ -128,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) @@ -145,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 | @@ -153,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 | @@ -164,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 | @@ -175,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() @@ -266,9 +283,9 @@ 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:^ } | @@ -277,7 +294,7 @@ describe('search highlighting', function() ]]) -- Test that highlights are preserved after moving the cursor. - feed("j") + feed('j') screen:expect([[ {2: } |*2 {2:^ } | @@ -286,9 +303,9 @@ describe('search highlighting', function() ]]) -- 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: }| @@ -297,7 +314,7 @@ describe('search highlighting', function() ^/ | ]]) - feed("j") + feed('j') screen:expect([[ {2: }|*2 {2:^ }| @@ -319,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 @@ -344,7 +361,7 @@ 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 | @@ -353,7 +370,7 @@ describe('search highlighting', function() ]]) -- 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 | @@ -361,7 +378,7 @@ describe('search highlighting', function() /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 | @@ -369,7 +386,7 @@ describe('search highlighting', function() /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 | @@ -377,7 +394,7 @@ describe('search highlighting', function() /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 | @@ -385,7 +402,7 @@ describe('search highlighting', function() /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 | @@ -394,7 +411,7 @@ describe('search highlighting', function() ]]) -- 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 | @@ -441,13 +458,13 @@ 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 }, funcs.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 }, funcs.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 }, funcs.getpos('.')) -- 8.0.1304, test that C-g and C-t works with incsearch and empty pattern feed('<esc>/fi<CR>') @@ -515,7 +532,7 @@ 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 | @@ -524,7 +541,7 @@ describe('search highlighting', function() ]]) -- 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 | @@ -532,7 +549,7 @@ describe('search highlighting', function() /mat/e^ | ]]) - feed("<cr>") + feed('<cr>') screen:expect([[ not the {2:mat}ch you're looking for | the {2:ma^t}ch is here | @@ -569,45 +586,58 @@ 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:~ }|*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 = { id = 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:~ }|*5 {4:search hit BOTTOM, continuing at TOP} | - ]]} - command("%foldopen") + ]], + } + command('%foldopen') screen:expect([[ very {5:spec^ial}{2: te}{6:xt} | | @@ -615,7 +645,7 @@ describe('search highlighting', function() {4:search hit BOTTOM, continuing at TOP} | ]]) - feed_command("call clearmatches()") + feed_command('call clearmatches()') screen:expect([[ very spec{2:^ial te}xt | | @@ -625,7 +655,7 @@ describe('search highlighting', function() -- 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 | | @@ -645,4 +675,3 @@ describe('search highlighting', function() ]]) end) end) - |