feat(picker.list): list:view is sets the cursor with an optional topline

This commit is contained in:
Folke Lemaitre 2025-01-14 11:53:37 +01:00
parent ae44066826
commit 859ab6d63e
No known key found for this signature in database
GPG key ID: 41F8B1FBACAE2040
2 changed files with 13 additions and 6 deletions

View file

@ -98,6 +98,7 @@ function M.loclist(picker)
local sel = picker:selected()
local items = #sel > 0 and sel or picker.finder.items
setqflist(items, { win = picker.parent_win })
setqflist(items, { win = picker.main })
end
function M.copy(_, item)
@ -284,20 +285,17 @@ end
function M.list_scroll_top(picker)
local cursor = picker.list.cursor
picker.list:scroll(picker.list.cursor, true)
picker.list:move(cursor, true)
picker.list:view(cursor, cursor)
end
function M.list_scroll_bottom(picker)
local cursor = picker.list.cursor
picker.list:scroll(picker.list.cursor - picker.list:height() + 1, true)
picker.list:move(cursor, true)
picker.list:view(cursor, picker.list.cursor - picker.list:height() + 1)
end
function M.list_scroll_center(picker)
local cursor = picker.list.cursor
picker.list:scroll(picker.list.cursor - math.ceil(picker.list:height() / 2) + 1, true)
picker.list:move(cursor, true)
picker.list:view(cursor, picker.list.cursor - math.ceil(picker.list:height() / 2) + 1)
end
function M.list_scroll_down(picker)

View file

@ -89,6 +89,15 @@ function M.new(picker)
return self
end
---@param cursor number
---@param topline? number
function M:view(cursor, topline)
if topline then
self:scroll(topline, true, false)
end
self:move(cursor, true)
end
---@param idx number
function M:idx2row(idx)
local ret = idx - self.top + 1