2024-08-17 13:41:34 -04:00
|
|
|
---@class avante.Range
|
|
|
|
---@field start avante.RangeSelection start point
|
|
|
|
---@field finish avante.RangeSelection Selection end point
|
2024-08-17 22:29:05 +08:00
|
|
|
local Range = {}
|
|
|
|
Range.__index = Range
|
2024-08-17 13:41:34 -04:00
|
|
|
|
|
|
|
---@class avante.RangeSelection: table<string, integer>
|
2024-11-23 21:49:33 +08:00
|
|
|
---@field lnum number
|
2024-08-17 13:41:34 -04:00
|
|
|
---@field col number
|
|
|
|
|
|
|
|
---Create a selection range
|
|
|
|
---@param start avante.RangeSelection Selection start point
|
|
|
|
---@param finish avante.RangeSelection Selection end point
|
2024-11-23 20:23:05 +08:00
|
|
|
function Range:new(start, finish)
|
|
|
|
local instance = setmetatable({}, Range)
|
|
|
|
instance.start = start
|
|
|
|
instance.finish = finish
|
|
|
|
return instance
|
2024-08-17 22:29:05 +08:00
|
|
|
end
|
|
|
|
|
2024-11-23 21:49:33 +08:00
|
|
|
---Check if the line and column are within the range
|
|
|
|
---@param lnum number Line number
|
|
|
|
---@param col number Column number
|
|
|
|
---@return boolean
|
|
|
|
function Range:contains(lnum, col)
|
|
|
|
local start = self.start
|
|
|
|
local finish = self.finish
|
|
|
|
if lnum < start.lnum or lnum > finish.lnum then return false end
|
|
|
|
if lnum == start.lnum and col < start.col then return false end
|
|
|
|
if lnum == finish.lnum and col > finish.col then return false end
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
|
2024-08-17 22:29:05 +08:00
|
|
|
return Range
|