1local cmp = require 'cmp' 2 3cmp.setup { 4 snippet = { 5 expand = function(args) 6 require('luasnip').lsp_expand(args.body) 7 end, 8 }, 9 formatting = { 10 format = function(entry, vim_item) 11 vim_item.menu = ({ 12 omni = '[Omni]', 13 nvim_lsp = '[LSP]', 14 nvim_lsp_signature_help = '[Signature]', 15 spell = '[Spell]', 16 dictionary = '[Dictionary]', 17 buffer = '[Buffer]', 18 path = '[Path]', 19 ls = '[Luasnip]', 20 })[entry.source.name] 21 return vim_item 22 end, 23 }, 24 mapping = { 25 ['<C-y>'] = { 26 i = cmp.mapping.confirm({ select = false }), 27 c = cmp.mapping.confirm({ select = false }), 28 }, 29 ['<C-e>'] = { 30 i = cmp.mapping.abort(), 31 c = cmp.mapping.abort(), 32 }, 33 ['<C-Space>'] = { 34 i = cmp.mapping.complete(), 35 c = cmp.mapping.complete(), 36 }, 37 ['<Down>'] = { 38 i = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }), 39 c = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }), 40 }, 41 ['<Up>'] = { 42 i = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }), 43 c = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }), 44 }, 45 }, 46 sources = cmp.config.sources({ 47 { name = 'nvim_lsp_signature_help', priority = 1000 }, 48 { name = 'nvim_lsp', priority = 900 }, 49 { name = 'luasnip', priority = 800 }, 50 { name = 'omni', priority = 700 }, 51 { name = 'buffer', priority = 600 }, 52 { name = 'path', priority = 500 }, 53 { 54 name = 'dictionary', 55 priority = 400, 56 keyword_length = 2, 57 }, 58 { 59 name = 'spell', 60 priority = 300, 61 option = { preselect_correct_word = false } 62 }, 63 }), 64 sorting = { 65 priority_weight = 2, 66 comparators = { 67 cmp.config.compare.offset, 68 -- cmp.config.compare.scopes, 69 cmp.config.compare.score, 70 cmp.config.compare.recently_used, 71 cmp.config.compare.locality, 72 cmp.config.compare.kind, 73 -- cmp.config.compare.sort_text, 74 -- cmp.config.compare.length, 75 cmp.config.compare.order, 76 }, 77 }, 78} 79-- `/` cmdline setup. 80cmp.setup.cmdline('/', { 81 sources = { 82 { name = 'buffer' } 83 }, 84 completion = { 85 autocomplete = false 86 } 87}) 88-- `:` cmdline setup. 89cmp.setup.cmdline(':', { 90 sources = cmp.config.sources({ 91 { name = 'path' } 92 }, { 93 { name = 'cmdline' } 94 }), 95 completion = { 96 autocomplete = false 97 } 98})