diff options
author | Stephan Seitz <stephan.seitz@fau.de> | 2023-04-29 18:22:26 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-29 18:22:26 +0200 |
commit | c194acbfc479d8e5839fa629363f93f6550d035c (patch) | |
tree | 134a12e3a5b6ee970081bcfc83c3494201dfa00f /runtime/lua/vim/treesitter/query.lua | |
parent | 933fdff4660a17b1df7809105c57825e0ece1fc6 (diff) | |
download | rneovim-c194acbfc479d8e5839fa629363f93f6550d035c.tar.gz rneovim-c194acbfc479d8e5839fa629363f93f6550d035c.tar.bz2 rneovim-c194acbfc479d8e5839fa629363f93f6550d035c.zip |
feat(treesitter): add query_linter from nvim-treesitter/playground (#22784)
Co-authored-by: clason <clason@users.noreply.github.com>
Co-authored-by: lewis6991 <lewis6991@users.noreply.github.com>
Diffstat (limited to 'runtime/lua/vim/treesitter/query.lua')
-rw-r--r-- | runtime/lua/vim/treesitter/query.lua | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/runtime/lua/vim/treesitter/query.lua b/runtime/lua/vim/treesitter/query.lua index 8a747ba14c..492bfd1ffb 100644 --- a/runtime/lua/vim/treesitter/query.lua +++ b/runtime/lua/vim/treesitter/query.lua @@ -714,4 +714,33 @@ function Query:iter_matches(node, source, start, stop) return iter end +---@class QueryLinterOpts +---@field langs (string|string[]|nil) +---@field clear (boolean) + +--- Lint treesitter queries using installed parser, or clear lint errors. +--- +--- Use |treesitter-parsers| in runtimepath to check the query file in {buf} for errors: +--- +--- - verify that used nodes are valid identifiers in the grammar. +--- - verify that predicates and directives are valid. +--- - verify that top-level s-expressions are valid. +--- +--- The found diagnostics are reported using |diagnostic-api|. +--- By default, the parser used for verification is determined by the containing folder +--- of the query file, e.g., if the path is `**/lua/highlights.scm`, the parser for the +--- `lua` language will be used. +---@param buf (integer) Buffer handle +---@param opts (QueryLinterOpts|nil) Optional keyword arguments: +--- - langs (string|string[]|nil) Language(s) to use for checking the query. +--- If multiple languages are specified, queries are validated for all of them +--- - clear (boolean) if `true`, just clear current lint errors +function M.lint(buf, opts) + if opts and opts.clear then + require('vim.treesitter._query_linter').clear(buf) + else + require('vim.treesitter._query_linter').lint(buf, opts) + end +end + return M |