aboutsummaryrefslogtreecommitdiff
path: root/test/functional/treesitter/highlight_spec.lua
diff options
context:
space:
mode:
authorLewis Russell <lewis6991@gmail.com>2024-07-29 11:20:15 +0100
committerLewis Russell <me@lewisr.dev>2024-08-02 19:04:37 +0100
commit7d24c4d6b0413cd5af8d0579f0a9a694db7f775e (patch)
treed9954c2001fe512c60a76561e7a19566b9de638b /test/functional/treesitter/highlight_spec.lua
parentf32557ca679cbb1d7de52ab54dc35585af9ab9d0 (diff)
downloadrneovim-7d24c4d6b0413cd5af8d0579f0a9a694db7f775e.tar.gz
rneovim-7d24c4d6b0413cd5af8d0579f0a9a694db7f775e.tar.bz2
rneovim-7d24c4d6b0413cd5af8d0579f0a9a694db7f775e.zip
test: allow exec_lua to handle functions
Problem: Tests have lots of exec_lua calls which input blocks of code provided as unformatted strings. Solution: Teach exec_lua how to handle functions.
Diffstat (limited to 'test/functional/treesitter/highlight_spec.lua')
-rw-r--r--test/functional/treesitter/highlight_spec.lua175
1 files changed, 96 insertions, 79 deletions
diff --git a/test/functional/treesitter/highlight_spec.lua b/test/functional/treesitter/highlight_spec.lua
index b0ac180738..da001e2ab1 100644
--- a/test/functional/treesitter/highlight_spec.lua
+++ b/test/functional/treesitter/highlight_spec.lua
@@ -156,7 +156,7 @@ local injection_grid_expected_c = [[
]]
describe('treesitter highlighting (C)', function()
- local screen
+ local screen --- @type test.functional.ui.screen
before_each(function()
clear()
@@ -176,7 +176,6 @@ describe('treesitter highlighting (C)', function()
[11] = { foreground = Screen.colors.Cyan4 },
}
- exec_lua([[ hl_query = ... ]], hl_query_c)
command [[ hi link @error ErrorMsg ]]
command [[ hi link @warning WarningMsg ]]
end)
@@ -188,22 +187,28 @@ describe('treesitter highlighting (C)', function()
-- legacy syntax highlighting is used by default
screen:expect(hl_grid_legacy_c)
- exec_lua([[
+ exec_lua(function(hl_query)
vim.treesitter.query.set('c', 'highlights', hl_query)
vim.treesitter.start()
- ]])
+ end, hl_query_c)
-- treesitter highlighting is used
screen:expect(hl_grid_ts_c)
- exec_lua('vim.treesitter.stop()')
+ exec_lua(function()
+ vim.treesitter.stop()
+ end)
-- legacy syntax highlighting is used
screen:expect(hl_grid_legacy_c)
- exec_lua('vim.treesitter.start()')
+ exec_lua(function()
+ vim.treesitter.start()
+ end)
-- treesitter highlighting is used
screen:expect(hl_grid_ts_c)
- exec_lua('vim.treesitter.stop()')
+ exec_lua(function()
+ vim.treesitter.stop()
+ end)
-- legacy syntax highlighting is used
screen:expect(hl_grid_legacy_c)
end)
@@ -233,11 +238,11 @@ describe('treesitter highlighting (C)', function()
]],
}
- exec_lua [[
- local parser = vim.treesitter.get_parser(0, "c")
+ exec_lua(function(hl_query)
+ local parser = vim.treesitter.get_parser(0, 'c')
local highlighter = vim.treesitter.highlighter
- test_hl = highlighter.new(parser, {queries = {c = hl_query}})
- ]]
+ highlighter.new(parser, { queries = { c = hl_query } })
+ end, hl_query_c)
screen:expect(hl_grid_ts_c)
feed('5Goc<esc>dd')
@@ -364,10 +369,10 @@ describe('treesitter highlighting (C)', function()
it('is updated with :sort', function()
insert(test_text_c)
- exec_lua [[
- local parser = vim.treesitter.get_parser(0, "c")
- test_hl = vim.treesitter.highlighter.new(parser, {queries = {c = hl_query}})
- ]]
+ exec_lua(function(hl_query)
+ local parser = vim.treesitter.get_parser(0, 'c')
+ vim.treesitter.highlighter.new(parser, { queries = { c = hl_query } })
+ end, hl_query_c)
screen:expect {
grid = [[
{3:int} width = {5:INT_MAX}, height = {5:INT_MAX}; |
@@ -470,19 +475,19 @@ describe('treesitter highlighting (C)', function()
]],
}
- exec_lua [[
- parser = vim.treesitter.get_parser(0, "c")
- query = vim.treesitter.query.parse("c", "(declaration) @decl")
+ exec_lua(function()
+ local parser = vim.treesitter.get_parser(0, 'c')
+ local query = vim.treesitter.query.parse('c', '(declaration) @decl')
local nodes = {}
for _, node in query:iter_captures(parser:parse()[1]:root(), 0, 0, 19) do
table.insert(nodes, node)
end
- parser:set_included_regions({nodes})
+ parser:set_included_regions({ nodes })
- local hl = vim.treesitter.highlighter.new(parser, {queries = {c = "(identifier) @type"}})
- ]]
+ vim.treesitter.highlighter.new(parser, { queries = { c = '(identifier) @type' } })
+ end)
screen:expect {
grid = [[
@@ -513,13 +518,15 @@ describe('treesitter highlighting (C)', function()
screen:expect { grid = injection_grid_c }
- exec_lua [[
- local parser = vim.treesitter.get_parser(0, "c", {
- injections = {c = '(preproc_def (preproc_arg) @injection.content (#set! injection.language "c")) (preproc_function_def value: (preproc_arg) @injection.content (#set! injection.language "c"))'}
+ exec_lua(function(hl_query)
+ local parser = vim.treesitter.get_parser(0, 'c', {
+ injections = {
+ c = '(preproc_def (preproc_arg) @injection.content (#set! injection.language "c")) (preproc_function_def value: (preproc_arg) @injection.content (#set! injection.language "c"))',
+ },
})
local highlighter = vim.treesitter.highlighter
- test_hl = highlighter.new(parser, {queries = {c = hl_query}})
- ]]
+ highlighter.new(parser, { queries = { c = hl_query } })
+ end, hl_query_c)
screen:expect { grid = injection_grid_expected_c }
end)
@@ -529,14 +536,16 @@ describe('treesitter highlighting (C)', function()
screen:expect { grid = injection_grid_c }
- exec_lua [[
- vim.treesitter.language.register("c", "foo")
- local parser = vim.treesitter.get_parser(0, "c", {
- injections = {c = '(preproc_def (preproc_arg) @injection.content (#set! injection.language "foo")) (preproc_function_def value: (preproc_arg) @injection.content (#set! injection.language "foo"))'}
+ exec_lua(function(hl_query)
+ vim.treesitter.language.register('c', 'foo')
+ local parser = vim.treesitter.get_parser(0, 'c', {
+ injections = {
+ c = '(preproc_def (preproc_arg) @injection.content (#set! injection.language "foo")) (preproc_function_def value: (preproc_arg) @injection.content (#set! injection.language "foo"))',
+ },
})
local highlighter = vim.treesitter.highlighter
- test_hl = highlighter.new(parser, {queries = {c = hl_query}})
- ]]
+ highlighter.new(parser, { queries = { c = hl_query } })
+ end, hl_query_c)
screen:expect { grid = injection_grid_expected_c }
end)
@@ -550,13 +559,14 @@ describe('treesitter highlighting (C)', function()
}
]])
- exec_lua [[
- local injection_query = '(preproc_def (preproc_arg) @injection.content (#set! injection.language "c")) (preproc_function_def value: (preproc_arg) @injection.content (#set! injection.language "c"))'
- vim.treesitter.query.set("c", "highlights", hl_query)
- vim.treesitter.query.set("c", "injections", injection_query)
+ exec_lua(function(hl_query)
+ local injection_query =
+ '(preproc_def (preproc_arg) @injection.content (#set! injection.language "c")) (preproc_function_def value: (preproc_arg) @injection.content (#set! injection.language "c"))'
+ vim.treesitter.query.set('c', 'highlights', hl_query)
+ vim.treesitter.query.set('c', 'injections', injection_query)
- vim.treesitter.highlighter.new(vim.treesitter.get_parser(0, "c"))
- ]]
+ vim.treesitter.highlighter.new(vim.treesitter.get_parser(0, 'c'))
+ end, hl_query_c)
screen:expect {
grid = [[
@@ -576,10 +586,10 @@ describe('treesitter highlighting (C)', function()
insert(hl_text_c)
feed('gg')
- exec_lua [[
- local parser = vim.treesitter.get_parser(0, "c")
- test_hl = vim.treesitter.highlighter.new(parser, {queries = {c = hl_query}})
- ]]
+ exec_lua(function(hl_query)
+ local parser = vim.treesitter.get_parser(0, 'c')
+ vim.treesitter.highlighter.new(parser, { queries = { c = hl_query } })
+ end, hl_query_c)
screen:expect(hl_grid_ts_c)
@@ -619,10 +629,14 @@ describe('treesitter highlighting (C)', function()
}
]])
- exec_lua [[
- local parser = vim.treesitter.get_parser(0, "c")
- test_hl = vim.treesitter.highlighter.new(parser, {queries = {c = hl_query..'\n((translation_unit) @constant (#set! "priority" 101))\n'}})
- ]]
+ exec_lua(function(hl_query)
+ local parser = vim.treesitter.get_parser(0, 'c')
+ vim.treesitter.highlighter.new(parser, {
+ queries = {
+ c = hl_query .. '\n((translation_unit) @constant (#set! "priority" 101))\n',
+ },
+ })
+ end, hl_query_c)
-- expect everything to have Constant highlight
screen:expect {
grid = [[
@@ -669,11 +683,14 @@ describe('treesitter highlighting (C)', function()
hi link @foo.bar Type
hi link @foo String
]]
- exec_lua [[
- local parser = vim.treesitter.get_parser(0, "c", {})
- local highlighter = vim.treesitter.highlighter
- test_hl = highlighter.new(parser, {queries = {c = "(primitive_type) @foo.bar (string_literal) @foo"}})
- ]]
+ exec_lua(function()
+ local parser = vim.treesitter.get_parser(0, 'c', {})
+ local highlighter = vim.treesitter.highlighter
+ highlighter.new(
+ parser,
+ { queries = { c = '(primitive_type) @foo.bar (string_literal) @foo' } }
+ )
+ end)
screen:expect {
grid = [[
@@ -701,10 +718,12 @@ describe('treesitter highlighting (C)', function()
insert(hl_text_c)
-- conceal can be empty or a single cchar.
- exec_lua [=[
+ exec_lua(function()
vim.opt.cole = 2
- local parser = vim.treesitter.get_parser(0, "c")
- test_hl = vim.treesitter.highlighter.new(parser, {queries = {c = [[
+ local parser = vim.treesitter.get_parser(0, 'c')
+ vim.treesitter.highlighter.new(parser, {
+ queries = {
+ c = [[
("static" @keyword
(#set! conceal "R"))
@@ -717,8 +736,10 @@ describe('treesitter highlighting (C)', function()
arguments: (argument_list) @arguments)
(#eq? @function "multiqueue_put")
(#set! @function conceal "V"))
- ]]}})
- ]=]
+ ]],
+ },
+ })
+ end)
screen:expect {
grid = [[
@@ -775,11 +796,11 @@ describe('treesitter highlighting (C)', function()
int z = 6;
]])
- exec_lua([[
+ exec_lua(function()
local query = '((declaration)+ @string)'
vim.treesitter.query.set('c', 'highlights', query)
vim.treesitter.highlighter.new(vim.treesitter.get_parser(0, 'c'))
- ]])
+ end)
screen:expect {
grid = [[
@@ -805,14 +826,10 @@ describe('treesitter highlighting (C)', function()
declarator: (pointer_declarator) @variable.parameter)
]]
- exec_lua(
- [[
- local query = ...
- vim.treesitter.query.set('c', 'highlights', query)
+ exec_lua(function(query_str)
+ vim.treesitter.query.set('c', 'highlights', query_str)
vim.treesitter.highlighter.new(vim.treesitter.get_parser(0, 'c'))
- ]],
- query
- )
+ end, query)
screen:expect {
grid = [[
@@ -847,10 +864,10 @@ describe('treesitter highlighting (lua)', function()
ffi.cdef("int (*fun)(int, char *);")
]]
- exec_lua [[
+ exec_lua(function()
vim.bo.filetype = 'lua'
vim.treesitter.start()
- ]]
+ end)
screen:expect {
grid = [[
@@ -888,10 +905,10 @@ describe('treesitter highlighting (help)', function()
<
]]
- exec_lua [[
+ exec_lua(function()
vim.bo.filetype = 'help'
vim.treesitter.start()
- ]]
+ end)
screen:expect {
grid = [[
@@ -943,15 +960,15 @@ describe('treesitter highlighting (help)', function()
]]
]=])
- exec_lua [[
- parser = vim.treesitter.get_parser(0, "lua", {
+ exec_lua(function()
+ local parser = vim.treesitter.get_parser(0, 'lua', {
injections = {
- lua = '(string content: (_) @injection.content (#set! injection.language lua))'
- }
+ lua = '(string content: (_) @injection.content (#set! injection.language lua))',
+ },
})
vim.treesitter.highlighter.new(parser)
- ]]
+ end)
screen:expect {
grid = [=[
@@ -967,7 +984,7 @@ describe('treesitter highlighting (help)', function()
end)
describe('treesitter highlighting (nested injections)', function()
- local screen
+ local screen --- @type test.functional.ui.screen
before_each(function()
clear()
@@ -996,11 +1013,11 @@ vim.cmd([[
]])
]=]
- exec_lua [[
+ exec_lua(function()
vim.opt.scrolloff = 0
vim.bo.filetype = 'lua'
vim.treesitter.start()
- ]]
+ end)
-- invalidate the language tree
feed('ggi--[[<ESC>04x')
@@ -1041,10 +1058,10 @@ describe('treesitter highlighting (markdown)', function()
clear()
screen = Screen.new(40, 6)
screen:attach()
- exec_lua([[
+ exec_lua(function()
vim.bo.filetype = 'markdown'
vim.treesitter.start()
- ]])
+ end)
end)
it('supports hyperlinks', function()