local lsp = require('lsp-zero').preset({ name = 'minimal', set_lsp_keymaps = true, manage_nvim_cmp = true, suggest_lsp_servers = false, }) local luasnip = require("luasnip") local cmp = require("cmp") lsp.setup_nvim_cmp({ formatting = { fields = {'abbr', 'menu', 'kind'}, mapping = lsp.defaults.cmp_mappings({ [""] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_next_item() elseif luasnip.expand_or_jumpable() then luasnip.expand_or_jump() elseif has_words_before() then cmp.complete() else fallback() end end, { "i", "s" }), [""] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_prev_item() elseif luasnip.jumpable(-1) then luasnip.jump(-1) else fallback() end end, { "i", "s" }), }), format = function(entry, item) local menu_icon = { nvim_lsp = 'λ', luasnip = '⋗', buffer = 'Ω', path = '🖫', nvim_lua = 'Π', } item.menu = menu_icon[entry.source.name] return item end, }, }) lsp.setup()