diff options
| author | Nanderty <psopka@sopka.ch> | 2023-03-15 23:36:14 +0100 |
|---|---|---|
| committer | Nanderty <psopka@sopka.ch> | 2023-03-15 23:36:14 +0100 |
| commit | fba8830826fa88ef43d84fb051f90f11e4ae939b (patch) | |
| tree | 4fc0bbae7e49c9b670fc34505a8352400c0ffa8d /plugin/cmp.lua | |
| parent | 59bd3aeee04b6ff559c51a324234a5100db0b2e1 (diff) | |
| download | neovim-config-fba8830826fa88ef43d84fb051f90f11e4ae939b.tar.gz neovim-config-fba8830826fa88ef43d84fb051f90f11e4ae939b.tar.bz2 neovim-config-fba8830826fa88ef43d84fb051f90f11e4ae939b.zip | |
cleanup
Diffstat (limited to 'plugin/cmp.lua')
| -rw-r--r-- | plugin/cmp.lua | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/plugin/cmp.lua b/plugin/cmp.lua new file mode 100644 index 0000000..56b25f5 --- /dev/null +++ b/plugin/cmp.lua @@ -0,0 +1,88 @@ +local luasnip = require('luasnip') +local cmp = require'cmp' + +local has_words_before = function() + unpack = unpack or table.unpack + local line, col = unpack(vim.api.nvim_win_get_cursor(0)) + return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match('%s') == nil +end + +local kind_icons = { + 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({ + snippet = { + expand = function(args) + require('luasnip').lsp_expand(args.body) + end, + }, + window = { + }, + mapping = cmp.mapping.preset.insert({ + ['<Tab>'] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + elseif has_words_before() then + cmp.complete() + else + fallback() + end + end, { 'i', 's' }), + + ['<S-Tab>'] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { 'i', 's' }), + }), + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { name = 'luasnip' }, + { name = 'omni' }, + { name = 'buffer' }, + }), + formatting = { + format = function(entry, vim_item) + vim_item.kind = string.format('%s %s', kind_icons[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 + }, +}) |
