-- Reference: https://github.com/hrsh7th/nvim-cmp#recommended-configuration return function() local cmp = require "cmp" cmp.setup { snippet = { expand = function(args) vim.snippet.expand(args.body) end, }, window = { completion = cmp.config.window.bordered(), documentation = cmp.config.window.bordered(), }, mapping = cmp.mapping.preset.insert { -- [''] = cmp.mapping(function(fallback) -- if cmp.visible() then -- cmp.select_next_item() -- elseif vim.snippet.jumpable(1) then -- vim.snippet.jump(1) -- else -- fallback() -- end -- end, { 'i', 's' }), -- And something similar for vim.snippet.jump(-1) [''] = cmp.mapping.scroll_docs(-4), [''] = cmp.mapping.scroll_docs(4), [''] = cmp.mapping.complete(), [''] = cmp.mapping.abort(), [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. }, sources = cmp.config.sources({{ name = 'nvim_lsp' }}, {{ name = 'buffer' }}) } -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). cmp.setup.cmdline({ '/', '?' }, { mapping = cmp.mapping.preset.cmdline(), sources = { { name = 'buffer' } } }) -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). cmp.setup.cmdline(':', { mapping = cmp.mapping.preset.cmdline(), sources = cmp.config.sources({ { name = 'path' } }, { { name = 'cmdline' } }) }) end