mirror of
https://github.com/neovim/neovim.git
synced 2025-09-06 11:28:22 +00:00

Problem: Cannot disable individual captures and patterns in treesitter queries. Solution: * Expose the corresponding tree-sitter API functions for `TSQuery` object. * Add documentation for `TSQuery`. * Return the pattern ID from `get_captures_at_pos()` (and hence `:Inspect!`).
46 lines
1.9 KiB
Lua
46 lines
1.9 KiB
Lua
---@meta
|
|
-- luacheck: no unused args
|
|
error('Cannot require a meta file')
|
|
|
|
-- This could be documented as a module @brief like tsnode/tstree, but without
|
|
-- its own section header documenting it as a class ensures it still gets a helptag.
|
|
|
|
--- Reference to an object held by the treesitter library that is used as a
|
|
--- component of the |vim.treesitter.Query| for language feature support.
|
|
--- See |treesitter-query| for more about queries or |vim.treesitter.query.parse()|
|
|
--- for an example of how to obtain a query object.
|
|
---
|
|
---@class TSQuery: userdata
|
|
local TSQuery = {} -- luacheck: no unused
|
|
|
|
--- Get information about the query's patterns and captures.
|
|
---@nodoc
|
|
---@return TSQueryInfo
|
|
function TSQuery:inspect() end
|
|
|
|
--- Disable a specific capture in this query; once disabled the capture cannot be re-enabled.
|
|
--- {capture_name} should not include a leading "@".
|
|
---
|
|
--- Example: To disable the `@variable.parameter` capture from the vimdoc highlights query:
|
|
--- ```lua
|
|
--- local query = vim.treesitter.query.get('vimdoc', 'highlights')
|
|
--- query.query:disable_capture("variable.parameter")
|
|
--- vim.treesitter.get_parser():parse()
|
|
--- ```
|
|
---@param capture_name string
|
|
function TSQuery:disable_capture(capture_name) end
|
|
|
|
--- Disable a specific pattern in this query; once disabled the pattern cannot be re-enabled.
|
|
--- The {pattern_index} for a particular match can be obtained with |:Inspect!|, or by reading
|
|
--- the source of the query (i.e. from |vim.treesitter.query.get_files()|).
|
|
---
|
|
--- Example: To disable `|` links in vimdoc but keep other `@markup.link`s highlighted:
|
|
--- ```lua
|
|
--- local link_pattern = 9 -- from :Inspect!
|
|
--- local query = vim.treesitter.query.get('vimdoc', 'highlights')
|
|
--- query.query:disable_pattern(link_pattern)
|
|
--- local tree = vim.treesitter.get_parser():parse()[1]
|
|
--- ```
|
|
---@param pattern_index integer
|
|
function TSQuery:disable_pattern(pattern_index) end
|