This is an additional source for nvim-cmp, it allows you to
autocomplete npm packages and its versions.
The source is only active if you're in a package.json file.
It needs the Neovim plugin nvim-cmp and the npm command line tool.
For vim-plug:
Plug 'nvim-lua/plenary.nvim'
Plug 'David-Kunz/cmp-npm'
For packer:
use {
'David-Kunz/cmp-npm',
requires = {
'nvim-lua/plenary.nvim'
}
}
For lazy.nvim:
{
"David-Kunz/cmp-npm",
dependencies = { 'nvim-lua/plenary.nvim' },
ft = "json",
config = function()
require('cmp-npm').setup({})
end
}
Run the setup function and add the source
require('cmp-npm').setup({})
cmp.setup({
...,
sources = {
{ name = 'npm', keyword_length = 4 },
...
}
})(in Vimscript, make sure to add lua << EOF before and EOF after the lua code)
The setup function accepts an options table which defaults to:
{
ignore = {},
only_semantic_versions = false,
only_latest_version = false
}ignore(table): Allows you to filter out all versions which match one of its entries, e.g.ignore = { 'beta', 'rc' }.only_semantic_versions(Boolean): Iftrue, will filter out all versions which don't follow themajor.minor.patchschema.only_latest_version(Boolean): Iftrue, will only show latest release version.
Npm's cmp source creates highlight group CmpItemKindNpm. To add an icon for lspkind, add the icon to your lspkind symbol map.
-- lspkind.lua
local lspkind = require("lspkind")
lspkind.init({
symbol_map = {
Npm = " ",
},
})
vim.api.nvim_set_hl(0, "CmpItemKindNpm", {fg ="#BD93F9"})-- cmp.lua
cmp.setup {
...
formatting = {
format = lspkind.cmp_format({
mode = "symbol",
symbol_map = { Npm = " " }
})
}
...
}The versions are not correctly sorted (depends on nvim-cmp's sorting algorithm).
