btw i use nix
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})