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 = {
expand = function(args) completeopt = "menu,menuone,preview,noselect",
luasnip.lsp_expand(args.body) },
end, snippet = { -- configure how nvim-cmp interacts with snippet engine
}, expand = function(args)
mapping = cmp.mapping.preset.insert { luasnip.lsp_expand(args.body)
['<C-n>'] = cmp.mapping.select_next_item(), end,
['<C-p>'] = cmp.mapping.select_prev_item(), },
['<C-d>'] = cmp.mapping.scroll_docs(-4), mapping = cmp.mapping.preset.insert({
['<C-f>'] = cmp.mapping.scroll_docs(4), ["<C-k>"] = cmp.mapping.select_prev_item(), -- previous suggestion
['<C-Space>'] = cmp.mapping.complete {}, ["<C-j>"] = cmp.mapping.select_next_item(), -- next suggestion
['<CR>'] = cmp.mapping.confirm { ["<C-b>"] = cmp.mapping.scroll_docs(-4),
behavior = cmp.ConfirmBehavior.Replace, ["<C-f>"] = cmp.mapping.scroll_docs(4),
select = true, ["<C-Space>"] = cmp.mapping.complete(), -- show completion suggestions
}, ["<C-e>"] = cmp.mapping.abort(), -- close completion window
['<Tab>'] = cmp.mapping(function(fallback) ["<CR>"] = cmp.mapping.confirm({ select = false }),
if cmp.visible() then }),
cmp.select_next_item() -- sources for autocompletion
elseif luasnip.expand_or_locally_jumpable() then sources = cmp.config.sources({
luasnip.expand_or_jump() { name = "luasnip" }, -- snippets
else { name = "buffer" }, -- text within current buffer
fallback() { name = "path" }, -- file system paths
end }),
end, { 'i', 's' }),
['<S-Tab>'] = cmp.mapping(function(fallback) -- configure lspkind for vs-code like pictograms in completion menu
if cmp.visible() then formatting = {
cmp.select_prev_item() format = lspkind.cmp_format({
elseif luasnip.locally_jumpable(-1) then maxwidth = 50,
luasnip.jump(-1) ellipsis_char = "...",
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}