diff --git a/runtime/lua/vim/loader.lua b/runtime/lua/vim/loader.lua index bba42e7123..924503514b 100644 --- a/runtime/lua/vim/loader.lua +++ b/runtime/lua/vim/loader.lua @@ -452,7 +452,8 @@ function M.enable(enable) end else _G.loadfile = _loadfile - for l, loader in ipairs(loaders) do + for l = #loaders, 1, -1 do + local loader = loaders[l] if loader == loader_cached or loader == loader_lib_cached then table.remove(loaders, l) end diff --git a/test/functional/lua/loader_spec.lua b/test/functional/lua/loader_spec.lua index 8ddd5c9684..0ce19766dd 100644 --- a/test/functional/lua/loader_spec.lua +++ b/test/functional/lua/loader_spec.lua @@ -14,10 +14,12 @@ describe('vim.loader', function() it('can be disabled', function() exec_lua(function() local orig_loader = _G.loadfile + local orig_loaders = { unpack(package.loaders) } vim.loader.enable() assert(orig_loader ~= _G.loadfile) vim.loader.enable(false) assert(orig_loader == _G.loadfile) + assert(vim.deep_equal(orig_loaders, package.loaders)) end) end)