summaryrefslogtreecommitdiff
path: root/lua/99/geo.lua
diff options
context:
space:
mode:
authorThePrimeAgain <theprimeagain@theprimeagain.com>2025-12-06 11:12:20 -0700
committerThePrimeAgain <theprimeagain@theprimeagain.com>2025-12-06 11:12:20 -0700
commit045ac5e104765415337d691ec923afa1cbd032c8 (patch)
tree3697940fcb62c920daecad66b7bc3ce30b6e444c /lua/99/geo.lua
parent3ae40439f36baeb96979a77cb5faf0dd6890bf31 (diff)
downloada4-045ac5e104765415337d691ec923afa1cbd032c8.tar.xz
a4-045ac5e104765415337d691ec923afa1cbd032c8.zip
virtual text is running! no testings yet
Diffstat (limited to 'lua/99/geo.lua')
-rw-r--r--lua/99/geo.lua46
1 files changed, 26 insertions, 20 deletions
diff --git a/lua/99/geo.lua b/lua/99/geo.lua
index d5a804c..88b2545 100644
--- a/lua/99/geo.lua
+++ b/lua/99/geo.lua
@@ -1,6 +1,6 @@
local project_row = 100000000
---- @param point_or_row Point | number
+--- @param point_or_row _99.Point | number
--- @param col number | nil
--- @return number
local function project(point_or_row, col)
@@ -11,7 +11,7 @@ local function project(point_or_row, col)
end
--- stores all values as 1 based
---- @class Point
+--- @class _99.Point
--- @field row number
--- @field col number
local Point = {}
@@ -49,7 +49,7 @@ end
--- 1 based point
--- @param row number
--- @param col number
---- @return Point
+--- @return _99.Point
function Point:new(row, col)
assert(type(row) == "number", "expected row to be a number")
assert(type(col) == "number", "expected col to be a number")
@@ -65,6 +65,7 @@ function Point:from_cursor()
col = 0,
}, self)
+ --- NOTE: win_get_cursor 1, 0 based return
local cursor = vim.api.nvim_win_get_cursor(0)
local cursor_row, cursor_col = cursor[1], cursor[2]
point.row = cursor_row
@@ -75,13 +76,18 @@ end
--- @param ns_id string
---@param buffer number
---@param mark_id string
-function Point:from_extmark(ns_id, buffer, mark_id)
+function Point.from_extmark(ns_id, buffer, mark_id)
+ --- NOTE: get_extmark_by_id returns 0 based
local row, col = vim.api.nvim_buf_get_extmark_by_id(buffer, ns_id, mark_id)
+ return setmetatable({
+ row = row + 1,
+ col = col + 1,
+ }, Point)
end
--- @param row number
---@param col number
---- @return Point
+--- @return _99.Point
function Point:from_ts_point(row, col)
return setmetatable({
row = row + 1,
@@ -90,7 +96,7 @@ function Point:from_ts_point(row, col)
end
--- stores all 2 points
---- @param range Range
+--- @param range _99.Range
--- @return boolean
function Point:in_ts_range(range)
return range:contains(self)
@@ -123,46 +129,46 @@ function Point:to_ts()
return self.row - 1, self.col - 1
end
---- @param point Point
+--- @param point _99.Point
--- @return boolean
function Point:gt(point)
return project(self) > project(point)
end
---- @param point Point
+--- @param point _99.Point
--- @return boolean
function Point:lt(point)
return project(self) < project(point)
end
---- @param point Point
+--- @param point _99.Point
--- @return boolean
function Point:lte(point)
return project(self) <= project(point)
end
---- @param point Point
+--- @param point _99.Point
--- @return boolean
function Point:gte(point)
return project(self) >= project(point)
end
---- @param point Point
+--- @param point _99.Point
--- @return boolean
function Point:eq(point)
return project(self) == project(point)
end
---- @class Range
---- @field start Point
---- @field end_ Point
+--- @class _99.Range
+--- @field start _99.Point
+--- @field end_ _99.Point
--- @field buffer number
local Range = {}
Range.__index = Range
---@param buffer number
---- @param start Point
----@param end_ Point
+--- @param start _99.Point
+---@param end_ _99.Point
function Range:new(buffer, start, end_)
return setmetatable({
start = start,
@@ -171,9 +177,9 @@ function Range:new(buffer, start, end_)
}, self)
end
----@param node TSNode
+---@param node _99.treesitter.TSNode
---@param buffer number
----@return Range
+---@return _99.Range
function Range:from_ts_node(node, buffer)
-- ts is zero based
local start_row, start_col, _ = node:start()
@@ -187,7 +193,7 @@ function Range:from_ts_node(node, buffer)
return setmetatable(range, self)
end
---- @param point Point
+--- @param point _99.Point
--- @return boolean
function Range:contains(point)
local start = project(self.start)
@@ -212,7 +218,7 @@ function Range:to_text()
return table.concat(text, "\n")
end
---- @param range Range
+--- @param range _99.Range
--- @return boolean
function Range:contains_range(range)
return self.start:lte(range.start) and self.end_:gte(range.end_)