Adding cmp or completion back and better this time for neovim

This commit is contained in:
Tyler Kelley 2024-05-15 13:59:17 -05:00
parent 998a11c394
commit 743c933a9b
2 changed files with 45 additions and 44 deletions

View File

@ -1,46 +1,40 @@
local cmp = require('cmp') local cmp = require("cmp")
local luasnip = require('luasnip') local luasnip = require("luasnip")
local lspkind = require("lspkind")
require('luasnip.loaders.from_vscode').lazy_load() -- loads vscode style snippets from installed plugins (e.g. friendly-snippets)
luasnip.config.setup {} require("luasnip.loaders.from_vscode").lazy_load()
cmp.setup { cmp.setup({
snippet = { completion = {
completeopt = "menu,menuone,preview,noselect",
},
snippet = { -- configure how nvim-cmp interacts with snippet engine
expand = function(args) expand = function(args)
luasnip.lsp_expand(args.body) luasnip.lsp_expand(args.body)
end, end,
}, },
mapping = cmp.mapping.preset.insert { mapping = cmp.mapping.preset.insert({
['<C-n>'] = cmp.mapping.select_next_item(), ["<C-k>"] = cmp.mapping.select_prev_item(), -- previous suggestion
['<C-p>'] = cmp.mapping.select_prev_item(), ["<C-j>"] = cmp.mapping.select_next_item(), -- next suggestion
['<C-d>'] = cmp.mapping.scroll_docs(-4), ["<C-b>"] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4), ["<C-f>"] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete {}, ["<C-Space>"] = cmp.mapping.complete(), -- show completion suggestions
['<CR>'] = cmp.mapping.confirm { ["<C-e>"] = cmp.mapping.abort(), -- close completion window
behavior = cmp.ConfirmBehavior.Replace, ["<CR>"] = cmp.mapping.confirm({ select = false }),
select = true, }),
-- sources for autocompletion
sources = cmp.config.sources({
{ name = "luasnip" }, -- snippets
{ name = "buffer" }, -- text within current buffer
{ name = "path" }, -- file system paths
}),
-- configure lspkind for vs-code like pictograms in completion menu
formatting = {
format = lspkind.cmp_format({
maxwidth = 50,
ellipsis_char = "...",
}),
}, },
['<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' },
},
}

View File

@ -191,6 +191,12 @@ in
nvim-treesitter.withAllGrammars nvim-treesitter.withAllGrammars
lualine-nvim lualine-nvim
nvim-web-devicons nvim-web-devicons
nvim-cmp
cmp-buffer
luasnip
cmp_luasnip
friendly-snippets
lspkind-nvim
comment-nvim comment-nvim
{ {
plugin = dracula-nvim; plugin = dracula-nvim;
@ -209,6 +215,7 @@ in
${builtins.readFile ../../config/nvim/keymaps.lua} ${builtins.readFile ../../config/nvim/keymaps.lua}
${builtins.readFile ../../config/nvim/plugins/alpha.lua} ${builtins.readFile ../../config/nvim/plugins/alpha.lua}
${builtins.readFile ../../config/nvim/plugins/auto-session.lua} ${builtins.readFile ../../config/nvim/plugins/auto-session.lua}
${builtins.readFile ../../config/nvim/plugins/cmp.lua}
${builtins.readFile ../../config/nvim/plugins/nvim-tree.lua} ${builtins.readFile ../../config/nvim/plugins/nvim-tree.lua}
${builtins.readFile ../../config/nvim/plugins/telescope.lua} ${builtins.readFile ../../config/nvim/plugins/telescope.lua}
${builtins.readFile ../../config/nvim/plugins/treesitter.lua} ${builtins.readFile ../../config/nvim/plugins/treesitter.lua}