----------------------------------------------------------- -- Autocomplete configuration file ----------------------------------------------------------- -- Plugin: nvim-cmp -- url: https://github.com/hrsh7th/nvim-cmpa local cmp_status_ok, cmp = pcall(require, 'cmp') if not cmp_status_ok then return end local luasnip_status_ok, luasnip = pcall(require, 'luasnip') if not luasnip_status_ok then return end cmp.setup { -- Load snippet support snippet = { expand = function(args) luasnip.lsp_expand(args.body) end, }, -- Completion settings completion = { --completeopt = 'menu,menuone,noselect' keyword_length = 2 }, -- Key mapping mapping = { [''] = 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.close(), [''] = cmp.mapping.confirm { behavior = cmp.ConfirmBehavior.Replace, select = true, }, -- Tab mapping ['g'] = function(fallback) if cmp.visible() then cmp.select_next_item() elseif luasnip.expand_or_jumpable() then luasnip.expand_or_jump() else fallback() end end, ['h'] = function(fallback) if cmp.visible() then cmp.select_prev_item() elseif luasnip.jumpable(-1) then luasnip.jump(-1) else fallback() end end }, -- Load sources, see: https://github.com/topics/nvim-cmp sources = { { name = 'nvim_lsp' }, { name = 'luasnip' }, { name = 'path' }, { name = 'buffer' }, }, }