fix(treesitter): annotations

- Begin using `@package` in place of `@private` for functions
that are accessed internally but outside their defined class.

- Rename Node -> TSP.Node
This commit is contained in:
Lewis Russell
2023-03-23 11:23:51 +00:00
committed by GitHub
parent c0fe6c040e
commit 4e4203f71b
7 changed files with 48 additions and 43 deletions

View File

@@ -30,8 +30,6 @@ setmetatable(M, {
end, end,
}) })
---@diagnostic disable:invisible
--- Creates a new parser --- Creates a new parser
--- ---
--- It is not recommended to use this; use |get_parser()| instead. --- It is not recommended to use this; use |get_parser()| instead.
@@ -132,7 +130,7 @@ function M.get_parser(bufnr, lang, opts)
return parsers[bufnr] return parsers[bufnr]
end end
---@private ---@package
---@param bufnr (integer|nil) Buffer number ---@param bufnr (integer|nil) Buffer number
---@return boolean ---@return boolean
function M._has_parser(bufnr) function M._has_parser(bufnr)
@@ -276,7 +274,7 @@ function M.get_captures_at_pos(bufnr, row, col)
end end
end end
end end
end, true) end)
return matches return matches
end end

View File

@@ -3,7 +3,7 @@ local Query = require('vim.treesitter.query')
local api = vim.api local api = vim.api
---@class FoldInfo ---@class TS.FoldInfo
---@field levels table<integer,string> ---@field levels table<integer,string>
---@field levels0 table<integer,integer> ---@field levels0 table<integer,integer>
---@field private start_counts table<integer,integer> ---@field private start_counts table<integer,integer>
@@ -11,6 +11,7 @@ local api = vim.api
local FoldInfo = {} local FoldInfo = {}
FoldInfo.__index = FoldInfo FoldInfo.__index = FoldInfo
---@private
function FoldInfo.new() function FoldInfo.new()
return setmetatable({ return setmetatable({
start_counts = {}, start_counts = {},
@@ -20,6 +21,7 @@ function FoldInfo.new()
}, FoldInfo) }, FoldInfo)
end end
---@package
---@param srow integer ---@param srow integer
---@param erow integer ---@param erow integer
function FoldInfo:invalidate_range(srow, erow) function FoldInfo:invalidate_range(srow, erow)
@@ -31,6 +33,7 @@ function FoldInfo:invalidate_range(srow, erow)
end end
end end
---@package
---@param srow integer ---@param srow integer
---@param erow integer ---@param erow integer
function FoldInfo:remove_range(srow, erow) function FoldInfo:remove_range(srow, erow)
@@ -42,6 +45,7 @@ function FoldInfo:remove_range(srow, erow)
end end
end end
---@package
---@param srow integer ---@param srow integer
---@param erow integer ---@param erow integer
function FoldInfo:add_range(srow, erow) function FoldInfo:add_range(srow, erow)
@@ -53,22 +57,26 @@ function FoldInfo:add_range(srow, erow)
end end
end end
---@package
---@param lnum integer ---@param lnum integer
function FoldInfo:add_start(lnum) function FoldInfo:add_start(lnum)
self.start_counts[lnum] = (self.start_counts[lnum] or 0) + 1 self.start_counts[lnum] = (self.start_counts[lnum] or 0) + 1
end end
---@package
---@param lnum integer ---@param lnum integer
function FoldInfo:add_stop(lnum) function FoldInfo:add_stop(lnum)
self.stop_counts[lnum] = (self.stop_counts[lnum] or 0) + 1 self.stop_counts[lnum] = (self.stop_counts[lnum] or 0) + 1
end end
---@packag
---@param lnum integer ---@param lnum integer
---@return integer ---@return integer
function FoldInfo:get_start(lnum) function FoldInfo:get_start(lnum)
return self.start_counts[lnum] or 0 return self.start_counts[lnum] or 0
end end
---@package
---@param lnum integer ---@param lnum integer
---@return integer ---@return integer
function FoldInfo:get_stop(lnum) function FoldInfo:get_stop(lnum)
@@ -84,7 +92,7 @@ local function trim_level(level)
end end
---@param bufnr integer ---@param bufnr integer
---@param info FoldInfo ---@param info TS.FoldInfo
---@param srow integer? ---@param srow integer?
---@param erow integer? ---@param erow integer?
local function get_folds_levels(bufnr, info, srow, erow) local function get_folds_levels(bufnr, info, srow, erow)
@@ -161,7 +169,7 @@ end
local M = {} local M = {}
---@type table<integer,FoldInfo> ---@type table<integer,TS.FoldInfo>
local foldinfos = {} local foldinfos = {}
local function recompute_folds() local function recompute_folds()
@@ -178,7 +186,7 @@ local function recompute_folds()
end end
---@param bufnr integer ---@param bufnr integer
---@param foldinfo FoldInfo ---@param foldinfo TS.FoldInfo
---@param tree_changes Range4[] ---@param tree_changes Range4[]
local function on_changedtree(bufnr, foldinfo, tree_changes) local function on_changedtree(bufnr, foldinfo, tree_changes)
-- For some reason, queries seem to use the old buffer state in on_bytes. -- For some reason, queries seem to use the old buffer state in on_bytes.
@@ -193,7 +201,7 @@ local function on_changedtree(bufnr, foldinfo, tree_changes)
end end
---@param bufnr integer ---@param bufnr integer
---@param foldinfo FoldInfo ---@param foldinfo TS.FoldInfo
---@param start_row integer ---@param start_row integer
---@param old_row integer ---@param old_row integer
---@param new_row integer ---@param new_row integer
@@ -212,13 +220,13 @@ local function on_bytes(bufnr, foldinfo, start_row, old_row, new_row)
end end
end end
---@package
---@param lnum integer|nil ---@param lnum integer|nil
---@return string ---@return string
function M.foldexpr(lnum) function M.foldexpr(lnum)
lnum = lnum or vim.v.lnum lnum = lnum or vim.v.lnum
local bufnr = api.nvim_get_current_buf() local bufnr = api.nvim_get_current_buf()
---@diagnostic disable-next-line:invisible
if not vim.treesitter._has_parser(bufnr) or not lnum then if not vim.treesitter._has_parser(bufnr) or not lnum then
return '0' return '0'
end end

View File

@@ -3,7 +3,8 @@
---@class TSNode ---@class TSNode
---@field id fun(self: TSNode): integer ---@field id fun(self: TSNode): integer
---@field tree fun(self: TSNode): TSTree ---@field tree fun(self: TSNode): TSTree
---@field range fun(self: TSNode, include_bytes: boolean?): integer, integer, integer, integer, integer, integer ---@field range fun(self: TSNode, include_bytes: false?): integer, integer, integer, integer
---@field range fun(self: TSNode, include_bytes: true): integer, integer, integer, integer, integer, integer
---@field start fun(self: TSNode): integer, integer, integer ---@field start fun(self: TSNode): integer, integer, integer
---@field end_ fun(self: TSNode): integer, integer, integer ---@field end_ fun(self: TSNode): integer, integer, integer
---@field type fun(self: TSNode): string ---@field type fun(self: TSNode): string

View File

@@ -53,12 +53,12 @@ function TSHighlighterQuery.new(lang, query_string)
return self return self
end end
---@private ---@package
function TSHighlighterQuery:query() function TSHighlighterQuery:query()
return self._query return self._query
end end
---@private ---@package
--- ---
--- Creates a highlighter for `tree`. --- Creates a highlighter for `tree`.
--- ---
@@ -76,16 +76,14 @@ function TSHighlighter.new(tree, opts)
opts = opts or {} ---@type { queries: table<string,string> } opts = opts or {} ---@type { queries: table<string,string> }
self.tree = tree self.tree = tree
tree:register_cbs({ tree:register_cbs({
---@diagnostic disable:invisible
on_changedtree = function(...) on_changedtree = function(...)
self:on_changedtree(...) self:on_changedtree(...)
end, end,
on_bytes = function(...) on_bytes = function(...)
self:on_bytes(...) self:on_bytes(...)
end, end,
on_detach = function(...) on_detach = function()
---@diagnostic disable-next-line:redundant-parameter self:on_detach()
self:on_detach(...)
end, end,
}) })
@@ -147,7 +145,7 @@ function TSHighlighter:destroy()
end end
end end
---@private ---@package
---@param tstree TSTree ---@param tstree TSTree
---@return TSHighlightState ---@return TSHighlightState
function TSHighlighter:get_highlight_state(tstree) function TSHighlighter:get_highlight_state(tstree)
@@ -166,19 +164,19 @@ function TSHighlighter:reset_highlight_state()
self._highlight_states = {} self._highlight_states = {}
end end
---@private ---@package
---@param start_row integer ---@param start_row integer
---@param new_end integer ---@param new_end integer
function TSHighlighter:on_bytes(_, _, start_row, _, _, _, _, _, new_end) function TSHighlighter:on_bytes(_, _, start_row, _, _, _, _, _, new_end)
a.nvim__buf_redraw_range(self.bufnr, start_row, start_row + new_end + 1) a.nvim__buf_redraw_range(self.bufnr, start_row, start_row + new_end + 1)
end end
---@private ---@package
function TSHighlighter:on_detach() function TSHighlighter:on_detach()
self:destroy() self:destroy()
end end
---@private ---@package
---@param changes integer[][]? ---@param changes integer[][]?
function TSHighlighter:on_changedtree(changes) function TSHighlighter:on_changedtree(changes)
for _, ch in ipairs(changes or {}) do for _, ch in ipairs(changes or {}) do
@@ -188,7 +186,7 @@ end
--- Gets the query used for @param lang --- Gets the query used for @param lang
-- --
---@private ---@package
---@param lang string Language used by the highlighter. ---@param lang string Language used by the highlighter.
---@return TSHighlighterQuery ---@return TSHighlighterQuery
function TSHighlighter:get_query(lang) function TSHighlighter:get_query(lang)
@@ -205,7 +203,6 @@ end
---@param line integer ---@param line integer
---@param is_spell_nav boolean ---@param is_spell_nav boolean
local function on_line_impl(self, buf, line, is_spell_nav) local function on_line_impl(self, buf, line, is_spell_nav)
---@diagnostic disable:invisible
self.tree:for_each_tree(function(tstree, tree) self.tree:for_each_tree(function(tstree, tree)
if not tstree then if not tstree then
return return
@@ -268,7 +265,7 @@ local function on_line_impl(self, buf, line, is_spell_nav)
state.next_row = start_row state.next_row = start_row
end end
end end
end, true) end)
end end
---@private ---@private

View File

@@ -70,7 +70,7 @@ local LanguageTree = {}
LanguageTree.__index = LanguageTree LanguageTree.__index = LanguageTree
--- @private --- @package
--- ---
--- |LanguageTree| contains a tree of parsers: the root treesitter parser for {lang} and any --- |LanguageTree| contains a tree of parsers: the root treesitter parser for {lang} and any
--- "injected" language parsers, which themselves may inject other languages, recursively. --- "injected" language parsers, which themselves may inject other languages, recursively.
@@ -700,7 +700,7 @@ function LanguageTree:_do_callback(cb_name, ...)
end end
end end
---@private ---@package
function LanguageTree:_edit( function LanguageTree:_edit(
start_byte, start_byte,
end_byte_old, end_byte_old,
@@ -776,7 +776,7 @@ function LanguageTree:_edit(
end) end)
end end
---@private ---@package
---@param bufnr integer ---@param bufnr integer
---@param changed_tick integer ---@param changed_tick integer
---@param start_row integer ---@param start_row integer
@@ -822,7 +822,6 @@ function LanguageTree:_on_bytes(
-- Edit trees together BEFORE emitting a bytes callback. -- Edit trees together BEFORE emitting a bytes callback.
---@private ---@private
self:for_each_child(function(child) self:for_each_child(function(child)
---@diagnostic disable-next-line:invisible
child:_edit( child:_edit(
start_byte, start_byte,
start_byte + old_byte, start_byte + old_byte,
@@ -852,12 +851,12 @@ function LanguageTree:_on_bytes(
) )
end end
---@private ---@package
function LanguageTree:_on_reload() function LanguageTree:_on_reload()
self:invalidate(true) self:invalidate(true)
end end
---@private ---@package
function LanguageTree:_on_detach(...) function LanguageTree:_on_detach(...)
self:invalidate(true) self:invalidate(true)
self:_do_callback('detach', ...) self:_do_callback('detach', ...)

View File

@@ -5,11 +5,11 @@ local api = vim.api
---@field opts table Options table with the following keys: ---@field opts table Options table with the following keys:
--- - anon (boolean): If true, display anonymous nodes --- - anon (boolean): If true, display anonymous nodes
--- - lang (boolean): If true, display the language alongside each node --- - lang (boolean): If true, display the language alongside each node
---@field nodes Node[] ---@field nodes TSP.Node[]
---@field named Node[] ---@field named TSP.Node[]
local TSPlayground = {} local TSPlayground = {}
---
---@class Node ---@class TSP.Node
---@field id integer Node id ---@field id integer Node id
---@field text string Node text ---@field text string Node text
---@field named boolean True if this is a named (non-anonymous) node ---@field named boolean True if this is a named (non-anonymous) node
@@ -36,9 +36,9 @@ local TSPlayground = {}
---@param node TSNode Starting node to begin traversal |tsnode| ---@param node TSNode Starting node to begin traversal |tsnode|
---@param depth integer Current recursion depth ---@param depth integer Current recursion depth
---@param lang string Language of the tree currently being traversed ---@param lang string Language of the tree currently being traversed
---@param injections table<integer,Node> Mapping of node ids to root nodes of injected language trees (see ---@param injections table<integer,TSP.Node> Mapping of node ids to root nodes of injected language trees (see
--- explanation above) --- explanation above)
---@param tree Node[] Output table containing a list of tables each representing a node in the tree ---@param tree TSP.Node[] Output table containing a list of tables each representing a node in the tree
---@private ---@private
local function traverse(node, depth, lang, injections, tree) local function traverse(node, depth, lang, injections, tree)
local injection = injections[node:id()] local injection = injections[node:id()]
@@ -87,7 +87,7 @@ end
---@return TSPlayground|nil ---@return TSPlayground|nil
---@return string|nil Error message, if any ---@return string|nil Error message, if any
--- ---
---@private ---@package
function TSPlayground:new(bufnr, lang) function TSPlayground:new(bufnr, lang)
local ok, parser = pcall(vim.treesitter.get_parser, bufnr or 0, lang) local ok, parser = pcall(vim.treesitter.get_parser, bufnr or 0, lang)
if not ok then if not ok then
@@ -114,7 +114,7 @@ function TSPlayground:new(bufnr, lang)
local nodes = traverse(root, 0, parser:lang(), injections, {}) local nodes = traverse(root, 0, parser:lang(), injections, {})
local named = {} ---@type Node[] local named = {} ---@type TSP.Node[]
for _, v in ipairs(nodes) do for _, v in ipairs(nodes) do
if v.named then if v.named then
named[#named + 1] = v named[#named + 1] = v
@@ -154,7 +154,7 @@ end
--- Write the contents of this Playground into {bufnr}. --- Write the contents of this Playground into {bufnr}.
--- ---
---@param bufnr integer Buffer number to write into. ---@param bufnr integer Buffer number to write into.
---@private ---@package
function TSPlayground:draw(bufnr) function TSPlayground:draw(bufnr)
vim.bo[bufnr].modifiable = true vim.bo[bufnr].modifiable = true
local lines = {} ---@type string[] local lines = {} ---@type string[]
@@ -195,8 +195,8 @@ end
--- The node number is dependent on whether or not anonymous nodes are displayed. --- The node number is dependent on whether or not anonymous nodes are displayed.
--- ---
---@param i integer Node number to get ---@param i integer Node number to get
---@return Node ---@return TSP.Node
---@private ---@package
function TSPlayground:get(i) function TSPlayground:get(i)
local t = self.opts.anon and self.nodes or self.named local t = self.opts.anon and self.nodes or self.named
return t[i] return t[i]
@@ -204,10 +204,10 @@ end
--- Iterate over all of the nodes in this Playground object. --- Iterate over all of the nodes in this Playground object.
--- ---
---@return (fun(): integer, Node) Iterator over all nodes in this Playground ---@return (fun(): integer, TSP.Node) Iterator over all nodes in this Playground
---@return table ---@return table
---@return integer ---@return integer
---@private ---@package
function TSPlayground:iter() function TSPlayground:iter()
return ipairs(self.opts.anon and self.nodes or self.named) return ipairs(self.opts.anon and self.nodes or self.named)
end end

View File

@@ -336,6 +336,8 @@ function TLua2DoX_filter.filter(this, AppStamp, Filename)
offset = 1 offset = 1
end end
line = line:gsub('@package', '@private')
if vim.startswith(line, '---@cast') if vim.startswith(line, '---@cast')
or vim.startswith(line, '---@diagnostic') or vim.startswith(line, '---@diagnostic')
or vim.startswith(line, '---@type') then or vim.startswith(line, '---@type') then