feat(neovim): replace nvim-compe with nvim-cmp

This commit is contained in:
Felix Schröter 2022-03-30 11:30:29 +02:00
parent ca3036fc60
commit ec464af8e5
Signed by: felschr
GPG key ID: 671E39E6744C807D
4 changed files with 69 additions and 53 deletions

View file

@ -0,0 +1,59 @@
local cmp = require("cmp")
local luasnip = require("luasnip")
-- vim.opt.completeopt="menuone,noinsert" -- TODO
vim.opt.completeopt="menu,menuone,noselect"
vim.opt.shortmess:append("c")
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
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" }),
["<C-Space>"] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }),
["<C-y>"] = cmp.config.disable,
["<C-e>"] = cmp.mapping({
i = cmp.mapping.abort(),
c = cmp.mapping.close(),
}),
["<CR>"] = cmp.mapping.confirm({ select = true }),
["<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({
{ name = "nvim_lsp" },
{ name = "luasnip" },
}, {
{ name = "buffer" },
})
})
local cmp_autopairs = require("nvim-autopairs.completion.cmp")
cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done({ map_char = { tex = "" } }))

View file

@ -33,8 +33,12 @@ in {
vim-test
nvim-autopairs
camelcasemotion
nvim-compe
vim-vsnip
luasnip
nvim-cmp
cmp-buffer
cmp-nvim-lsp
cmp_luasnip
(nvim-treesitter.withPlugins (_: pkgs.tree-sitter.allGrammars))
nvim-treesitter-context
@ -63,6 +67,7 @@ in {
./which-key.lua
./gitsigns.lua
./test.lua
./cmp.lua
./lsp/extensions.lua
./lsp/lsp.lua
./lsp/mappings.lua

View file

@ -1,19 +1,3 @@
-- autocomplete config
vim.opt.completeopt="menuone,noinsert"
vim.opt.shortmess:append("c")
require'compe'.setup {
enabled = true,
preselect = "always",
allow_prefix_unmatch = true,
source = {
path = true,
calc = true,
nvim_lsp = true,
vsnip = true,
},
}
local pid = vim.fn.getpid()
-- lightbulb
@ -34,10 +18,9 @@ end
require('lspfuzzy').setup {}
-- enable lsp snippets for nvim-compe
local config = require'lspconfig'
local capabilities = vim.lsp.protocol.make_client_capabilities()
local capabilities_ = vim.lsp.protocol.make_client_capabilities()
local capabilities = require("cmp_nvim_lsp").update_capabilities(capabilities_)
capabilities.textDocument.completion.completionItem.snippetSupport = true
local servers = {
"bashls",
@ -238,27 +221,6 @@ config.diagnosticls.setup {
},
}
-- nvim-autoclose & nvim-compe compatibility
local map = vim.api.nvim_set_keymap
local npairs = require('nvim-autopairs')
npairs.setup({
require("nvim-autopairs").setup({
check_ts = true,
})
_G.MUtils= {}
vim.g.completion_confirm_key = ""
MUtils.completion_confirm=function()
if vim.fn.pumvisible() ~= 0 then
if vim.fn.complete_info()["selected"] ~= -1 then
return vim.fn["compe#confirm"](npairs.esc("<cr>"))
else
return npairs.esc("<cr>")
end
else
return npairs.autopairs_cr()
end
end
map('i' , '<CR>','v:lua.MUtils.completion_confirm()', {expr = true , noremap = true})

View file

@ -1,15 +1,5 @@
local map = vim.api.nvim_set_keymap
map("i", "<C-Space>", "compe#complete()", { noremap = true, expr = true, silent = true })
map("i", "<CR>", "compe#confirm('<CR>')", { noremap = true, expr = true, silent = true })
map("i", "<C-e>", "compe#close('<C-e>')", { noremap = true, expr = true, silent = true })
map("i", "<C-f>", "compe#scroll({ 'delta': +4 })", { noremap = true, expr = true, silent = true })
map("i", "<C-d>", "compe#scroll({ 'delta': -4 })", { noremap = true, expr = true, silent = true })
-- Use <Tab> and <S-Tab> to navigate through popup menu
map("i", "<Tab>", "pumvisible() ? '<C-n>' : '<Tab>'", { noremap = true, expr = true })
map("i", "<S-Tab>", "pumvisible() ? '<C-p>' : '<S-Tab>'", { noremap = true, expr = true })
-- maps
map("n", "gd", "<cmd>lua vim.lsp.buf.definition()<CR>", { noremap = true, silent = true })
map("n", "gp", "<cmd>lua peek_definition()<CR>", { noremap = true, silent = true })