Skip to content

Commit

Permalink
feat: lazy handler implies opt=true
Browse files Browse the repository at this point in the history
  • Loading branch information
folke committed Nov 29, 2022
1 parent 54526e0 commit b796abc
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 3 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
11 changes: 9 additions & 2 deletions lua/lazy/core/plugin.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {}

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
9 changes: 9 additions & 0 deletions tests/core/plugin_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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" } },
Expand Down

0 comments on commit b796abc

Please sign in to comment.