mirror of
https://github.com/neovim/neovim
synced 2025-07-16 09:11:51 +00:00
refactor(treesitter): use byte ranges from treesitter (#22589)
This commit is contained in:
@ -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
|
||||
@ -97,16 +94,28 @@ function M.intercepts(r1, r2)
|
||||
return true
|
||||
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 r Range6
|
||||
---@return integer, integer, integer, integer, integer, integer
|
||||
function M.unpack6(r)
|
||||
return r[1], r[2], r[3], r[4], r[5], r[6]
|
||||
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 +132,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
|
||||
|
Reference in New Issue
Block a user