diff options
author | Lewis Russell <lewis6991@gmail.com> | 2023-03-08 17:22:28 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-08 17:22:28 +0000 |
commit | 276b647fdba07bf1762d8dd371c4b655b8a418df (patch) | |
tree | ecd323435123158697a1737cd6225b7f65723e00 /runtime/lua/vim/treesitter/_range.lua | |
parent | 898f902e0051de0347394cfef0af23fe1013c84b (diff) | |
download | rneovim-276b647fdba07bf1762d8dd371c4b655b8a418df.tar.gz rneovim-276b647fdba07bf1762d8dd371c4b655b8a418df.tar.bz2 rneovim-276b647fdba07bf1762d8dd371c4b655b8a418df.zip |
refactor(treesitter): delegate region calculation to treesitter (#22553)
Diffstat (limited to 'runtime/lua/vim/treesitter/_range.lua')
-rw-r--r-- | runtime/lua/vim/treesitter/_range.lua | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/runtime/lua/vim/treesitter/_range.lua b/runtime/lua/vim/treesitter/_range.lua index bec24a23a5..21e46a560a 100644 --- a/runtime/lua/vim/treesitter/_range.lua +++ b/runtime/lua/vim/treesitter/_range.lua @@ -78,11 +78,8 @@ end ---@param r2 Range4|Range6 ---@return boolean function M.intercepts(r1, r2) - local off_1 = #r1 == 6 and 1 or 0 - local off_2 = #r1 == 6 and 1 or 0 - - local srow_1, scol_1, erow_1, ecol_1 = r1[1], r1[2], r1[3 + off_1], r1[4 + off_1] - local srow_2, scol_2, erow_2, ecol_2 = r2[1], r2[2], r2[3 + off_2], r2[4 + off_2] + local srow_1, scol_1, erow_1, ecol_1 = M.unpack4(r1) + local srow_2, scol_2, erow_2, ecol_2 = M.unpack4(r2) -- r1 is above r2 if M.cmp_pos.le(erow_1, ecol_1, srow_2, scol_2) then @@ -98,15 +95,20 @@ function M.intercepts(r1, r2) end ---@private +---@param r Range4|Range6 +---@return integer, integer, integer, integer +function M.unpack4(r) + local off_1 = #r == 6 and 1 or 0 + return r[1], r[2], r[3 + off_1], r[4 + off_1] +end + +---@private ---@param r1 Range4|Range6 ---@param r2 Range4|Range6 ---@return boolean whether r1 contains r2 function M.contains(r1, r2) - local off_1 = #r1 == 6 and 1 or 0 - local off_2 = #r1 == 6 and 1 or 0 - - local srow_1, scol_1, erow_1, ecol_1 = r1[1], r1[2], r1[3 + off_1], r1[4 + off_1] - local srow_2, scol_2, erow_2, ecol_2 = r2[1], r2[2], r2[3 + off_2], r2[4 + off_2] + local srow_1, scol_1, erow_1, ecol_1 = M.unpack4(r1) + local srow_2, scol_2, erow_2, ecol_2 = M.unpack4(r2) -- start doesn't fit if M.cmp_pos.gt(srow_1, scol_1, srow_2, scol_2) then @@ -123,9 +125,13 @@ end ---@private ---@param source integer|string ----@param range Range4 +---@param range Range4|Range6 ---@return Range6 function M.add_bytes(source, range) + if type(range) == 'table' and #range == 6 then + return range --[[@as Range6]] + end + local start_row, start_col, end_row, end_col = range[1], range[2], range[3], range[4] local start_byte = 0 local end_byte = 0 |