return { { -- Autocompletion 'hrsh7th/nvim-cmp', dependencies = { -- Snippet Engine & its associated nvim-cmp source 'L3MON4D3/LuaSnip', 'saadparwaiz1/cmp_luasnip', -- Adds LSP completion capabilities 'hrsh7th/cmp-nvim-lsp', -- Adds a number of user-friendly snippets 'rafamadriz/friendly-snippets', 'hrsh7th/cmp-buffer', 'hrsh7th/cmp-path', 'hrsh7th/cmp-cmdline', 'petertriho/cmp-git', }, config = function() -- [[ Configure nvim-cmp ]] -- See `:help cmp` local cmp = require 'cmp' local luasnip = require 'luasnip' require('luasnip.loaders.from_vscode').lazy_load() luasnip.config.setup {} cmp.setup { view = { entries = { name = 'custom', selection_order = 'near_cursor' }, }, snippet = { expand = function(args) luasnip.lsp_expand(args.body) end, }, window = { completion = cmp.config.window.bordered(), documentation = cmp.config.window.bordered(), }, mapping = cmp.mapping.preset.insert { [''] = cmp.mapping.select_next_item(), [''] = cmp.mapping.select_prev_item(), [''] = cmp.mapping.scroll_docs(-4), [''] = cmp.mapping.scroll_docs(4), [''] = cmp.mapping.complete {}, [''] = cmp.mapping.confirm({ select = true }), -- [''] = cmp.mapping(function(fallback) -- if cmp.visible() and cmp.get_active_entry() then -- cmp.confirm { behavior = cmp.ConfirmBehavior.Replace, select = true } -- else -- fallback() -- end -- end, { 'i', 's' }), -- [''] = cmp.mapping(function(fallback) -- if cmp.visible() and has_words_before() then -- cmp.select_next_item() -- elseif luasnip.expand_or_locally_jumpable() then -- luasnip.expand_or_jump() -- else -- fallback() -- end -- end, { 'i', 's' }), -- [''] = cmp.mapping(function(fallback) -- if cmp.visible() then -- cmp.select_prev_item() -- elseif luasnip.locally_jumpable(-1) then -- luasnip.jump(-1) -- else -- fallback() -- end -- end, { 'i', 's' }), }, sources = { { name = 'nvim_lsp', priority = 100 }, -- { name = 'luasnip' }, { name = 'buffer', keyword_length = 3 }, { name = 'path' }, }, } -- Set configuration for specific filetype. cmp.setup.filetype('gitcommit', { sources = cmp.config.sources({ { name = 'git' }, -- You can specify the `git` source if [you were installed it](https://github.com/petertriho/cmp-git). }, { { 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, }, }