diff --git a/lua/u/pos.lua b/lua/u/pos.lua index 7b2b42b..e42de64 100644 --- a/lua/u/pos.lua +++ b/lua/u/pos.lua @@ -41,6 +41,18 @@ function Pos.new(bufnr, lnum, col, off) return pos end +--- @param bufnr? number +--- @param lnum0 number 1-based +--- @param col0 number 1-based +--- @param off? number +function Pos.from00(bufnr, lnum0, col0, off) return Pos.new(bufnr, lnum0 + 1, col0 + 1, off) end + +--- @param bufnr? number +--- @param lnum1 number 1-based +--- @param col0 number 1-based +--- @param off? number +function Pos.from10(bufnr, lnum1, col0, off) return Pos.new(bufnr, lnum1, col0 + 1, off) end + function Pos.invalid() return Pos.new(0, 0, 0, 0) end function Pos.__lt(a, b) return a.lnum < b.lnum or (a.lnum == b.lnum and a.col < b.col) end @@ -110,6 +122,11 @@ function Pos:eol() return Pos.from_eol(self.bufnr, self.lnum) end --- @param pos string function Pos:save_to_pos(pos) vim.fn.setpos(pos, { self.bufnr, self.lnum, self.col, self.off }) end +--- @param winnr? integer +function Pos:save_to_cursor(winnr) + vim.api.nvim_win_set_cursor(winnr or 0, { self.lnum, self.col - 1 }) +end + --- @param mark string function Pos:save_to_mark(mark) local p = self:as_real()