From f4d3a35171bde1380154afcf61d34d5a42552cb6 Mon Sep 17 00:00:00 2001 From: Oscar Wallberg Date: Fri, 17 Apr 2026 00:14:55 +0200 Subject: [PATCH] refactor(completion): clean up popup scroll API --- lua/lsp/completion/init.lua | 10 +++++----- lua/lsp/completion/popup.lua | 16 +++++----------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/lua/lsp/completion/init.lua b/lua/lsp/completion/init.lua index 3d8a6bd..3f0d54e 100644 --- a/lua/lsp/completion/init.lua +++ b/lua/lsp/completion/init.lua @@ -174,20 +174,20 @@ function M.setup() end, { expr = true, replace_keycodes = true }) end scroll_map("", function() - popup:scroll_half(vim.keycode("")) + popup:scroll("down", Popup.HALF_PAGE) end) scroll_map("", function() - popup:scroll_half(vim.keycode("")) + popup:scroll("up", Popup.HALF_PAGE) end) scroll_map("", function() - popup:scroll_line(vim.keycode("")) + popup:scroll("down", 1) end) scroll_map("", function() - popup:scroll_line(vim.keycode("")) + popup:scroll("up", 1) end) vim.keymap.set("i", "", function() - if vim.fn.pumvisible() ~= 0 then + if popup:is_visible() then return "" end return "" diff --git a/lua/lsp/completion/popup.lua b/lua/lsp/completion/popup.lua index 227e312..686deae 100644 --- a/lua/lsp/completion/popup.lua +++ b/lua/lsp/completion/popup.lua @@ -135,15 +135,7 @@ function Popup:dispatch_resolve(client, item, ft, pum, word, buf) end end ----@param direction string single-line scroll keycode ( or ) -function Popup:scroll_line(direction) - self:scroll(direction, 1) -end - ----@param direction string -function Popup:scroll_half(direction) - self:scroll(direction, HALF_HEIGHT) -end +Popup.HALF_PAGE = HALF_HEIGHT ---@param content string ---@param pum ow.lsp.completion.Pum @@ -209,14 +201,16 @@ function Popup:render(content, pum, width) self:update_indicators() end ----@param direction string +---@param direction "up" | "down" ---@param count integer function Popup:scroll(direction, count) if not self:is_visible() then return end + local key = direction == "down" and vim.keycode("") + or vim.keycode("") 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) self:update_indicators() end