vim.pack.add({ 'https://github.com/neovim/nvim-lspconfig', -- Autocompletion 'https://github.com/hrsh7th/cmp-nvim-lsp', 'https://github.com/hrsh7th/cmp-buffer', 'https://github.com/hrsh7th/cmp-path', 'https://github.com/hrsh7th/cmp-cmdline', 'https://github.com/hrsh7th/nvim-cmp', -- Snippets 'https://github.com/hrsh7th/cmp-vsnip', 'https://github.com/hrsh7th/vim-vsnip', 'https://github.com/L3MON4D3/LuaSnip', 'https://github.com/saadparwaizl/cmp_luasnip', -- github 'https://github.com/petertriho/cmp-git' }) -- Set up nvim-cmp. local cmp = require 'cmp' cmp.setup({ snippet = { -- REQUIRED - you must specify a snippet engine expand = function(args) vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users. require('luasnip').lsp_expand(args.body) -- For `luasnip` users. vim.snippet.expand(args.body) -- For native neovim snippets (Neovim v0.10+) end, }, window = { completion = cmp.config.window.bordered(), documentation = cmp.config.window.bordered(), }, mapping = cmp.mapping.preset.insert({ [''] = cmp.mapping.scroll_docs(-4), [''] = cmp.mapping.scroll_docs(4), [''] = cmp.mapping.complete(), [''] = cmp.mapping.abort(), [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. }), sources = cmp.config.sources({ { name = 'nvim_lsp' }, { name = 'luasnip' }, -- For luasnip users. }, { { name = 'buffer' }, }) }) cmp.setup.filetype('gitcommit', { sources = cmp.config.sources({ { name = 'git' }, }, { { name = 'buffer' }, }) }) require("cmp_git").setup() -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). cmp.setup.cmdline({ '/', '?' }, { mapping = cmp.mapping.preset.cmdline(), sources = { { name = 'buffer' } } }) -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). cmp.setup.cmdline(':', { mapping = cmp.mapping.preset.cmdline(), sources = cmp.config.sources({ { name = 'path' } }, { { name = 'cmdline' } }), matching = { disallow_symbol_nonprefix_matching = false } }) -- Set up lspconfig. local capabilities = require('cmp_nvim_lsp').default_capabilities() vim.lsp.config('lua_ls', { capabilities = capabilities }) vim.lsp.config('nixd', { cmd = { "nixd" }, filetypes = { "nix" }, capabilities = capabilities }) vim.lsp.enable({ "lua_ls", "nixd" })