From 14003bd1c56322b1095e3cda44fdd78aec54ff27 Mon Sep 17 00:00:00 2001 From: Evgeni Chasnovski Date: Thu, 8 Jan 2026 11:38:45 +0200 Subject: [PATCH] fix(pack): ensure plugin directory is created during first usage attempt Problem: Plugin directory ('.../pack/core/opt') may be missing while lockfile is present. Like after discarded attempt to install plugins. Solution: Ensure plugin directory is created on first `vim.pack` use. --- runtime/lua/vim/pack.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/runtime/lua/vim/pack.lua b/runtime/lua/vim/pack.lua index 13a97fa334..e32cf303e5 100644 --- a/runtime/lua/vim/pack.lua +++ b/runtime/lua/vim/pack.lua @@ -838,9 +838,13 @@ local function lock_sync(confirm) end -- Compute installed plugins + local plug_dir = get_plug_dir() + if vim.uv.fs_stat(plug_dir) == nil then + vim.fn.mkdir(plug_dir, 'p') + end + -- NOTE: The directory traversal is done on every startup, but it is very fast. -- Also, single `vim.fs.dir()` scales better than on demand `uv.fs_stat()` checks. - local plug_dir = get_plug_dir() local installed = {} --- @type table for name, fs_type in vim.fs.dir(plug_dir) do installed[name] = fs_type