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.patch
schema.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).