aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/pack.lua
diff options
context:
space:
mode:
authorEvgeni Chasnovski <evgeni.chasnovski@gmail.com>2026-01-08 11:38:45 +0200
committerEvgeni Chasnovski <evgeni.chasnovski@gmail.com>2026-01-08 17:41:29 +0200
commit14003bd1c56322b1095e3cda44fdd78aec54ff27 (patch)
tree5966fddafba35a70569775974bbfdaf66b04823f /runtime/lua/vim/pack.lua
parent565cfa04eb00125eae2ade200591d435f5a86ad0 (diff)
downloadrneovim-14003bd1c56322b1095e3cda44fdd78aec54ff27.tar.gz
rneovim-14003bd1c56322b1095e3cda44fdd78aec54ff27.tar.bz2
rneovim-14003bd1c56322b1095e3cda44fdd78aec54ff27.zip
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.
Diffstat (limited to 'runtime/lua/vim/pack.lua')
-rw-r--r--runtime/lua/vim/pack.lua6
1 files changed, 5 insertions, 1 deletions
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<string,string>
for name, fs_type in vim.fs.dir(plug_dir) do
installed[name] = fs_type