aboutsummaryrefslogtreecommitdiff
path: root/.config/nvim/lua/pluginsconfig/nvim-cmp.lua
diff options
context:
space:
mode:
authorJustine Smithies <justine@smithies.me.uk>2023-08-22 19:43:07 +0100
committerJustine Smithies <justine@smithies.me.uk>2023-08-22 19:43:07 +0100
commit86c0c3694c93025dfec23f27266905c12f446a4e (patch)
tree32ee6e5cc84b6e2962a998d788554cb984fb7a8e /.config/nvim/lua/pluginsconfig/nvim-cmp.lua
parent3058d6df77817de298a207d36b8b0871893c417a (diff)
Initial commit
Diffstat (limited to '.config/nvim/lua/pluginsconfig/nvim-cmp.lua')
-rw-r--r--.config/nvim/lua/pluginsconfig/nvim-cmp.lua87
1 files changed, 87 insertions, 0 deletions
diff --git a/.config/nvim/lua/pluginsconfig/nvim-cmp.lua b/.config/nvim/lua/pluginsconfig/nvim-cmp.lua
new file mode 100644
index 0000000..34ec756
--- /dev/null
+++ b/.config/nvim/lua/pluginsconfig/nvim-cmp.lua
@@ -0,0 +1,87 @@
+ -- Setup nvim-cmp.
+ local present, cmp = pcall(require, 'cmp')
+
+if not present then
+ return
+end
+
+ 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.
+ -- require('snippy').expand_snippet(args.body) -- For `snippy` users.
+ -- vim.fn["UltiSnips#Anon"](args.body) -- For `ultisnips` users.
+ end,
+ },
+ window = {
+ -- completion = cmp.config.window.bordered(),
+ -- documentation = cmp.config.window.bordered(),
+ },
+ mapping = cmp.mapping.preset.insert({
+ ['<C-b>'] = cmp.mapping.scroll_docs(-4),
+ ['<C-f>'] = cmp.mapping.scroll_docs(4),
+ ['<C-Space>'] = cmp.mapping.complete(),
+ ['<C-e>'] = cmp.mapping.abort(),
+ ['<CR>'] = cmp.mapping.confirm({ select = false }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
+ }),
+ sources = cmp.config.sources({
+ { name = 'nvim_lsp' },
+ -- { name = 'vsnip' }, -- For vsnip users.
+ { name = 'luasnip' }, -- For luasnip users.
+ -- { name = 'ultisnips' }, -- For ultisnips users.
+ -- { name = 'snippy' }, -- For snippy users.
+ }, {
+ { name = 'buffer' },
+ { name = 'path' },
+ { name = 'cmdline' },
+ { name = 'nvim_lua' },
+ })
+ })
+
+ -- Set configuration for specific filetype.
+ cmp.setup.filetype('gitcommit', {
+ sources = cmp.config.sources({
+ { name = 'cmp_git' }, -- You can specify the `cmp_git` source if you were installed it.
+ }, {
+ { name = 'buffer' },
+ })
+ })
+
+ -- Use buffer source for `/` (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' }
+ })
+ })
+
+ -- Setup lspconfig.
+ local capabilities = require('cmp_nvim_lsp').default_capabilities(vim.lsp.protocol.make_client_capabilities())
+ -- Replace <YOUR_LSP_SERVER> with each lsp server you've enabled.
+ --require('lspconfig')['pyright'].setup {
+ -- capabilities = capabilities
+ --}
+ --require('lspconfig')['bashls'].setup {
+ -- capabilities = capabilities
+ --}
+ local lspconfig = require "lspconfig"
+ local servers = { "pyright", "pylsp", "bashls", "lua_ls", "vimls"}
+
+ for _, lsp in ipairs(servers) do
+ lspconfig[lsp].setup {
+ on_attach = on_attach,
+ capabilities = capabilities,
+ }
+ end