diff options
Diffstat (limited to '.config/nvim/lua/wacky/plugins/nvim-cmp.lua')
| -rw-r--r-- | .config/nvim/lua/wacky/plugins/nvim-cmp.lua | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/.config/nvim/lua/wacky/plugins/nvim-cmp.lua b/.config/nvim/lua/wacky/plugins/nvim-cmp.lua new file mode 100644 index 0000000..5911160 --- /dev/null +++ b/.config/nvim/lua/wacky/plugins/nvim-cmp.lua @@ -0,0 +1,61 @@ +local cmp_status, cmp = pcall(require, "cmp") +if not cmp_status then + return +end + +local luasnip_status, luasnip = pcall(require, "luasnip") +if not luasnip_status then + return +end + +-- import lspkind plugin safely +local lspkind_status, lspkind = pcall(require, "lspkind") +if not lspkind_status then + return +end + +-- load vs-code like snippets from plugins (e.g. friendly-snippets) +require("luasnip/loaders/from_vscode").lazy_load() + +vim.opt.completeopt = "menu,menuone,noselect" + +cmp.setup({ + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + mapping = cmp.mapping.preset.insert({ + ["<C-k>"] = cmp.mapping.select_prev_item(), -- previous suggestion + ["<C-j>"] = cmp.mapping.select_next_item(), -- next suggestion + ["<C-b>"] = cmp.mapping.scroll_docs(-4), + ["<C-f>"] = cmp.mapping.scroll_docs(4), + ["<C-Space>"] = cmp.mapping.complete(), -- show completion suggestions + ["<C-e>"] = cmp.mapping.abort(), -- close completion window + ["<CR>"] = cmp.mapping.confirm({ select = false }), + }), + -- sources for autocompletion + sources = cmp.config.sources({ + { name = "nvim_lsp" }, -- lsp + { name = "luasnip" }, -- snippets + { name = "buffer" }, -- text within current buffer + { name = "path" }, -- file system paths + { name = "spell" }, -- spell checker + { name = "treesitter" }, + }), + -- configure lspkind for vs-code like icons + formatting = { + format = lspkind.cmp_format({ + maxwidth = 50, + ellipsis_char = "...", + }), + }, +}) + +-- setup for vim-dadbod +cmp.setup.filetype({ "sql" }, { + sources = { + { name = "vim-dadbod-completion" }, + { name = "buffer" }, + }, +}) |
