summaryrefslogtreecommitdiff
path: root/config/plugins/cmp.lua
diff options
context:
space:
mode:
Diffstat (limited to 'config/plugins/cmp.lua')
-rw-r--r--config/plugins/cmp.lua42
1 files changed, 42 insertions, 0 deletions
diff --git a/config/plugins/cmp.lua b/config/plugins/cmp.lua
new file mode 100644
index 0000000..eee5eb1
--- /dev/null
+++ b/config/plugins/cmp.lua
@@ -0,0 +1,42 @@
+local cmp = require("cmp")
+
+cmp.setup({
+ completion = {
+ compleopt = "menu,menuone,insert",
+ },
+
+ snippet = {
+ expand = function(args)
+ require("luasnip").lsp_expand(args.body)
+ end,
+ },
+
+ mapping = {
+ ["<C-n>"] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }),
+ ["<C-p>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.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({
+ i = function(fallback)
+ if cmp.visible() and cmp.get_active_entry() then
+ cmp.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = false })
+ else
+ fallback()
+ end
+ end,
+
+ s = cmp.mapping.confirm({ select = true }),
+ c = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = true }),
+ }),
+ },
+
+ sources = cmp.config.sources({
+ { name = "nvim_lsp" },
+ { name = "luasnip" },
+ { name = "async_path" },
+ { name = "buffer" },
+ { name = "rg" },
+ }),
+})