mirror of
https://github.com/neovim/neovim.git
synced 2024-12-19 10:45:16 -07:00
fix(treesitter): lint top-level anonymous nodes
**Problem:** Top-level anonymous nodes are not being checked by the query linter **Solution:** Check them by adding them to the top-level query This commit also moves a table construction out of the match iterator so it is run less frequently.
This commit is contained in:
parent
f01c764cc6
commit
052e048db6
@ -65,7 +65,7 @@ local function normalize_opts(buf, opts)
|
||||
end
|
||||
|
||||
local lint_query = [[;; query
|
||||
(program [(named_node) (list) (grouping)] @toplevel)
|
||||
(program [(named_node) (anonymous_node) (list) (grouping)] @toplevel)
|
||||
(named_node
|
||||
name: _ @node.named)
|
||||
(anonymous_node
|
||||
@ -171,17 +171,17 @@ function M.lint(buf, opts)
|
||||
|
||||
--- @type (table|nil)
|
||||
local parser_info = vim.F.npcall(vim.treesitter.language.inspect, lang)
|
||||
local lang_context = {
|
||||
lang = lang,
|
||||
parser_info = parser_info,
|
||||
is_first_lang = i == 1,
|
||||
}
|
||||
|
||||
local parser = assert(vim.treesitter._get_parser(buf), 'query parser not found.')
|
||||
parser:parse()
|
||||
parser:for_each_tree(function(tree, ltree)
|
||||
if ltree:lang() == 'query' then
|
||||
for _, match, _ in query:iter_matches(tree:root(), buf, 0, -1) do
|
||||
local lang_context = {
|
||||
lang = lang,
|
||||
parser_info = parser_info,
|
||||
is_first_lang = i == 1,
|
||||
}
|
||||
lint_match(buf, match, query, lang_context, diagnostics)
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user