diff --git a/README.md b/README.md index 62ac8ab..1586c80 100644 --- a/README.md +++ b/README.md @@ -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: -1. all files from `/plugin` and `/ftdetect` directories in you rtp are sourced (excluding `/after`) -2. all plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) -3. all plugins' `/after/plugin` files are sourced -4. all `/after/plugin` files from the original rtp are sourced -5. all the plugins' `init()` functions are executed +1. 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 `/after/plugin` files are sourced (this inludes `/after` from plugins) +4. all the plugins' `init()` functions are executed Files from runtime directories are always sourced in alphabetical order. diff --git a/lua/lazy/core/loader.lua b/lua/lazy/core/loader.lua index f705f7c..931cf4c 100644 --- a/lua/lazy/core/loader.lua +++ b/lua/lazy/core/loader.lua @@ -46,18 +46,13 @@ end function M.startup() Util.track({ start = "startup" }) + -- load filetype.lua first since plugins might depend on that M.source(vim.env.VIMRUNTIME .. "/filetype.lua") - -- load plugins from rtp, excluding after - Util.track({ start = "rtp plugins" }) - for _, path in ipairs(vim.opt.rtp:get()) do - if not path:find("after/?$") then - M.packadd(path) - end - end - Util.track() + -- backup original rtp + local rtp = vim.opt.rtp:get() - -- load start plugin + -- 1. load start plugin Util.track({ start = "start" }) for _, plugin in pairs(Config.plugins) do if plugin.lazy == false then @@ -66,7 +61,16 @@ function M.startup() end 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" }) for _, path in ipairs(vim.opt.rtp:get()) do if path:find("after/?$") then @@ -77,7 +81,7 @@ function M.startup() M.init_done = true - -- run plugin init + -- 4. run plugin init Util.track({ start = "init" }) for _, plugin in pairs(Config.plugins) do if plugin.init then