12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- -- [[ Configure nvim-cmp ]]
- -- See `:help cmp`
- local cmp = require 'cmp'
- local luasnip = require 'luasnip'
- require('luasnip.loaders.from_vscode').lazy_load()
- luasnip.config.setup {}
- cmp.setup {
- enabled = function()
- -- disable completion in comments
- local context = require 'cmp.config.context'
- -- keep command mode completion enabled when cursor is in a comment
- if vim.api.nvim_get_mode().mode == 'c' then
- return true
- else
- return not context.in_treesitter_capture 'comment' and not context.in_syntax_group 'Comment'
- end
- end,
- snippet = {
- expand = function(args)
- luasnip.lsp_expand(args.body)
- end,
- },
- completion = {
- completeopt = 'menu,menuone,noinsert',
- },
- mapping = cmp.mapping.preset.insert {
- ['<C-n>'] = cmp.mapping.select_next_item(),
- ['<C-p>'] = cmp.mapping.select_prev_item(),
- ['<C-b>'] = cmp.mapping.scroll_docs(-4),
- ['<C-f>'] = cmp.mapping.scroll_docs(4),
- ['<C-Space>'] = cmp.mapping.complete {},
- ['<CR>'] = cmp.mapping.confirm {
- behavior = cmp.ConfirmBehavior.Replace,
- select = true,
- },
- ['<Tab>'] = cmp.mapping(function(fallback)
- if cmp.visible() then
- cmp.select_next_item()
- elseif luasnip.expand_or_locally_jumpable() then
- luasnip.expand_or_jump()
- else
- fallback()
- end
- end, { 'i', 's' }),
- ['<S-Tab>'] = cmp.mapping(function(fallback)
- if cmp.visible() then
- cmp.select_prev_item()
- elseif luasnip.locally_jumpable(-1) then
- luasnip.jump(-1)
- else
- fallback()
- end
- end, { 'i', 's' }),
- },
- sources = {
- { name = 'nvim_lsp' },
- { name = 'luasnip' },
- { name = 'path' },
- },
- }
|