dotfiles/home/.config/nvim/lua/plugins/cmp.lua

57 lines
1.8 KiB
Lua

return function()
local cmp = require('cmp')
local luasnip = require('luasnip')
if not cmp then return end
-- Setup git completion source
require("cmp_git").setup()
-- Set completeopt to have a better completion experience
vim.o.completeopt = 'menuone,noselect'
cmp.setup {
snippet = {expand = function(args) luasnip.lsp_expand(args.body) end},
mapping = {
['<C-p>'] = cmp.mapping.select_prev_item(),
['<C-n>'] = cmp.mapping.select_next_item(),
['<C-d>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.close(),
['<CR>'] = cmp.mapping.confirm {
behavior = cmp.ConfirmBehavior.Replace,
select = true
},
['<Tab>'] = function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end,
['<S-Tab>'] = function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end
},
sources = {
{name = 'buffer'}, {name = 'git'}, {name = 'luasnip'},
{name = 'nvim_lsp'}, {name = 'nvim_lua'}, {name = 'path'}
}
}
-- Enable autopairs when enter is processed
-- on completion
local cmp_autopairs = require('nvim-autopairs.completion.cmp')
cmp.event:on('confirm_done', cmp_autopairs.on_confirm_done())
end