From b796abcc33e43a012983cc82f01e3bedd9f3c365 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 29 Nov 2022 19:58:23 +0100 Subject: [PATCH] feat: lazy handler implies opt=true --- README.md | 2 +- lua/lazy/core/plugin.lua | 11 +++++++++-- tests/core/plugin_spec.lua | 9 +++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 72e3930..81b0f37 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ - [x] rename requires to dependencies - [x] move tasks etc to Plugin.state - [ ] allow setting up plugins through config -- [ ] handlers imply opt +- [x] handlers imply opt - [x] dependencies imply opt for deps - [x] fix local plugin spec - [ ] investigate all opt=true. Simplifies logic (easily switch between opt/start afterwards) diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index a05603d..fe5fd13 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -2,6 +2,7 @@ local Config = require("lazy.core.config") local Util = require("lazy.core.util") local Module = require("lazy.core.module") local Cache = require("lazy.core.cache") +local Handler = require("lazy.core.handler") local M = {} @@ -163,7 +164,6 @@ end function M.merge(old, new) local is_dep = old.dep and new.dep - local Handler = require("lazy.core.handler") ---@diagnostic disable-next-line: no-unknown for k, v in pairs(new) do if k == "dep" then @@ -205,7 +205,14 @@ function M.update_state(opts) plugin._ = plugin._ or {} plugin[1] = plugin["1"] or plugin[1] if plugin.opt == nil then - plugin.opt = plugin.dep or Config.options.opt + local has_handler = false + for handler, _ in pairs(Handler.handlers) do + if plugin[handler] then + has_handler = true + break + end + end + plugin.opt = plugin.dep or has_handler or Config.options.opt end local opt = plugin.opt and "opt" or "start" plugin.dir = Config.options.packpath .. "/" .. opt .. "/" .. plugin.name diff --git a/tests/core/plugin_spec.lua b/tests/core/plugin_spec.lua index 4792860..9f99e87 100644 --- a/tests/core/plugin_spec.lua +++ b/tests/core/plugin_spec.lua @@ -63,6 +63,15 @@ describe("plugin spec opt", function() assert(spec.plugins.dep1.opt == false) end) + it("handles opt from dep", function() + Config.options.opt = false + local spec = Plugin.Spec.new({ "foo/bar", module = "foo" }) + Plugin.update_state({ plugins = spec.plugins }) + assert.same(1, vim.tbl_count(spec.plugins)) + assert(spec.plugins.bar.dep ~= true) + assert(spec.plugins.bar.opt == true) + end) + it("merges lazy loaders", function() local tests = { { { "foo/bar", module = "mod1" }, { "foo/bar", module = "mod2" } },