refactor(completion): clean up popup scroll API
This commit is contained in:
@@ -174,20 +174,20 @@ function M.setup()
|
|||||||
end, { expr = true, replace_keycodes = true })
|
end, { expr = true, replace_keycodes = true })
|
||||||
end
|
end
|
||||||
scroll_map("<C-d>", function()
|
scroll_map("<C-d>", function()
|
||||||
popup:scroll_half(vim.keycode("<C-e>"))
|
popup:scroll("down", Popup.HALF_PAGE)
|
||||||
end)
|
end)
|
||||||
scroll_map("<C-u>", function()
|
scroll_map("<C-u>", function()
|
||||||
popup:scroll_half(vim.keycode("<C-y>"))
|
popup:scroll("up", Popup.HALF_PAGE)
|
||||||
end)
|
end)
|
||||||
scroll_map("<C-j>", function()
|
scroll_map("<C-j>", function()
|
||||||
popup:scroll_line(vim.keycode("<C-e>"))
|
popup:scroll("down", 1)
|
||||||
end)
|
end)
|
||||||
scroll_map("<C-k>", function()
|
scroll_map("<C-k>", function()
|
||||||
popup:scroll_line(vim.keycode("<C-y>"))
|
popup:scroll("up", 1)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
vim.keymap.set("i", "<CR>", function()
|
vim.keymap.set("i", "<CR>", function()
|
||||||
if vim.fn.pumvisible() ~= 0 then
|
if popup:is_visible() then
|
||||||
return "<C-y>"
|
return "<C-y>"
|
||||||
end
|
end
|
||||||
return "<CR>"
|
return "<CR>"
|
||||||
|
|||||||
@@ -135,15 +135,7 @@ function Popup:dispatch_resolve(client, item, ft, pum, word, buf)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
---@param direction string single-line scroll keycode (<C-e> or <C-y>)
|
Popup.HALF_PAGE = HALF_HEIGHT
|
||||||
function Popup:scroll_line(direction)
|
|
||||||
self:scroll(direction, 1)
|
|
||||||
end
|
|
||||||
|
|
||||||
---@param direction string
|
|
||||||
function Popup:scroll_half(direction)
|
|
||||||
self:scroll(direction, HALF_HEIGHT)
|
|
||||||
end
|
|
||||||
|
|
||||||
---@param content string
|
---@param content string
|
||||||
---@param pum ow.lsp.completion.Pum
|
---@param pum ow.lsp.completion.Pum
|
||||||
@@ -209,14 +201,16 @@ function Popup:render(content, pum, width)
|
|||||||
self:update_indicators()
|
self:update_indicators()
|
||||||
end
|
end
|
||||||
|
|
||||||
---@param direction string
|
---@param direction "up" | "down"
|
||||||
---@param count integer
|
---@param count integer
|
||||||
function Popup:scroll(direction, count)
|
function Popup:scroll(direction, count)
|
||||||
if not self:is_visible() then
|
if not self:is_visible() then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
local key = direction == "down" and vim.keycode("<C-e>")
|
||||||
|
or vim.keycode("<C-y>")
|
||||||
vim.api.nvim_win_call(self.winid, function()
|
vim.api.nvim_win_call(self.winid, function()
|
||||||
vim.cmd.normal({ args = { count .. direction }, bang = true })
|
vim.cmd.normal({ args = { count .. key }, bang = true })
|
||||||
end)
|
end)
|
||||||
self:update_indicators()
|
self:update_indicators()
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user