-- Completion plugin config local utils = require('utils') utils.opt('o', 'completeopt', 'menuone,noselect') local cmp = require('cmp') local cmp_kinds = { Text = ' ', Method = '󰊕 ', Function = '󰊕 ', Constructor = ' ', Field = ' ', Variable = ' ', Class = ' ', Interface = ' ', Module = ' ', Property = ' ', Unit = ' ', Value = ' ', Enum = ' ', Keyword = ' ', Snippet = ' ', Color = ' ', File = ' ', Reference = ' ', Folder = ' ', EnumMember = ' ', Constant = ' ', Struct = ' ', Event = ' ', Operator = ' ', TypeParameter = ' ', } cmp.setup({ formatting = { format = function(entry, vim_item) -- Kind icons vim_item.kind = string.format('%s %s', cmp_kinds[vim_item.kind], vim_item.kind) vim_item.menu = ({ buffer = "[Buffer]", nvim_lsp = "[LSP]", luasnip = "[LuaSnip]", nvim_lua = "[Lua]", latex_symbols = "[LaTeX]", })[entry.source.name] return vim_item end }, snippet = { expand = function(args) local luasnip = require("luasnip") if not luasnip then return end luasnip.lsp_expand(args.body) end, }, window = { completion = cmp.config.window.bordered(), documentation = cmp.config.window.bordered(), }, completion = { autocomplete = false, }, mapping = cmp.mapping.preset.insert({ [''] = cmp.mapping.scroll_docs(-4), [''] = cmp.mapping.scroll_docs(4), [''] = cmp.mapping.complete(), [''] = cmp.mapping.abort(), [''] = cmp.mapping.confirm({ select = false }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. }), sources = cmp.config.sources({ { name = 'nvim_lsp' }, { name = 'luasnip' }, -- For luasnip users. }, { { name = 'buffer' }, }) }) -- Set configuration for specific filetype. --cmp.setup.filetype('gitcommit', { -- sources = cmp.config.sources({ -- { name = 'git' }, -- You can specify the `git` source if [you were installed it](https://github.com/petertriho/cmp-git). -- }, { -- { name = 'buffer' }, -- }) --}) -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). cmp.setup.cmdline({ '/', '?' }, { mapping = cmp.mapping.preset.cmdline(), sources = { { name = 'buffer' } } }) -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). cmp.setup.cmdline(':', { mapping = cmp.mapping.preset.cmdline(), sources = cmp.config.sources({ { name = 'path' } }, { { name = 'cmdline' } }) })