Skip to content

fix(nvim-cmp): preserve sources added by specs in opts function#1758

Open
vuxuanhungg wants to merge 1 commit intoAstroNvim:mainfrom
vuxuanhungg:fix/nvim-cmp-sources
Open

fix(nvim-cmp): preserve sources added by specs in opts function#1758
vuxuanhungg wants to merge 1 commit intoAstroNvim:mainfrom
vuxuanhungg:fix/nvim-cmp-sources

Conversation

@vuxuanhungg
Copy link
Copy Markdown

Summary

Fix sources added by specs (e.g. luasnip, lazydev) being silently dropped in the nvim-cmp configuration.

Problem

The opts function builds its own sources table (buffer, nvim_lsp, path) and assigns it directly:

sources = sources,

This overwrites opts.sources, which contains sources added by specs via opts_extend = { "sources" } — such as luasnip (from the LuaSnip spec) and lazydev (from the lazydev spec).
As a result, snippet completions and other spec-injected sources are silently lost.

Fix

Replace the direct assignment with vim.list_extend to merge the locally-built sources with those from specs:

sources = vim.list_extend(sources, opts.sources),

This ensures sources like { name = "luasnip", priority = 750 } and { name = "lazydev", group_index = 0 } are preserved alongside the base sources.

@github-actions
Copy link
Copy Markdown

Review Checklist

Does this PR follow the [Contribution Guidelines](development guidelines)? Following is a partial checklist:

Proper conventional commit scoping:

  • If you are adding a new plugin, the scope would be the name of the category it is being added into. ex. feat(utility): added noice.nvim plugin

  • If you are modifying a pre-existing plugin or pack, the scope would be the name of the plugin folder. ex. fix(noice-nvim): fix LSP handler error

  • Pull request title has the appropriate conventional commit type and scope where the scope is the name of the pre-existing directory in the project as described above

  • README is properly formatted and uses fenced in links with <url> unless they are inside a [title](url)

  • Entry returns a single plugin spec with the new plugin as the only top level spec (not applicable for recipes or packs).

  • Proper usage of opts table rather than setting things up with the config function.

  • Proper usage of specs table for all specs that are not dependencies of a given plugin (not applicable for recipes or packs).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant