local ok, cmp = pcall(require, "cmp") if not ok then return end local lspkind = require "lspkind" local luasnip = require "luasnip" local cmp_autopairs = require "nvim-autopairs.completion.cmp" cmp.event:on( 'confirm_done', cmp_autopairs.on_confirm_done({ map_char = { tex = '' } })) cmp.setup { mapping = { [""] = cmp.mapping.scroll_docs(-4), [""] = cmp.mapping.scroll_docs(4), [""] = cmp.mapping(function(fallback) if cmp.visible() then cmp.close() elseif luasnip.expand_or_jumpable() then luasnip.expand_or_jump() else fallback() end end, { "i", "s" }), [""] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_next_item() elseif luasnip.choice_active() then luasnip.change_choice(1) else fallback() end end, { "i", "s" }), [""] = cmp.mapping.select_prev_item(), [""] = cmp.mapping.confirm { behavior = cmp.ConfirmBehavior.Insert, select = true, }, [""] = cmp.mapping.complete(), }, sources = { { name = "nvim_lua" }, { name = "nvim_lsp" }, { name = "path" }, { name = "luasnip" }, { name = "buffer", keyword_length = 5, option = { get_bufnrs = function() local bufs = {} for _, win in ipairs(vim.api.nvim_list_wins()) do bufs[vim.api.nvim_win_get_buf(win)] = true end return vim.tbl_keys(bufs) end } }, }, snippet = { expand = function(args) require("luasnip").lsp_expand(args.body) end, }, formatting = { format = lspkind.cmp_format { with_text = true, menu = { buffer = "[buf]", nvim_lsp = "[LSP]", nvim_lua = "[api]", path = "[path]", luasnip = "[snip]", ["vim-dadbod-completion"] = "[DB]", } } }, experimental = { native_menu = false, ghost_text = true, } } vim.api.nvim_create_autocmd( "FileType", { pattern = "sql,mysql,plsql", callback = function() require('cmp').setup.buffer({ sources = {{ name = 'vim-dadbod-completion' }} }) end } ) -- Setup lspconfig. local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) -- Replace with each lsp server you've enabled. require('lspconfig')['emmet_ls'].setup { capabilities = capabilities } local Group = require("colorbuddy.group").Group local g = require("colorbuddy.group").groups local s = require("colorbuddy.style").styles Group.new("CmpItemAbbr", g.Comment) Group.new("CmpItemAbbrDeprecated", g.Error) Group.new("CmpItemAbbrMatchFuzzy", g.CmpItemAbbr.fg:dark(), nil, s.italic) Group.new("CmpItemKind", g.Special) Group.new("CmpItemMenu", g.NonText)