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
|
vim-test
|
||||||
nvim-autopairs
|
nvim-autopairs
|
||||||
camelcasemotion
|
camelcasemotion
|
||||||
nvim-compe
|
luasnip
|
||||||
vim-vsnip
|
|
||||||
|
nvim-cmp
|
||||||
|
cmp-buffer
|
||||||
|
cmp-nvim-lsp
|
||||||
|
cmp_luasnip
|
||||||
|
|
||||||
(nvim-treesitter.withPlugins (_: pkgs.tree-sitter.allGrammars))
|
(nvim-treesitter.withPlugins (_: pkgs.tree-sitter.allGrammars))
|
||||||
nvim-treesitter-context
|
nvim-treesitter-context
|
||||||
|
@ -63,6 +67,7 @@ in {
|
||||||
./which-key.lua
|
./which-key.lua
|
||||||
./gitsigns.lua
|
./gitsigns.lua
|
||||||
./test.lua
|
./test.lua
|
||||||
|
./cmp.lua
|
||||||
./lsp/extensions.lua
|
./lsp/extensions.lua
|
||||||
./lsp/lsp.lua
|
./lsp/lsp.lua
|
||||||
./lsp/mappings.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()
|
local pid = vim.fn.getpid()
|
||||||
|
|
||||||
-- lightbulb
|
-- lightbulb
|
||||||
|
@ -34,10 +18,9 @@ end
|
||||||
|
|
||||||
require('lspfuzzy').setup {}
|
require('lspfuzzy').setup {}
|
||||||
|
|
||||||
-- enable lsp snippets for nvim-compe
|
|
||||||
|
|
||||||
local config = require'lspconfig'
|
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
|
capabilities.textDocument.completion.completionItem.snippetSupport = true
|
||||||
local servers = {
|
local servers = {
|
||||||
"bashls",
|
"bashls",
|
||||||
|
@ -238,27 +221,6 @@ config.diagnosticls.setup {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
-- nvim-autoclose & nvim-compe compatibility
|
require("nvim-autopairs").setup({
|
||||||
local map = vim.api.nvim_set_keymap
|
|
||||||
local npairs = require('nvim-autopairs')
|
|
||||||
|
|
||||||
npairs.setup({
|
|
||||||
check_ts = true,
|
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
|
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
|
-- maps
|
||||||
map("n", "gd", "<cmd>lua vim.lsp.buf.definition()<CR>", { noremap = true, silent = true })
|
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 })
|
map("n", "gp", "<cmd>lua peek_definition()<CR>", { noremap = true, silent = true })
|
||||||
|
|
Loading…
Reference in a new issue