> ERROR: [ClaudeCode] [config] [WARN] focus_after_send=true does not focus a Claude session running outside Neovim (terminal.provider="external"). Use a `User ClaudeCodeSendComplete` autocmd to focus it yourself.
Include the definition locations of offending vim-plugins in the
`extraPackages` & `extraPackagesAfter` assertion messages.
This makes it easier to track down the plugin declarations,
especially when values originate from multiple modules.
Wrapped Nixvim configs previously passed the generated init.lua with -u. Neovim treats that startup path as an explicit user config and skips exrc processing, so project-local .nvim.lua files were not sourced even when users enabled the exrc option.
Load the generated config through a forced VIMINIT instead. This preserves the current wrapped-config precedence while allowing Neovim's normal exrc startup path to run for trusted project config files.
When impureRtp is disabled, clear XDG_CONFIG_DIRS and VIM from an early --cmd before sysinit is checked, then restore them before loading the generated config so runtime code and child processes see the original environment.
Keep the saved startup environment in a short-lived global Lua table shared between the --cmd and VIMINIT chunks, then clear it after restore.
Add a modules-output regression test that checks the wrapper args no longer include -u, verifies VIMINIT is set, confirms trusted .nvim.lua is sourced, blocks sysinit.vim, verifies XDG_CONFIG_DIRS and VIM are restored, and ensures the saved startup state is cleared.
Closes#3506
Pass the LspAttach autocmd event into the shared onAttach helper so existing configs can still read event.buf and event.data.client_id after dynamic registration support moved the user body out of the autocmd callback.
For registerCapability reruns, provide a synthetic event with the fields Neovim documents for LspAttach that nixvim can still know: buf and data.client_id.
Fixes#4335
Some LSP servers register capabilities after LspAttach, so the global onAttach body must also run from client/registerCapability for buffers already attached to that client.
Keep the initial LspAttach autocmd for servers that advertise capabilities up front, and preserve the wrapped handler's return value.
Closes#3323
nvim-jdtls 0.11+ can be initialized through native Vim LSP config, so explicit FileType start_or_attach is no longer needed.
This avoids passing an empty table into start_or_attach, which triggers the runtime assertion when cmd is unset.
Instead, map plugins.jdtls.settings to lsp.servers.jdtls.config and keep the server enabled by default.
close#4165
Expose nvim_create_user_command preview callbacks through userCommands so command previews can be configured declaratively instead of requiring raw setup Lua.