/cmp-nuget

Neovim plugin for NuGet package and version completion with nvim-cmp.

Primary LanguageLuaMIT LicenseMIT

NuGet completion for nvim-cmp

Completion source for nvim-cmp helping to autocomplete NuGet packages and versions on .csproj files.

cmp-nuget in action

Requirements

Installation

LunarVim

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.

Neovim

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)",
    },
  },
})

Configuration

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,
    },
  },
})

Known bugs and limitations

Requires the PackageReference with Include= and Version= to be on single line. Does not parse the xml content.