diff --git a/lua/lazy/view/float.lua b/lua/lazy/view/float.lua index 0786193..d57b384 100644 --- a/lua/lazy/view/float.lua +++ b/lua/lazy/view/float.lua @@ -251,8 +251,9 @@ end ---@param key string ---@param fn fun(self?) ---@param desc? string -function M:on_key(key, fn, desc) - vim.keymap.set("n", key, function() +---@param mode? string[] +function M:on_key(key, fn, desc,mode) + vim.keymap.set(mode or "n", key, function() fn(self) end, { nowait = true, diff --git a/lua/lazy/view/init.lua b/lua/lazy/view/init.lua index 8674b8f..2965bf3 100644 --- a/lua/lazy/view/init.lua +++ b/lua/lazy/view/init.lua @@ -297,11 +297,21 @@ function M:setup_modes() end if m.key_plugin and name ~= "restore" then self:on_key(m.key_plugin, function() - local plugin = self.render:get_plugin() - if plugin then - Commands.cmd(name, { plugins = { plugin } }) + vim.api.nvim_feedkeys(vim.keycode(""), "n", false) + local plugins = {} + if vim.api.nvim_get_mode().mode:lower() == "v" then + local f, t = vim.fn.line("."), vim.fn.line("v") + if f > t then f, t = t, f end + for i = f, t do + plugins[#plugins + 1] = self.render:get_plugin(i) + end + else + plugins[1] = self.render:get_plugin() end - end, m.desc_plugin) + if #plugins > 0 then + Commands.cmd(name, { plugins = plugins }) + end + end, m.desc_plugin, { "n", "x" }) end end end