Completion source for nvim-cmp helping to autocomplete NuGet packages and versions on .csproj files.
In a cmp configuration file, e.g. ~/.config/nvim/lua/plugins/cmp-nuget.lua
add the following configuration:
return {
{
"nvim-cmp",
dependencies = {
"PasiBergman/cmp-nuget",
},
opts = function(_, opts)
local nuget = require("cmp-nuget")
nuget.setup({})
table.insert(opts.sources, 1, {
name = "nuget",
})
opts.formatting.format = function(entry, vim_item)
if entry.source.name == "nuget" then
vim_item.kind = "NuGet"
end
return vim_item
end
end,
},
}
In your LunarVim cofiguration file:
lvim.plugins = {
...
{
"PasiBergman/cmp-nuget",
event = "BufWinEnter",
config = function()
local cmp_nuget = require("cmp-nuget")
cmp_nuget.setup({})
-- Insert 'nuget' source before 'buffer'
table.insert(lvim.builtin.cmp.sources, 6, {
name = "nuget",
keyword_length = 0,
})
lvim.builtin.cmp.formatting.source_names["nuget"] = "(NuGet)"
end,
},
...
}
Remember to :PackerSync
after changes to plugins.
For packer:
use {
'PasiBergman/cmp-nuget',
requires = {
'nvim-lua/plenary.nvim'
},
}
For vim-plug:
Plug 'nvim-lua/plenary.nvim'
Plug 'PasiBergman/cmp-nuget'
Run the setup
function and add the source
require('cmp-nuget').setup({})
require('cmp').setup({
...,
sources = {
{
name = "nuget",
keyword_length = 0,
},
...
},
formatting = {
source_names = {
nuget = "(NuGet)",
},
},
})
The require("cmp-nuget").setup()
function accepts an config override table.
Default configuration:
{
filetypes = {}, -- on which filetypes cmp-nuget is active
file_extensions = { "csproj" }, -- on which file extensions cmp-nuget is active
nuget = {
packages = { -- configuration for searching packages
limit = 100, -- limit package serach to first 100 packages
prerelease = false, -- include prerelase (preview, rc, etc.) packages
sem_ver_level = "2.0.0", -- semantic version level (*
package_type = "", -- package type to use to filter packages (*
},
versions = {
prerelease = true, -- include prerelase (preview, rc, etc.) versions
sem_ver_level = "2.0.0", -- semantic version level (*
},
},
}
(* more information:
Example of overriding default configuration during setup.
require('cmp-nuget').setup({
nuget = {
packages = {
limit = 20,
prerelease = true,
},
},
})
Requires the PackageReference
with Include=
and Version=
to be on single line.
Does not parse the xml
content.