feat(neovim): replace nvim-compe with nvim-cmp
This commit is contained in:
parent
ca3036fc60
commit
ec464af8e5
59
home/editors/neovim/cmp.lua
Normal file
59
home/editors/neovim/cmp.lua
Normal 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 = "" } }))
|
|
@ -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
|
||||
|
|
|
@ -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})
|
||||
|
|
|
@ -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 })
|
||||
|
|
Loading…
Reference in a new issue