fix(pack)!: make default opts.load in add() to work inside 'plugin/'

Problem: Plain `vim.pack.add()` calls (with default `opts.load`) does
  not fully work if called inside 'plugin/' runtime directory. In
  particular, 'plugin/' files of newly added plugins are not sourced.
  This is because `opts.load` is `false` during the whole startup, which
  means `:packadd!` is used (modify 'runtimepath' but not force source
  newly added 'plugin/' files).

  This use case is common due to users organizing their config as
  separate files in '~/.config/nvim/plugin/'.

Solution: Use newly added `v:vim_did_init` to decide default `opts.load`
  value instead of `v:vim_did_enter`.
This commit is contained in:
Evgeni Chasnovski
2025-11-13 15:49:13 +02:00
parent e4e6605943
commit a39171f532
3 changed files with 35 additions and 20 deletions

View File

@@ -379,7 +379,7 @@ add({specs}, {opts}) *vim.pack.add()*
Load `plugin/` files and `ftdetect/` scripts. If `false`,
works like `:packadd!`. If function, called with plugin
data and is fully responsible for loading plugin. Default
`false` during startup and `true` afterwards.
`false` during |init.lua| sourcing and `true` afterwards.
• {confirm}? (`boolean`) Whether to ask user to confirm
initial install. Default `true`.