mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	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:
		| @@ -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 | ||||||
|  |  | ||||||
|   | |||||||
| @@ -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 | ||||||
|   | |||||||
| @@ -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 | ||||||
|   | |||||||
| @@ -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 | ||||||
|   | |||||||
| @@ -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', ...) | ||||||
|   | |||||||
| @@ -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 | ||||||
|   | |||||||
| @@ -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 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Lewis Russell
					Lewis Russell