local cmp = require'cmp' local lspkind = require('lspkind') local source_mapping = { buffer = "[Buffer]", nvim_lsp = "[LSP]", nvim_lua = "[Lua]", cmp_tabnine = "[TN]", path = "[Path]", } 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. -- -- vim.fn["UltiSnips#Anon"](args.body) -- For `ultisnips` users. -- -- require'snippy'.expand_snippet(args.body) -- For `snippy` users. -- end, -- }, mapping = { [''] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c' }), [''] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i', 'c' }), [''] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }), [''] = cmp.mapping.confirm({ select = true }), }, sources = cmp.config.sources({ { name = 'cmp_tabnine' }, { name = 'nvim_lsp' }, }, { { name = 'buffer' }, }), formatting = { format = function(entry, vim_item) vim_item.kind = lspkind.presets.default[vim_item.kind] local menu = source_mapping[entry.source.name] if entry.source.name == 'cmp_tabnine' then if entry.completion_item.data ~= nil and entry.completion_item.data.detail ~= nil then menu = entry.completion_item.data.detail .. ' ' .. menu end vim_item.kind = '?' end vim_item.menu = menu return vim_item end } }) -- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore). cmp.setup.cmdline('/', { sources = { { name = 'buffer' } } }) -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). cmp.setup.cmdline(':', { sources = cmp.config.sources({ { name = 'path' } }, { { name = 'cmdline' } }) }) -- Setup tabnine local tabnine = require('cmp_tabnine.config') tabnine:setup({ max_lines = 1000; max_num_results = 20; sort = true; run_on_every_keystroke = true; snippet_placeholder = '..'; ignored_file_types = { -- default is not to ignore -- uncomment to ignore in lua: -- lua = true }; }) -- Setup lspconfig. local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) capabilities = require('cmp_nvim_lsp').update_capabilities(capabilities)