diff options
author | Lewis Russell <lewis6991@gmail.com> | 2023-02-23 15:19:52 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-23 15:19:52 +0000 |
commit | 75e53341f37eeeda7d9be7f934249f7e5e4397e9 (patch) | |
tree | b0b88f28c0ed701a9b2f13dbfe988061d48fa937 /scripts/lua2dox.lua | |
parent | 86807157438240757199f925f538d7ad02322754 (diff) | |
download | rneovim-75e53341f37eeeda7d9be7f934249f7e5e4397e9.tar.gz rneovim-75e53341f37eeeda7d9be7f934249f7e5e4397e9.tar.bz2 rneovim-75e53341f37eeeda7d9be7f934249f7e5e4397e9.zip |
perf(treesitter): smarter languagetree invalidation
Problem:
Treesitter injections are slow because all injected trees are invalidated on every change.
Solution:
Implement smarter invalidation to avoid reparsing injected regions.
- In on_bytes, try and update self._regions as best we can. This PR just offsets any regions after the change.
- Add valid flags for each region in self._regions.
- Call on_bytes recursively for all children.
- We still need to run the query every time for the top level tree. I don't know how to avoid this. However, if the new injection ranges don't change, then we re-use the old trees and avoid reparsing children.
This should result in roughly a 2-3x reduction in tree parsing when the comment injections are enabled.
Diffstat (limited to 'scripts/lua2dox.lua')
-rw-r--r-- | scripts/lua2dox.lua | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/scripts/lua2dox.lua b/scripts/lua2dox.lua index fc0e915307..17de0ea9b4 100644 --- a/scripts/lua2dox.lua +++ b/scripts/lua2dox.lua @@ -291,7 +291,7 @@ local types = { 'integer', 'number', 'string', 'table', 'list', 'boolean', 'func local tagged_types = { 'TSNode', 'LanguageTree' } -- Document these as 'table' -local alias_types = { 'Range' } +local alias_types = { 'Range4', 'Range6' } --! \brief run the filter function TLua2DoX_filter.readfile(this, AppStamp, Filename) |