mirror of
https://github.com/neovim/neovim.git
synced 2024-12-19 18:55:14 -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
|
||||
|
||||
while line >= state.next_row do
|
||||
local capture, node = state.iter()
|
||||
local capture, node, metadata = state.iter()
|
||||
|
||||
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,
|
||||
hl_group = hl,
|
||||
ephemeral = true,
|
||||
priority = 100 -- Low but leaves room below
|
||||
priority = tonumber(metadata.priority) or 100 -- Low but leaves room below
|
||||
})
|
||||
end
|
||||
if start_row > line then
|
||||
|
@ -570,4 +570,47 @@ describe('treesitter highlighting', function()
|
||||
]]}
|
||||
screen:expect{ unchanged=true }
|
||||
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)
|
||||
|
Loading…
Reference in New Issue
Block a user