/ nvim / .config / nvim / after / plugin / completion.lua
completion.lua
 1  local cmp = require 'cmp'
 2  local lspkind = require 'lspkind'
 3  local cmp_autopairs = require 'nvim-autopairs.completion.cmp'
 4  
 5  lspkind.init({
 6      preset = 'codicons',
 7      mode = 'symbol_text'
 8  })
 9  
10  cmp.setup {
11      snippet = {
12          expand = function(args) require 'luasnip'.lsp_expand(args.body) end
13      },
14      mapping = {
15          ['<C-N>'] = cmp.mapping(cmp.mapping.select_next_item()),
16          ['<C-P>'] = cmp.mapping(cmp.mapping.select_prev_item()),
17          ['<C-U>'] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i' }),
18          ['<C-D>'] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i' }),
19          ['<CR>'] = cmp.mapping.confirm({
20              select = true,
21              behavior = cmp.ConfirmBehavior.Replace
22          }),
23          ['<C-Space>'] = cmp.mapping.complete()
24      },
25      formatting = { format = lspkind.cmp_format() },
26      sources = cmp.config.sources({
27          { name = 'nvim_lsp' },
28          { name = 'luasnip' }
29      },
30          { { name = 'buffer' } })
31  }
32  
33  cmp.event:on('confirm_done', cmp_autopairs.on_confirm_done())