mirror of
https://github.com/neovim/neovim.git
synced 2026-04-21 14:55:33 +00:00
feat(treesitter): add more metadata to language.inspect() (#32657)
Problem: No way to check the version of a treesitter parser. Solution: Add version metadata (ABI 15 parsers only) as well as parser state count and supertype information (ABI 15) in `vim.treesitter.language.inspect()`. Also graduate the `abi_version` field, as this is now the official upstream name. --------- Co-authored-by: Christian Clason <c.clason@uni-graz.at>
This commit is contained in:
@@ -22,10 +22,15 @@ error('Cannot require a meta file')
|
||||
---@field patterns table<integer, (integer|string)[][]>
|
||||
---
|
||||
---@class TSLangInfo
|
||||
---@field abi_version integer
|
||||
---@field major_version? integer
|
||||
---@field minor_version? integer
|
||||
---@field patch_version? integer
|
||||
---@field state_count integer
|
||||
---@field fields string[]
|
||||
---@field symbols table<string,boolean>
|
||||
---@field supertypes table<string,string[]>
|
||||
---@field _wasm boolean
|
||||
---@field _abi_version integer
|
||||
|
||||
--- @param lang string
|
||||
--- @return TSLangInfo
|
||||
|
||||
@@ -35,7 +35,7 @@ function M.check()
|
||||
else
|
||||
local lang = ts.language.inspect(parsername)
|
||||
health.ok(
|
||||
string.format('Parser: %-20s ABI: %d, path: %s', parsername, lang._abi_version, parser)
|
||||
string.format('Parser: %-20s ABI: %d, path: %s', parsername, lang.abi_version, parser)
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -168,13 +168,17 @@ end
|
||||
|
||||
--- Inspects the provided language.
|
||||
---
|
||||
--- Inspecting provides some useful information on the language like node and field names, ABI
|
||||
--- version, and whether the language came from a WASM module.
|
||||
--- Inspecting provides some useful information on the language like ABI version, parser state count
|
||||
--- (a measure of parser complexity), node and field names, and whether the language came from a
|
||||
--- WASM module.
|
||||
---
|
||||
--- Node names are returned in a table mapping each node name to a `boolean` indicating whether or
|
||||
--- not the node is named (i.e., not anonymous). Anonymous nodes are surrounded with double quotes
|
||||
--- (`"`).
|
||||
---
|
||||
--- For ABI 15 parsers, also show parser metadata (major, minor, patch version) and a table of
|
||||
--- supertypes with their respective subtypes.
|
||||
---
|
||||
---@param lang string Language
|
||||
---@return TSLangInfo
|
||||
function M.inspect(lang)
|
||||
|
||||
Reference in New Issue
Block a user