aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/treesitter/_meta.lua
diff options
context:
space:
mode:
authorLewis Russell <lewis6991@gmail.com>2023-08-10 14:21:56 +0100
committerLewis Russell <me@lewisr.dev>2023-08-12 16:11:36 +0100
commit2ca076e45fb3f1c08f6a1a374834df0701b8d778 (patch)
tree3338df585168c4e6455137757519ca0bcd211c8c /runtime/lua/vim/treesitter/_meta.lua
parent5a25dcc5a4c73f50902432e32335ab073950cceb (diff)
downloadrneovim-2ca076e45fb3f1c08f6a1a374834df0701b8d778.tar.gz
rneovim-2ca076e45fb3f1c08f6a1a374834df0701b8d778.tar.bz2
rneovim-2ca076e45fb3f1c08f6a1a374834df0701b8d778.zip
feat(treesitter)!: incremental injection parsing
Problem: Treesitter highlighting is slow for large files with lots of injections. Solution: Only parse injections we are going to render during a redraw cycle. --- - `LanguageTree:parse()` will no longer parse injections by default and now requires an explicit range argument to be passed. - `TSHighlighter` now parses injections incrementally during on_win callbacks for the line range being rendered. - Plugins which require certain injections to be parsed must run `parser:parse({ start_row, end_row })` before using the tree.
Diffstat (limited to 'runtime/lua/vim/treesitter/_meta.lua')
-rw-r--r--runtime/lua/vim/treesitter/_meta.lua7
1 files changed, 4 insertions, 3 deletions
diff --git a/runtime/lua/vim/treesitter/_meta.lua b/runtime/lua/vim/treesitter/_meta.lua
index 36b1a9bbf8..d8babc9402 100644
--- a/runtime/lua/vim/treesitter/_meta.lua
+++ b/runtime/lua/vim/treesitter/_meta.lua
@@ -1,6 +1,6 @@
---@meta
----@class TSNode
+---@class TSNode: userdata
---@field id fun(self: TSNode): integer
---@field tree fun(self: TSNode): TSTree
---@field range fun(self: TSNode, include_bytes: false?): integer, integer, integer, integer
@@ -51,7 +51,7 @@ function TSNode:_rawquery(query, captures, start, end_, opts) end
---@field parse fun(self: TSParser, tree: TSTree?, source: integer|string, include_bytes: boolean?): TSTree, integer[]
---@field reset fun(self: TSParser)
---@field included_ranges fun(self: TSParser, include_bytes: boolean?): integer[]
----@field set_included_ranges fun(self: TSParser, ranges: Range6[])
+---@field set_included_ranges fun(self: TSParser, ranges: (Range6|TSNode)[])
---@field set_timeout fun(self: TSParser, timeout: integer)
---@field timeout fun(self: TSParser): integer
---@field _set_logger fun(self: TSParser, lex: boolean, parse: boolean, cb: TSLoggerCallback)
@@ -61,7 +61,8 @@ function TSNode:_rawquery(query, captures, start, end_, opts) end
---@field root fun(self: TSTree): TSNode
---@field edit fun(self: TSTree, _: integer, _: integer, _: integer, _: integer, _: integer, _: integer, _: integer, _: integer, _:integer)
---@field copy fun(self: TSTree): TSTree
----@field included_ranges fun(self: TSTree, include_bytes: boolean?): integer[]
+---@field included_ranges fun(self: TSTree, include_bytes: true): Range6[]
+---@field included_ranges fun(self: TSTree, include_bytes: false): Range4[]
---@return integer
vim._ts_get_language_version = function() end