local status, cmp = pcall(require, "cmp") if not status then return end local lspkind = require("lspkind") local cmp_select = { behavior = cmp.SelectBehavior.Select } cmp.setup({ snippet = { expand = function(args) require("luasnip").lsp_expand(args.body) end, }, mapping = cmp.mapping.preset.insert({ [""] = cmp.mapping.scroll_docs(-4), [""] = cmp.mapping.scroll_docs(4), [""] = cmp.mapping.select_prev_item(cmp_select), [""] = cmp.mapping.select_next_item(cmp_select), [""] = cmp.mapping.complete(), [""] = cmp.mapping.close(), [""] = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = true, }), }), sources = cmp.config.sources({ { name = "nvim_lsp" }, { name = "buffer" }, { name = 'luasnip'}, { name = 'path'} }), formatting = { format = lspkind.cmp_format({ with_text = false, maxwidth = 40 }), }, }) vim.api.nvim_set_keymap('i', '', 'luasnip#expand_or_jumpable() ? "luasnip-expand-or-jump" : ""', {expr=true, silent=true}) vim.api.nvim_set_keymap('i', '', 'lua require("luasnip").jump(-1)', {silent=true}) vim.api.nvim_set_keymap('s', '', 'lua require("luasnip").jump(1)', {silent=true}) vim.api.nvim_set_keymap('s', '', 'lua require("luasnip").jump(-1)', {silent=true}) vim.api.nvim_set_keymap('i', '', 'luasnip#choice_active() ? "luasnip-next-choice" : ""', {expr=true, silent=true}) vim.api.nvim_set_keymap('s', '', 'luasnip#choice_active() ? "luasnip-next-choice" : ""', {expr=true, silent=true}) vim.cmd([[ set completeopt=menuone,noinsert,noselect highlight! default link CmpItemKind CmpItemMenuDefault ]])