refactor: deps provides accessors via metatables
parent
29e8841a3d
commit
a2bc77f229
|
|
@ -12,15 +12,27 @@ function M.new(values)
|
||||||
},
|
},
|
||||||
values = values,
|
values = values,
|
||||||
}, {
|
}, {
|
||||||
__index = M,
|
__index = function(self, k)
|
||||||
|
local fn = M[k]
|
||||||
|
if fn then
|
||||||
|
return fn
|
||||||
|
end
|
||||||
|
fn = M['get_' .. k]
|
||||||
|
if fn then
|
||||||
|
return fn(self)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
__newindex = function(self, k, v)
|
||||||
|
|
||||||
|
end
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
function M:name()
|
function M:get_name()
|
||||||
return self.values.name
|
return self.values.name
|
||||||
end
|
end
|
||||||
|
|
||||||
function M:dependencies()
|
function M:get_dependencies()
|
||||||
local ret = {}
|
local ret = {}
|
||||||
for _, name in ipairs(self.values.dependencies) do
|
for _, name in ipairs(self.values.dependencies) do
|
||||||
local dep = M.get(name)
|
local dep = M.get(name)
|
||||||
|
|
@ -31,35 +43,43 @@ function M:dependencies()
|
||||||
return ret
|
return ret
|
||||||
end
|
end
|
||||||
|
|
||||||
function M:cmd()
|
function M:get_dependency_names()
|
||||||
|
local ret = {}
|
||||||
|
for _, name in ipairs(self.values.dependencies) do
|
||||||
|
ret[#ret + 1] = name
|
||||||
|
end
|
||||||
|
return ret
|
||||||
|
end
|
||||||
|
|
||||||
|
function M:get_cmd()
|
||||||
return self.values.cmd
|
return self.values.cmd
|
||||||
end
|
end
|
||||||
|
|
||||||
function M:ft()
|
function M:get_ft()
|
||||||
return self.values.ft
|
return self.values.ft
|
||||||
end
|
end
|
||||||
|
|
||||||
function M:is_lazy()
|
function M:get_is_lazy()
|
||||||
return self.values.lazy or false
|
return self.values.lazy or false
|
||||||
end
|
end
|
||||||
|
|
||||||
function M:is_imported()
|
function M:get_is_imported()
|
||||||
return self.priv.import
|
return self.priv.import
|
||||||
end
|
end
|
||||||
|
|
||||||
function M:is_loaded()
|
function M:get_is_loaded()
|
||||||
-- last step is config, so a plugin is loaded if its config has run
|
-- last step is config, so a plugin is loaded if its config has run
|
||||||
return self.priv.config
|
return self.priv.config
|
||||||
end
|
end
|
||||||
|
|
||||||
function load_fn(type)
|
local function load_fn(type)
|
||||||
local function fn(self)
|
local function fn(self)
|
||||||
if self.priv[type] then
|
if self.priv[type] then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
self.priv[type] = true
|
self.priv[type] = true
|
||||||
|
|
||||||
for _, dep in ipairs(self:dependencies()) do
|
for _, dep in ipairs(self.dependencies) do
|
||||||
fn(dep)
|
fn(dep)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -74,17 +94,17 @@ M.init = load_fn('init')
|
||||||
M.config = load_fn('config')
|
M.config = load_fn('config')
|
||||||
|
|
||||||
function M:import()
|
function M:import()
|
||||||
if self:is_imported() then
|
if self.is_imported then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
self.priv.import = true
|
self.priv.import = true
|
||||||
|
|
||||||
for _, dep in ipairs(self:dependencies()) do
|
for _, dep in ipairs(self.dependencies) do
|
||||||
dep:import()
|
dep:import()
|
||||||
end
|
end
|
||||||
|
|
||||||
if self:is_lazy() then
|
if self.is_lazy then
|
||||||
vim.cmd("packadd " .. self:name())
|
vim.cmd("packadd " .. self.name)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -95,8 +115,8 @@ function M:load()
|
||||||
self:config()
|
self:config()
|
||||||
end
|
end
|
||||||
|
|
||||||
function M:augroup_name()
|
function M:get_augroup_name()
|
||||||
return "Sloth-plugin-" .. self:name()
|
return "Sloth-plugin-" .. self.name
|
||||||
end
|
end
|
||||||
|
|
||||||
function M:lazy_load_cmd(cmd)
|
function M:lazy_load_cmd(cmd)
|
||||||
|
|
@ -122,23 +142,23 @@ function M:shim()
|
||||||
end
|
end
|
||||||
self.priv.shim = true
|
self.priv.shim = true
|
||||||
|
|
||||||
if self:cmd() then
|
if self.cmd then
|
||||||
for _, cmd in ipairs(self:cmd()) do
|
for _, cmd in ipairs(self.cmd) do
|
||||||
vim.api.nvim_create_user_command(cmd, self:lazy_load_cmd(cmd), {
|
vim.api.nvim_create_user_command(cmd, self:lazy_load_cmd(cmd), {
|
||||||
desc = "Sloth-flake placeholder for plugin " .. self:name(),
|
desc = "Sloth-flake placeholder for plugin " .. self.name,
|
||||||
nargs = '*',
|
nargs = '*',
|
||||||
bang = true,
|
bang = true,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if self:ft() then
|
if self.ft then
|
||||||
local group_id = vim.api.nvim_create_augroup(self:augroup_name(), {
|
local group_id = vim.api.nvim_create_augroup(self.augroup_name, {
|
||||||
clear = true,
|
clear = true,
|
||||||
})
|
})
|
||||||
vim.api.nvim_create_autocmd('FileType', {
|
vim.api.nvim_create_autocmd('FileType', {
|
||||||
group = group_id,
|
group = group_id,
|
||||||
pattern = self:ft(),
|
pattern = self.ft,
|
||||||
callback = self:lazy_load_ft()
|
callback = self:lazy_load_ft()
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
@ -150,14 +170,14 @@ function M:unshim()
|
||||||
end
|
end
|
||||||
self.priv.shim = nil
|
self.priv.shim = nil
|
||||||
|
|
||||||
if self:cmd() then
|
if self.cmd then
|
||||||
for _, cmd in ipairs(self:cmd()) do
|
for _, cmd in ipairs(self.cmd) do
|
||||||
vim.api.nvim_del_user_command(cmd)
|
vim.api.nvim_del_user_command(cmd)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if self:ft() then
|
if self.ft then
|
||||||
vim.api.nvim_del_augroup_by_name(self:augroup_name())
|
vim.api.nvim_del_augroup_by_name(self.augroup_name)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,13 +42,13 @@ end
|
||||||
|
|
||||||
function M.non_lazy_deps()
|
function M.non_lazy_deps()
|
||||||
return M.deps_iter_by(function(dep)
|
return M.deps_iter_by(function(dep)
|
||||||
return not dep:is_lazy()
|
return not dep.is_lazy
|
||||||
end):totable()
|
end):totable()
|
||||||
end
|
end
|
||||||
|
|
||||||
function M.lazy_deps()
|
function M.lazy_deps()
|
||||||
return M.deps_iter_by(function(dep)
|
return M.deps_iter_by(function(dep)
|
||||||
return dep:is_lazy()
|
return dep.is_lazy
|
||||||
end):totable()
|
end):totable()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue