mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 03:05:11 -07:00
feat(treesitter): allow to set highlight priority for queries
This commit is contained in:
parent
a8c3d50fad
commit
242608e669
@ -248,7 +248,7 @@ local function on_line_impl(self, buf, line)
|
|||||||
end
|
end
|
||||||
|
|
||||||
while line >= state.next_row do
|
while line >= state.next_row do
|
||||||
local capture, node = state.iter()
|
local capture, node, metadata = state.iter()
|
||||||
|
|
||||||
if capture == nil then break end
|
if capture == nil then break end
|
||||||
|
|
||||||
@ -260,7 +260,7 @@ local function on_line_impl(self, buf, line)
|
|||||||
{ end_line = end_row, end_col = end_col,
|
{ end_line = end_row, end_col = end_col,
|
||||||
hl_group = hl,
|
hl_group = hl,
|
||||||
ephemeral = true,
|
ephemeral = true,
|
||||||
priority = 100 -- Low but leaves room below
|
priority = tonumber(metadata.priority) or 100 -- Low but leaves room below
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
if start_row > line then
|
if start_row > line then
|
||||||
|
@ -570,4 +570,47 @@ describe('treesitter highlighting', function()
|
|||||||
]]}
|
]]}
|
||||||
screen:expect{ unchanged=true }
|
screen:expect{ unchanged=true }
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it("supports highlighting with priority", function()
|
||||||
|
if pending_c_parser(pending) then return end
|
||||||
|
|
||||||
|
insert([[
|
||||||
|
int x = INT_MAX;
|
||||||
|
#define READ_STRING(x, y) (char_u *)read_string((x), (size_t)(y))
|
||||||
|
#define foo void main() { \
|
||||||
|
return 42; \
|
||||||
|
}
|
||||||
|
]])
|
||||||
|
|
||||||
|
exec_lua [[
|
||||||
|
local parser = vim.treesitter.get_parser(0, "c")
|
||||||
|
test_hl = vim.treesitter.highlighter.new(parser, {queries = {c = hl_query..'\n((translation_unit) @Error (set! "priority" 101))\n'}})
|
||||||
|
]]
|
||||||
|
-- expect everything to have Error highlight
|
||||||
|
screen:expect{grid=[[
|
||||||
|
{12:int}{8: x = INT_MAX;} |
|
||||||
|
{8:#define READ_STRING(x, y) (char_u *)read_string((x), (size_t)(y))}|
|
||||||
|
{8:#define foo void main() { \} |
|
||||||
|
{8: return 42; \} |
|
||||||
|
{8: }} |
|
||||||
|
^ |
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
|
|
||||||
|
]], attr_ids={
|
||||||
|
[1] = {bold = true, foreground = Screen.colors.Blue1};
|
||||||
|
[8] = {foreground = Screen.colors.Grey100, background = Screen.colors.Red};
|
||||||
|
-- bold will not be overwritten at the moment
|
||||||
|
[12] = {background = Screen.colors.Red, bold = true, foreground = Screen.colors.Grey100};
|
||||||
|
}}
|
||||||
|
end)
|
||||||
end)
|
end)
|
||||||
|
Loading…
Reference in New Issue
Block a user