feat(plugin): added Plugin.priority for start plugins

This commit is contained in:
Folke Lemaitre 2022-12-27 17:24:40 +01:00
parent eec0485d45
commit edf8310288
No known key found for this signature in database
GPG key ID: 41F8B1FBACAE2040
4 changed files with 50 additions and 7 deletions

View file

@ -4,6 +4,8 @@ local Handler = require("lazy.core.handler")
local M = {}
local DEFAULT_PRIORITY = 50
---@type LazyPlugin[]
M.loading = {}
M.init_done = false
@ -73,8 +75,9 @@ function M.startup()
-- 2. load start plugin
Util.track({ start = "start" })
for _, plugin in pairs(Config.plugins) do
if plugin.lazy == false and not plugin._.loaded then
for _, plugin in ipairs(M.get_start_plugins()) do
-- plugin may be loaded by another plugin in the meantime
if not plugin._.loaded then
M.load(plugin, { start = "start" })
end
end
@ -103,6 +106,22 @@ function M.startup()
Util.track()
end
function M.get_start_plugins()
---@type LazyPlugin[]
local start = {}
for _, plugin in pairs(Config.plugins) do
if plugin.lazy == false and not plugin._.loaded then
start[#start + 1] = plugin
end
end
table.sort(start, function(a, b)
local ap = a.priority or DEFAULT_PRIORITY
local bp = b.priority or DEFAULT_PRIORITY
return ap > bp
end)
return start
end
---@class Loader
---@param plugins string|LazyPlugin|string[]|LazyPlugin[]
---@param reason {[string]:string}

View file

@ -1,6 +1,14 @@
return {
-- the colorscheme should be available when starting Neovim
"folke/tokyonight.nvim",
{
"folke/tokyonight.nvim",
lazy = false, -- make sure we load this during startup if it is your main colorscheme
priority = 1000, -- make sure to load this before all the other start plugins
config = function()
-- load the colorscheme here
vim.cmd([[colorscheme tokyonight]])
end,
},
-- I have a separate config.mappings file where I require which-key.
-- With lazy the plugin will be automatically loaded when it is required somewhere

View file

@ -41,6 +41,7 @@
---@field enabled? boolean|(fun():boolean)
---@field cond? boolean|(fun():boolean)
---@field lazy? boolean
---@field priority? number Only useful for lazy=false plugins to force loading certain plugins first. Default priority is 50
---@field dev? boolean If set, then link to the respective folder under your ~/projects
---@class LazyPlugin: LazyPluginBase,LazyPluginHandlers,LazyPluginHooks,LazyPluginRef