From 39b436941a2a4c6a9eac23a4cdb99d470e564c19 Mon Sep 17 00:00:00 2001 From: Andreas Hartmann Date: Thu, 28 Dec 2023 12:57:16 +0100 Subject: [PATCH] feat(render): merge keybindings in lazy overview when a common prefix exists. --- lua/lazy/view/render.lua | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/lua/lazy/view/render.lua b/lua/lazy/view/render.lua index e1eec6c..c4fd72a 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -621,10 +621,25 @@ function M:handlers(plugin, types) types = type(types) == "string" and { types } or types types = types and types or vim.tbl_keys(Handler.types) for _, t in ipairs(types) do - for id, value in pairs(plugin._.handlers[t] or {}) do - value = t == "keys" and Keys.to_string(value) or id - self:reason({ [t] = value }) - self:append(" ") + items = plugin._.handlers[t] or {} + if t == "keys" then + local last_key_val = nil + for id, value in vim.spairs(items) do + value = Keys.to_string(value) or id + local value_pat = vim.pesc(value) + if last_key_val and string.find(value_pat, "^" .. last_key_val) then + -- matches previous, shorter prefix - pass + else + self:reason({ [t] = value }) + self:append(" ") + last_key_val = value_pat + end + end + else + for _, value in pairs(items) do + self:reason({ [t] = value }) + self:append(" ") + end end end end