2024-12-20 09:26:37 +00:00
-- Set up nvim-cmp.
local cmp = require ' cmp '
2024-12-20 13:43:35 +00:00
-- Lua Snip
require ( " luasnip.loaders.from_vscode " ) . lazy_load ( )
2024-12-20 09:26:37 +00:00
cmp.setup ( {
snippet = {
-- REQUIRED - you must specify a snippet engine
expand = function ( args )
2024-12-20 13:43:35 +00:00
-- vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users.
require ( ' luasnip ' ) . lsp_expand ( args.body ) -- For `luasnip` users.
2024-12-20 09:26:37 +00:00
-- require('snippy').expand_snippet(args.body) -- For `snippy` users.
-- vim.fn["UltiSnips#Anon"](args.body) -- For `ultisnips` users.
-- vim.snippet.expand(args.body) -- For native neovim snippets (Neovim v0.10+)
end ,
} ,
window = {
-- completion = cmp.config.window.bordered(),
-- documentation = cmp.config.window.bordered(),
} ,
mapping = cmp.mapping . preset.insert ( {
[ ' <C-b> ' ] = cmp.mapping . scroll_docs ( - 4 ) ,
[ ' <C-f> ' ] = cmp.mapping . scroll_docs ( 4 ) ,
2024-12-23 17:10:03 +00:00
-- Allows selection with tab and shift-tab
[ ' <S-Tab> ' ] = cmp.mapping . select_prev_item ( select_opts ) ,
[ ' <Tab> ' ] = cmp.mapping . select_next_item ( select_opts ) ,
2024-12-20 09:26:37 +00:00
[ ' <C-Space> ' ] = cmp.mapping . complete ( ) ,
[ ' <C-e> ' ] = cmp.mapping . abort ( ) ,
2024-12-23 17:10:03 +00:00
-- ['<CR>'] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
[ ' <CR> ' ] = cmp.mapping . confirm ( { select = false } ) , -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
2024-12-20 09:26:37 +00:00
} ) ,
sources = cmp.config . sources ( {
{ name = ' nvim_lsp ' } ,
2024-12-20 13:43:35 +00:00
-- { name = 'vsnip' }, -- For vsnip users.
{ name = ' luasnip ' } , -- For luasnip users.
2024-12-20 09:26:37 +00:00
-- { name = 'ultisnips' }, -- For ultisnips users.
-- { name = 'snippy' }, -- For snippy users.
} , {
{ name = ' buffer ' } ,
} )
} )
-- To use git you need to install the plugin petertriho/cmp-git and uncomment lines below
-- Set configuration for specific filetype.
--[[ cmp.setup.filetype('gitcommit', {
sources = cmp.config . sources ( {
{ name = ' git ' } ,
} , {
{ name = ' buffer ' } ,
} )
} )
require ( " cmp_git " ) . setup ( ) ] ] --
-- 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 ' }
} ) ,
matching = { disallow_symbol_nonprefix_matching = false }
} )
-- Set up lspconfig.
local capabilities = require ( ' cmp_nvim_lsp ' ) . default_capabilities ( )
-- Replace <YOUR_LSP_SERVER> with each lsp server you've enabled.
-- BASH
require ( ' lspconfig ' ) [ ' bashls ' ] . setup {
capabilities = capabilities
}
-- CLANG
require ( ' lspconfig ' ) [ ' clangd ' ] . setup {
capabilities = capabilities
}
-- CMAKE
require ( ' lspconfig ' ) [ ' cmake ' ] . setup {
capabilities = capabilities
}
-- LUA
require ( ' lspconfig ' ) [ ' lua_ls ' ] . setup {
capabilities = capabilities
}
-- LaTeX
require ( ' lspconfig ' ) [ ' ltex ' ] . setup {
capabilities = capabilities
}
-- PYTHON
require ( ' lspconfig ' ) [ ' pylsp ' ] . setup {
capabilities = capabilities
}