debian-dots

dotfiles (does the obvious)
git clone [email protected]:dracuxan/debian-dots.git
Log | Files | Refs | README | LICENSE

cmp.lua (1980B)


      1 local cmp = require("cmp")
      2 local luasnip = require("luasnip")
      3 
      4 luasnip.config.setup({})
      5 
      6 local kind_icons = {
      7 	Text = "󰉿",
      8 	Method = "m",
      9 	Function = "󰊕",
     10 	Constructor = "",
     11 	Field = "",
     12 	Variable = "󰆧",
     13 	Class = "󰌗",
     14 	Interface = "",
     15 	Module = "",
     16 	Property = "",
     17 	Unit = "",
     18 	Value = "󰎠",
     19 	Enum = "",
     20 	Keyword = "󰌋",
     21 	Snippet = "",
     22 	Color = "󰏘",
     23 	File = "󰈙",
     24 	Reference = "",
     25 	Folder = "󰉋",
     26 	EnumMember = "",
     27 	Constant = "󰇽",
     28 	Struct = "",
     29 	Event = "",
     30 	Operator = "󰆕",
     31 	TypeParameter = "󰊄",
     32 }
     33 
     34 cmp.setup({
     35 	snippet = {
     36 		expand = function(args)
     37 			luasnip.lsp_expand(args.body)
     38 		end,
     39 	},
     40 	completion = { completeopt = "menu,menuone,noinsert" },
     41 	mapping = cmp.mapping.preset.insert({
     42 		["<C-n>"] = cmp.mapping.select_next_item(),
     43 		["<C-p>"] = cmp.mapping.select_prev_item(),
     44 		["<C-b>"] = cmp.mapping.scroll_docs(-4),
     45 		["<C-f>"] = cmp.mapping.scroll_docs(4),
     46 		["<CR>"] = cmp.mapping.confirm({ select = true }),
     47 		["<C-Space>"] = cmp.mapping.complete({}),
     48 		["<Tab>"] = cmp.mapping(function(fallback)
     49 			if cmp.visible() then
     50 				cmp.select_next_item()
     51 			elseif luasnip.expand_or_locally_jumpable() then
     52 				luasnip.expand_or_jump()
     53 			else
     54 				fallback()
     55 			end
     56 		end, { "i", "s" }),
     57 		["<S-Tab>"] = cmp.mapping(function(fallback)
     58 			if cmp.visible() then
     59 				cmp.select_prev_item()
     60 			elseif luasnip.locally_jumpable(-1) then
     61 				luasnip.jump(-1)
     62 			else
     63 				fallback()
     64 			end
     65 		end, { "i", "s" }),
     66 	}),
     67 	sources = {
     68 		{
     69 			name = "lazydev",
     70 			group_index = 0,
     71 		},
     72 		{ name = "nvim_lsp" },
     73 		{ name = "luasnip" },
     74 		{ name = "buffer" },
     75 		{ name = "path" },
     76 	},
     77 	formatting = {
     78 		fields = { "kind", "abbr", "menu" },
     79 		format = function(entry, vim_item)
     80 			vim_item.kind = string.format("%s", kind_icons[vim_item.kind])
     81 			vim_item.menu = ({
     82 				nvim_lsp = "[LSP]",
     83 				luasnip = "[Snippet]",
     84 				buffer = "[Buffer]",
     85 				path = "[Path]",
     86 			})[entry.source.name]
     87 			return vim_item
     88 		end,
     89 	},
     90 })