diff options
author | Jaehwang Jung <tomtomjhj@gmail.com> | 2023-09-16 23:43:22 +0900 |
---|---|---|
committer | Lewis Russell <me@lewisr.dev> | 2023-09-16 17:02:26 +0100 |
commit | 7e5ce42977d7b2f223ca57e0237db778b8e424ea (patch) | |
tree | 14f4c4038331d1c23a692a55ca7004dd3d4a4172 | |
parent | f40a109716d7f748dd9e9f70b57e4d0bb285518b (diff) | |
download | rneovim-7e5ce42977d7b2f223ca57e0237db778b8e424ea.tar.gz rneovim-7e5ce42977d7b2f223ca57e0237db778b8e424ea.tar.bz2 rneovim-7e5ce42977d7b2f223ca57e0237db778b8e424ea.zip |
fix(treesitter): properly combine injection.combined regions
Problem:
It doesn't make much sense to flatten each region (= list of ranges).
This coincidentally worked for region with a single range.
Solution:
Custom function for combining regions.
-rw-r--r-- | runtime/lua/vim/treesitter/languagetree.lua | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/runtime/lua/vim/treesitter/languagetree.lua b/runtime/lua/vim/treesitter/languagetree.lua index 4dd5a18396..b555ee231b 100644 --- a/runtime/lua/vim/treesitter/languagetree.lua +++ b/runtime/lua/vim/treesitter/languagetree.lua @@ -788,6 +788,19 @@ function LanguageTree:_get_injection(match, metadata) return lang, combined, ranges end +--- Can't use vim.tbl_flatten since a range is just a table. +---@param regions Range6[][] +---@return Range6[] +local function combine_regions(regions) + local result = {} ---@type Range6[] + for _, region in ipairs(regions) do + for _, range in ipairs(region) do + result[#result + 1] = range + end + end + return result +end + --- Gets language injection points by language. --- --- This is where most of the injection processing occurs. @@ -833,11 +846,7 @@ function LanguageTree:_get_injections() for _, entry in pairs(patterns) do if entry.combined then - ---@diagnostic disable-next-line:no-unknown - local regions = vim.tbl_map(function(e) - return vim.tbl_flatten(e) - end, entry.regions) - table.insert(result[lang], regions) + table.insert(result[lang], combine_regions(entry.regions)) else for _, ranges in pairs(entry.regions) do table.insert(result[lang], ranges) |