local cmp = require "cmp" local ls = require "luasnip" vim.opt.shortmess:append "c" cmp.setup { snippet = { expand = function(args) ls.lsp_expand(args.body) end, }, mapping = cmp.mapping.preset.insert { [""] = cmp.mapping.close(), [""] = cmp.mapping(function() if ls.locally_jumpable(-1) then ls.jump(-1) end end, { "i", "s" }), [""] = cmp.mapping(function() if ls.expand_or_locally_jumpable() then ls.expand_or_jump() end end, { "i", "s" }), [""] = cmp.mapping.confirm { select = true }, [""] = cmp.config.disable, }, sources = { { name = "nvim_lsp" }, { name = "nvim_lua" }, { name = "luasnip" }, { name = "buffer" }, { name = "calc" }, }, sorting = { comparators = { cmp.config.compare.offset, cmp.config.compare.exact, cmp.config.compare.score, cmp.config.compare.kind, cmp.config.compare.sort_text, cmp.config.compare.length, cmp.config.compare.order, }, }, formatting = { format = require("lspkind").cmp_format { with_text = true, menu = { buffer = "[buf]", cmp_tabnine = "[tn]", luasnip = "[snip]", nvim_lsp = "[lsp]", nvim_lua = "[lua]", path = "[path]", }, }, }, experimental = { ghost_text = true, native_menu = false, }, } cmp.setup.filetype({ "mysql", "sql" }, { sources = { { name = "vim-dadbod-completion" }, { name = "buffer" }, }, })