diff --git a/nvim/.config/nvim/after/plugin/cmp.lua b/nvim/.config/nvim/after/plugin/cmp.lua new file mode 100644 index 0000000..b961e79 --- /dev/null +++ b/nvim/.config/nvim/after/plugin/cmp.lua @@ -0,0 +1,54 @@ +local cmp = require 'cmp' +local lspkind = require 'lspkind' + +cmp.setup { + formatting = { + format = function(entry, vim_item) + vim_item.menu = ({ + buffer = '[Buffer]', + nvim_lsp = '[Lsp]', + nvim_lua = '[Lua]', + path = '[Path]', + vsnip = '[Snippet]', + })[entry.source.name] + vim_item.kind = lspkind.presets.default[vim_item.kind] + return vim_item + end, + }, + snippet = { + expand = function (args) + vim.fn["vsnip#anonymous"](args.body) + end + }, + documentation = { + border = 'rounded' + }, + mapping = { + [''] = cmp.mapping.confirm({ + behavior = cmp.ConfirmBehavior.Replace, + select = true + }), + }, + sources = { + { + name = 'nvim_lsp', + priority = 100 + }, + { + name = 'vsnip', + priority = 80 + }, + { + name = 'nvim_lua', + priority = 50 + }, + { + name = 'buffer', + priority = 20 + }, + { + name = 'path', + priority = 5 + }, + } +} diff --git a/nvim/.config/nvim/after/plugin/completion.lua b/nvim/.config/nvim/after/plugin/completion.lua deleted file mode 100644 index f1c23d7..0000000 --- a/nvim/.config/nvim/after/plugin/completion.lua +++ /dev/null @@ -1,82 +0,0 @@ -local remap = vim.api.nvim_set_keymap - -require'compe'.setup { - enabled = true; - autocomplete = false; - debug = false; - min_length = 1; - preselect = 'enable'; - throttle_time = 80; - source_timeout = 200; - resolve_timeout = 800; - incomplete_delay = 400; - max_abbr_width = 100; - max_kind_width = 100; - max_menu_width = 100; - documentation = { - border = { '', '' ,'', ' ', '', '', '', ' ' }, - winhighlight = "NormalFloat:CompeDocumentation,FloatBorder:CompeDocumentationBorder", - max_width = 120, - min_width = 60, - max_height = math.floor(vim.o.lines * 0.3), - min_height = 1, - }; - - source = { - path = true; - buffer = true; - calc = true; - nvim_lsp = true; - nvim_lua = true; - omni = false; - spell = true; - tags = false; - treesitter = true; - snippets_nvim = false; - vsnip = true; - ultisnips = false; - luasnip = false; - emoji = false; - }; -} - -local t = function(str) - return vim.api.nvim_replace_termcodes(str, true, true, true) -end - -local check_back_space = function() - local col = vim.fn.col('.') - 1 - if col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') then - return true - else - return false - end -end - --- Use (S-)tab to: --- Move to prev/next item in completion menuone - -_G.tab_complete = function() - if vim.fn.pumvisible() == 1 then - return t "" - elseif vim.fn.call("vsnip#available", {1}) == 1 then - return t "(vsnip-expand-or-jump)" - elseif check_back_space() then - return t "" - else - return vim.fn['compe#complete']() - end -end - -_G.s_tab_complete = function() - if vim.fn.pumvisible() == 1 then - return t "" - else - return t "" - end -end - -remap("i", "", "v:lua.tab_complete()", {expr = true}) -remap("s", "", "v:lua.tab_complete()", {expr = true}) -remap("i", "", "v:lua.s_tab_complete()", {expr = true}) -remap("s", "", "v:lua.s_tab_complete()", {expr = true}) diff --git a/nvim/.config/nvim/lua/lsp.lua b/nvim/.config/nvim/lua/lsp.lua index 630ba41..aa7cb8c 100644 --- a/nvim/.config/nvim/lua/lsp.lua +++ b/nvim/.config/nvim/lua/lsp.lua @@ -168,7 +168,7 @@ function set_snippet_capabilities() 'additionalTextEdits', } } - return capabilities + return require('cmp_nvim_lsp').update_capabilities(capabilities) end -- This should be called only once, so cannot be in on_attach as earlier. @@ -188,6 +188,7 @@ end nvim_lsp.clangd.setup { on_attach = on_attach, + capabilities = set_snippet_capabilities(), default_config = { cmd = { "clangd", "--background-index", "--pch-storage=memory", "--clang-tidy", "--suggest-missing-includes" }, filetypes = { 'c', 'cpp' }, @@ -283,6 +284,7 @@ table.insert(runtime_path, "lua/?/init.lua") nvim_lsp.sumneko_lua.setup { cmd = { "/usr/bin/lua-language-server" }; on_attach = on_attach, + capabilities = set_snippet_capabilities(), settings = { Lua = { runtime = { diff --git a/nvim/.config/nvim/lua/plugins.lua b/nvim/.config/nvim/lua/plugins.lua index 8862d32..19daf78 100644 --- a/nvim/.config/nvim/lua/plugins.lua +++ b/nvim/.config/nvim/lua/plugins.lua @@ -19,7 +19,17 @@ local init = function () -- Manage Project sessions use 'thaerkh/vim-workspace' -- For autocompletion - use 'hrsh7th/nvim-compe' + use { + 'hrsh7th/nvim-cmp', + requires = { + 'hrsh7th/cmp-nvim-lsp', + 'hrsh7th/cmp-nvim-lua', + 'hrsh7th/cmp-buffer', + 'hrsh7th/cmp-vsnip', + 'hrsh7th/cmp-path', + 'onsails/lspkind-nvim' + } + } -- Git support use 'lewis6991/gitsigns.nvim' use 'tpope/vim-fugitive'