diff --git a/lua/lazy/core/handler/init.lua b/lua/lazy/core/handler/init.lua index 5e9074b..4938cb3 100644 --- a/lua/lazy/core/handler/init.lua +++ b/lua/lazy/core/handler/init.lua @@ -42,9 +42,20 @@ end ---@param plugin LazyPlugin function M.enable(plugin) if not plugin._.loaded then - for type, handler in pairs(M.handlers) do - if plugin[type] then - handler:add(plugin) + local cond = type(plugin.cond) == "function" and plugin.cond + or function() + if plugin.cond == nil then + return true + end + return plugin.cond + end + + plugin._.cond = cond() + if plugin._.cond then + for type, handler in pairs(M.handlers) do + if plugin[type] then + handler:add(plugin) + end end end end diff --git a/lua/lazy/manage/init.lua b/lua/lazy/manage/init.lua index 9ffda73..e28c5cb 100644 --- a/lua/lazy/manage/init.lua +++ b/lua/lazy/manage/init.lua @@ -131,7 +131,7 @@ function M.check(opts) { "git.log", check = true }, }, plugins = function(plugin) - return plugin.url and plugin._.installed + return plugin.url and plugin._.installed and plugin._.cond end, }, opts) end diff --git a/lua/lazy/view/render.lua b/lua/lazy/view/render.lua index e4f4529..39980c8 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -397,7 +397,7 @@ function M:plugin(plugin) local plugin_start = self:row() if plugin._.loaded then self:reason(plugin._.loaded) - else + elseif plugin._.cond then self:append(" ") local reason = {} for handler in pairs(Handler.types) do diff --git a/lua/lazy/view/sections.lua b/lua/lazy/view/sections.lua index 8325332..01b3a24 100644 --- a/lua/lazy/view/sections.lua +++ b/lua/lazy/view/sections.lua @@ -13,7 +13,7 @@ end ---@alias LazySection {title:string, filter:fun(plugin:LazyPlugin):boolean?} ---@type LazySection[] -return { +local sections = { { filter = function(plugin) return has_task(plugin, function(task) @@ -47,21 +47,18 @@ return { title = "Breaking Changes", }, { - ---@param plugin LazyPlugin filter = function(plugin) return plugin._.updated and plugin._.updated.from ~= plugin._.updated.to end, title = "Updated", }, { - ---@param plugin LazyPlugin filter = function(plugin) return plugin._.cloned end, title = "Installed", }, { - ---@param plugin LazyPlugin filter = function(plugin) return plugin._.updates end, @@ -95,14 +92,15 @@ return { }, { filter = function(plugin) - return plugin._.installed + return plugin._.installed and plugin._.cond end, title = "Not Loaded", }, { filter = function(plugin) - return plugin._.kind == "disabled" + return plugin._.kind == "disabled" or not plugin._.cond end, title = "Disabled", }, } +return sections