From 7667a73dee381c5fb7d538f6152aeb591e3f0372 Mon Sep 17 00:00:00 2001 From: Anshuman Medhi Date: Sun, 26 May 2024 16:40:08 +0800 Subject: [PATCH] feat: single-plugin keys in the lazy view in visual mode (#1476) Applies to all plugins contained in the range --- lua/lazy/view/float.lua | 5 +++-- lua/lazy/view/init.lua | 18 ++++++++++++++---- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/lua/lazy/view/float.lua b/lua/lazy/view/float.lua index 07861937..d57b384f 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 8674b8f5..2965bf31 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 + if #plugins > 0 then + Commands.cmd(name, { plugins = plugins }) end - end, m.desc_plugin) + end, m.desc_plugin, { "n", "x" }) end end end