fix(loader): source rtp `/plugin` files after loading start plugins. Fixes

This commit is contained in:
Folke Lemaitre 2022-12-21 14:34:31 +01:00
parent b802729bf6
commit ff24f493ee
No known key found for this signature in database
GPG Key ID: 41F8B1FBACAE2040
2 changed files with 19 additions and 16 deletions

View File

@ -463,11 +463,10 @@ startup sequence for more flexibility and better performance.
In practice this means that step 10 of [Neovim Initialization](https://neovim.io/doc/user/starting.html#initialization) is done by Lazy: In practice this means that step 10 of [Neovim Initialization](https://neovim.io/doc/user/starting.html#initialization) is done by Lazy:
1. all files from `/plugin` and `/ftdetect` directories in you rtp are sourced (excluding `/after`) 1. all plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet)
2. all plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) 2. all files from `/plugin` and `/ftdetect` directories in you rtp are sourced (excluding `/after`)
3. all plugins' `/after/plugin` files are sourced 3. all `/after/plugin` files are sourced (this inludes `/after` from plugins)
4. all `/after/plugin` files from the original rtp are sourced 4. all the plugins' `init()` functions are executed
5. all the plugins' `init()` functions are executed
Files from runtime directories are always sourced in alphabetical order. Files from runtime directories are always sourced in alphabetical order.

View File

@ -46,18 +46,13 @@ end
function M.startup() function M.startup()
Util.track({ start = "startup" }) Util.track({ start = "startup" })
-- load filetype.lua first since plugins might depend on that
M.source(vim.env.VIMRUNTIME .. "/filetype.lua") M.source(vim.env.VIMRUNTIME .. "/filetype.lua")
-- load plugins from rtp, excluding after -- backup original rtp
Util.track({ start = "rtp plugins" }) local rtp = vim.opt.rtp:get()
for _, path in ipairs(vim.opt.rtp:get()) do
if not path:find("after/?$") then
M.packadd(path)
end
end
Util.track()
-- load start plugin -- 1. load start plugin
Util.track({ start = "start" }) Util.track({ start = "start" })
for _, plugin in pairs(Config.plugins) do for _, plugin in pairs(Config.plugins) do
if plugin.lazy == false then if plugin.lazy == false then
@ -66,7 +61,16 @@ function M.startup()
end end
Util.track() Util.track()
-- load after plugins -- 2. load plugins from rtp, excluding after
Util.track({ start = "rtp plugins" })
for _, path in ipairs(rtp) do
if not path:find("after/?$") then
M.packadd(path)
end
end
Util.track()
-- 3. load after plugins
Util.track({ start = "after" }) Util.track({ start = "after" })
for _, path in ipairs(vim.opt.rtp:get()) do for _, path in ipairs(vim.opt.rtp:get()) do
if path:find("after/?$") then if path:find("after/?$") then
@ -77,7 +81,7 @@ function M.startup()
M.init_done = true M.init_done = true
-- run plugin init -- 4. run plugin init
Util.track({ start = "init" }) Util.track({ start = "init" })
for _, plugin in pairs(Config.plugins) do for _, plugin in pairs(Config.plugins) do
if plugin.init then if plugin.init then