2023-09-24 01:19:07 +02:00
-- Completion plugin config
local utils = require ( ' utils ' )
2024-01-04 00:45:21 +01:00
vim.cmd [[set shortmess+=c]]
utils.opt ( ' o ' , ' completeopt ' , ' menuone,noselect ' )
2023-09-24 01:19:07 +02:00
local cmp = require ( ' cmp ' )
2024-01-04 00:45:21 +01:00
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 = ' ' ,
}
2023-09-24 01:19:07 +02:00
cmp.setup ( {
2024-01-04 00:45:21 +01:00
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
} ,
2023-09-24 01:19:07 +02:00
snippet = {
-- REQUIRED - you must specify a snippet engine
expand = function ( args )
vim.fn [ " vsnip#anonymous " ] ( args.body ) -- For `vsnip` users.
-- require('luasnip').lsp_expand(args.body) -- For `luasnip` users.
-- require('snippy').expand_snippet(args.body) -- For `snippy` users.
-- vim.fn["UltiSnips#Anon"](args.body) -- For `ultisnips` users.
end ,
} ,
window = {
2023-09-26 01:51:50 +02:00
completion = cmp.config . window.bordered ( ) ,
documentation = cmp.config . window.bordered ( ) ,
} ,
completion = {
autocomplete = false ,
2023-09-24 01:19:07 +02:00
} ,
mapping = cmp.mapping . preset.insert ( {
[ ' <C-b> ' ] = cmp.mapping . scroll_docs ( - 4 ) ,
[ ' <C-f> ' ] = cmp.mapping . scroll_docs ( 4 ) ,
2023-09-26 01:51:50 +02:00
[ ' <C-x><C-o> ' ] = cmp.mapping . complete ( ) ,
2023-09-24 01:19:07 +02:00
[ ' <C-e> ' ] = cmp.mapping . abort ( ) ,
2023-09-26 01:51:50 +02:00
[ ' <CR> ' ] = cmp.mapping . confirm ( { select = false } ) , -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
2023-09-24 01:19:07 +02:00
} ) ,
sources = cmp.config . sources ( {
{ name = ' nvim_lsp ' } ,
{ name = ' vsnip ' } , -- For vsnip users.
-- { name = 'luasnip' }, -- For luasnip users.
-- { name = 'ultisnips' }, -- For ultisnips users.
-- { name = 'snippy' }, -- For snippy users.
} , {
{ name = ' buffer ' } ,
} )
} )
-- Set configuration for specific filetype.
2024-01-04 00:45:21 +01:00
--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' },
-- })
--})
2023-09-24 01:19:07 +02:00
-- 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 ' }
} )
} )