nvim: Switch deprecated nvim-compe
Switched out the deprecated nvim-compe for nvim-cmp and re-added most of the plugins that the earlier one supported. The handling is very similar and it supports the same snippet engine (vsnip in this case).
This commit is contained in:
parent
333e2580f0
commit
e64df2ec3d
4 changed files with 118 additions and 46 deletions
|
@ -1,8 +1,4 @@
|
|||
require('nvim-autopairs').setup({check_ts = true})
|
||||
require("nvim-autopairs.completion.compe").setup({
|
||||
map_cr = true, -- map <CR> on insert mode
|
||||
map_complete = true -- it will auto insert `(` after select function or method item
|
||||
})
|
||||
|
||||
--- Auto-space rules
|
||||
local npairs = require 'nvim-autopairs'
|
||||
|
@ -14,3 +10,9 @@ npairs.add_rules {
|
|||
return vim.tbl_contains({'()', '[]', '{}'}, pair)
|
||||
end)
|
||||
}
|
||||
local cmp_autopairs = require('nvim-autopairs.completion.cmp')
|
||||
local cmp = require('cmp')
|
||||
cmp.event:on('confirm_done',
|
||||
cmp_autopairs.on_confirm_done({map_char = {tex = ''}}))
|
||||
-- add a lisp filetype (wrap my-function), FYI: Hardcoded = { "clojure", "clojurescript", "fennel", "janet" }
|
||||
cmp_autopairs.lisp[#cmp_autopairs.lisp + 1] = "racket"
|
||||
|
|
|
@ -1,14 +1,11 @@
|
|||
-- Settings for indentBlankline
|
||||
-- turn off for diff views since we want to compare directly
|
||||
if vim.wo.diff then
|
||||
vim.g["indent_blankline_enabled"] = false
|
||||
end
|
||||
if vim.wo.diff then vim.g["indent_blankline_enabled"] = false end
|
||||
|
||||
vim.g.indent_blankline_char = "▏"
|
||||
|
||||
vim.g.indent_blankline_filetype_exclude = {
|
||||
"help", "undotree",
|
||||
"markdown", "text", "pandoc", "rst", "asciidoc",
|
||||
"help", "undotree", "markdown", "text", "pandoc", "rst", "asciidoc",
|
||||
"vim-plug"
|
||||
}
|
||||
vim.g.indent_blankline_buftype_exclude = {"terminal"}
|
||||
|
|
|
@ -2,7 +2,23 @@ local api = vim.api
|
|||
|
||||
local saga = require 'lspsaga'
|
||||
local lspcfg = require 'lspconfig'
|
||||
local compe = require 'compe'
|
||||
local cmp = require 'cmp'
|
||||
local lspkind = require 'lspkind'
|
||||
|
||||
require"lsp_signature".setup()
|
||||
|
||||
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
|
||||
|
||||
local feedkey = function(key, mode)
|
||||
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes(key, true, true, true),
|
||||
mode, true)
|
||||
end
|
||||
|
||||
-- Enable the following language servers
|
||||
local servers = {
|
||||
|
@ -10,35 +26,77 @@ local servers = {
|
|||
-- sumneko_lua further down, needs more setup
|
||||
}
|
||||
|
||||
vim.o.completeopt = "menuone,noselect"
|
||||
-- completion sources, higher priority = closer to the top?
|
||||
compe.setup({
|
||||
source = {
|
||||
nvim_lsp = {kind = ""},
|
||||
nvim_treesitter = {kind = "⧻"},
|
||||
buffer = {kind = ""},
|
||||
path = {kind = ""},
|
||||
calc = {kind = ""},
|
||||
nvim_lua = true,
|
||||
emoji = {
|
||||
kind = "ﲃ",
|
||||
filetypes = {"markdown", "text", "pandoc", "rst", "asciidoc"}
|
||||
vim.o.completeopt = "menu,menuone,noselect"
|
||||
|
||||
-- completion items
|
||||
require('cmp').register_source('vCard', require('completion_vcard').setup_cmp(
|
||||
'~/documents/contacts/myconts'))
|
||||
vim.g.vsnip_snippet_dir = (vim.env.XDG_DATA_HOME or "~/.local/share") ..
|
||||
"/nvim/snippets"
|
||||
cmp.setup({
|
||||
snippet = {expand = function(args) vim.fn["vsnip#anonymous"](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, -- Specify `cmp.config.disable` if you want to remove the default `<C-y>` mapping.
|
||||
['<C-e>'] = cmp.mapping({
|
||||
i = cmp.mapping.abort(),
|
||||
c = cmp.mapping.close()
|
||||
}),
|
||||
-- Accept currently selected item. If none selected, `select` first item.
|
||||
-- Set `select` to `false` to only confirm explicitly selected items.
|
||||
['<CR>'] = cmp.mapping.confirm({select = false}),
|
||||
["<C-n>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
elseif vim.fn["vsnip#available"](1) == 1 then
|
||||
feedkey("<Plug>(vsnip-expand-or-jump)", "")
|
||||
elseif has_words_before() then
|
||||
cmp.complete()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, {"i", "s"}),
|
||||
|
||||
["<C-p>"] = cmp.mapping(function()
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
elseif vim.fn["vsnip#jumpable"](-1) == 1 then
|
||||
feedkey("<Plug>(vsnip-jump-prev)", "")
|
||||
end
|
||||
end, {"i", "s"})
|
||||
},
|
||||
latex_symbols = {
|
||||
kind = "λ",
|
||||
filetypes = {"markdown", "text", "pandoc", "rst", "asciidoc"}
|
||||
formatting = {
|
||||
format = lspkind.cmp_format({
|
||||
with_text = false,
|
||||
menu = ({
|
||||
buffer = "B",
|
||||
nvim_lua = "NLua",
|
||||
tmux = "τ",
|
||||
vCard = "VCARD"
|
||||
})
|
||||
})
|
||||
},
|
||||
tmux = {kind = "τ"},
|
||||
spell = {kind = "", priority = 0},
|
||||
vsnip = true
|
||||
}
|
||||
sources = cmp.config.sources({
|
||||
{name = 'path'}, {name = 'nvim_lsp'}, {name = 'treesitter'},
|
||||
{name = 'tmux'}, {name = 'vsnip'}, {name = 'latex_symbols'},
|
||||
{name = 'pandoc_references'}, {name = 'vCard'}
|
||||
}, {{name = 'buffer'}, {name = 'spell'}})
|
||||
})
|
||||
|
||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||
capabilities.textDocument.completion.completionItem.snippetSupport = true
|
||||
capabilities.textDocument.completion.completionItem.resolveSupport = {
|
||||
properties = {'documentation', 'detail', 'additionalTextEdits'}
|
||||
}
|
||||
-- Use buffer source for `/` search
|
||||
cmp.setup.cmdline('/', {sources = {{name = 'buffer'}}})
|
||||
|
||||
-- Use cmdline & path source for ':' in vim
|
||||
cmp.setup.cmdline(':', {
|
||||
sources = cmp.config.sources({{name = 'path'}}, {{name = 'cmdline'}})
|
||||
})
|
||||
|
||||
-- Setup lspconfig.
|
||||
local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp
|
||||
.protocol
|
||||
.make_client_capabilities())
|
||||
|
||||
local on_attach = function(_, _)
|
||||
-- Keybindings for LSPs
|
||||
|
@ -109,7 +167,9 @@ local on_attach = function(_, _)
|
|||
end
|
||||
|
||||
-- set up simple servers
|
||||
for _, lsp in ipairs(servers) do lspcfg[lsp].setup {on_attach = on_attach} end
|
||||
for _, lsp in ipairs(servers) do
|
||||
lspcfg[lsp].setup {on_attach = on_attach, capabilities = capabilities}
|
||||
end
|
||||
|
||||
lspcfg.efm.setup {
|
||||
on_attach = on_attach,
|
||||
|
|
|
@ -26,9 +26,10 @@ require("packer").startup(function()
|
|||
use 'jeffkreeftmeijer/vim-numbertoggle' -- toggles numbers to absolute for all buffers but the current which is relative
|
||||
use 'RRethy/vim-illuminate' -- highlight other occurences of the word under cursor
|
||||
use 'ggandor/lightspeed.nvim' -- jump between letters with improved fFtT quicksearch, mimics sneak
|
||||
use 'lukas-reineke/indent-blankline.nvim' -- show a vertical line for each indentation
|
||||
require('plug._indent-blankline')
|
||||
|
||||
-- use { -- weird errors currently
|
||||
-- 'lukas-reineke/indent-blankline.nvim', -- show a vertical line for each indentation
|
||||
-- config = function() require('plug._indent-blankline') end
|
||||
-- }
|
||||
-- files
|
||||
use 'vifm/vifm.vim' -- integrate file manager
|
||||
use {
|
||||
|
@ -125,7 +126,6 @@ require("packer").startup(function()
|
|||
|
||||
--
|
||||
-- nvim plugs
|
||||
|
||||
use 'Iron-E/nvim-cartographer' -- makes it easier to set mappings through lua
|
||||
use 'marty-oehme/zettelkasten.nvim' -- simple static markdown linking
|
||||
use {
|
||||
|
@ -145,12 +145,21 @@ require("packer").startup(function()
|
|||
|
||||
-- lsp
|
||||
use 'neovim/nvim-lspconfig' -- some commong language server configurations
|
||||
use 'tami5/lspsaga.nvim' -- nice and fast ui for lsp actions
|
||||
use 'tami5/lspsaga.nvim' -- nice and fast ui for lsp actions WILL HAVE TO BE REPLACED SOON
|
||||
use 'simrat39/symbols-outline.nvim' -- vista-like outline view for code
|
||||
use 'ray-x/lsp_signature.nvim'
|
||||
-- and completion
|
||||
use 'hrsh7th/nvim-compe' -- simple completion engine built specifically for nvim and lsp
|
||||
use 'GoldsteinE/compe-latex-symbols' -- adding unicode symbols for latex (/pandoc) files
|
||||
use {'andersevenrud/compe-tmux', branch = 'compe' } -- completion source from adjacent tmux panes
|
||||
use {
|
||||
'hrsh7th/nvim-cmp', -- simple completion engine built specifically for nvim and lsp
|
||||
requires = {
|
||||
'onsails/lspkind-nvim', 'andersevenrud/cmp-tmux', -- completion source from adjacent tmux panes
|
||||
'hrsh7th/cmp-nvim-lsp', 'hrsh7th/cmp-buffer', 'hrsh7th/cmp-path',
|
||||
'hrsh7th/cmp-cmdline', 'hrsh7th/cmp-vsnip',
|
||||
'kdheepak/cmp-latex-symbols', 'ray-x/cmp-treesitter',
|
||||
'f3fora/cmp-spell', 'jc-doyle/cmp-pandoc-references',
|
||||
'cbarrete/completion-vcard'
|
||||
}
|
||||
}
|
||||
-- snippeting
|
||||
use {"hrsh7th/vim-vsnip", event = "InsertEnter"} -- snippet engine
|
||||
use {"rafamadriz/friendly-snippets", event = "InsertEnter"} -- many snippets
|
||||
|
@ -181,5 +190,9 @@ require("packer").startup(function()
|
|||
}
|
||||
use 'p00f/nvim-ts-rainbow' -- rainbow brackets using treesitter
|
||||
use 'JoosepAlviste/nvim-ts-context-commentstring' -- improves commenting plugin above by using ts
|
||||
use {
|
||||
'lewis6991/spellsitter.nvim', -- uses treesitter to highlight spelling errors
|
||||
config = function() require('spellsitter').setup() end
|
||||
}
|
||||
|
||||
end)
|
||||
|
|
Loading…
Reference in a new issue