Add snippet engine for cmp
This commit is contained in:
parent
d357b591c9
commit
3a13cbc38d
1 changed files with 49 additions and 2 deletions
|
@ -4,6 +4,11 @@ if #vim.fn.glob(packer_install_path) == 0 then
|
|||
vim.api.nvim_command'packadd packer.nvim'
|
||||
end
|
||||
|
||||
local has_words_before = function()
|
||||
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 packer = require'packer'
|
||||
packer.startup(function()
|
||||
local plugins = {
|
||||
|
@ -45,21 +50,38 @@ packer.startup(function()
|
|||
'nvim-lua/plenary.nvim',
|
||||
}
|
||||
},
|
||||
{
|
||||
'nvim-telescope/telescope-fzf-native.nvim',
|
||||
run = 'make',
|
||||
},
|
||||
{
|
||||
'tzachar/cmp-fuzzy-path',
|
||||
requires = {'hrsh7th/nvim-cmp', 'tzachar/fuzzy.nvim'},
|
||||
},
|
||||
-- TODO: add keymap <leader>ig for toggling these
|
||||
'lukas-reineke/indent-blankline.nvim', -- indentation guide lines
|
||||
'L3MON4D3/LuaSnip',
|
||||
|
||||
'neovim/nvim-lspconfig', -- language server configuration helper
|
||||
'williamboman/nvim-lsp-installer', -- plugin containing installation commands for many language servers
|
||||
'hrsh7th/cmp-nvim-lsp', -- add lsp to completion engine
|
||||
'hrsh7th/cmp-buffer', -- add buffer information to completion engine
|
||||
'hrsh7th/cmp-path', -- add filesystem information to complete enging
|
||||
'hrsh7th/cmp-cmdline', -- add completion for vim commands
|
||||
'saadparwaiz1/cmp_luasnip',
|
||||
{
|
||||
-- completion engine
|
||||
'hrsh7th/nvim-cmp',
|
||||
config = function()
|
||||
local cmp = require'cmp'
|
||||
local luasnip = require'luasnip'
|
||||
|
||||
cmp.setup{
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
luasnip.lsp_expand(args.body)
|
||||
end,
|
||||
},
|
||||
mapping = {
|
||||
['<C-b>'] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c' }),
|
||||
['<C-f>'] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i', 'c' }),
|
||||
|
@ -70,16 +92,41 @@ packer.startup(function()
|
|||
c = cmp.mapping.close(),
|
||||
},
|
||||
['<CR>'] = cmp.mapping.confirm{select = true}, -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
|
||||
["<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{
|
||||
sources = cmp.config.sources({
|
||||
{ name = 'nvim_lsp' },
|
||||
{ name = 'luasnip' },
|
||||
}, {
|
||||
{ name = 'buffer' },
|
||||
},
|
||||
{ name = 'path' },
|
||||
{ name = 'fuzzy_path' },
|
||||
}),
|
||||
}
|
||||
|
||||
cmp.setup.cmdline('/', {
|
||||
sources = {
|
||||
{name = 'buffer'},
|
||||
{name = 'fuzzy_path'},
|
||||
}
|
||||
})
|
||||
|
||||
|
|
Reference in a new issue