From d0a301d5573659b89b6a933d555e6541de5e69b2 Mon Sep 17 00:00:00 2001 From: Alexander Gehrke Date: Tue, 21 Sep 2021 16:42:46 +0200 Subject: [PATCH] Switch from deprecated compe to successor cmp --- init.vim | 3 +-- lua/conf/compe.lua | 39 +++++++++++++++++++++++++++++++++++++++ lua/my-lsp.lua | 2 +- packages.vim | 14 ++++++++++---- 4 files changed, 51 insertions(+), 7 deletions(-) diff --git a/init.vim b/init.vim index cc897d1..e4a70ac 100644 --- a/init.vim +++ b/init.vim @@ -55,8 +55,6 @@ set hidden " set completeopt=menu,noinsert,preview set completeopt=menuone,noinsert,noselect set shortmess+=c -imap (completion_smart_tab) -imap (completion_smart_s_tab) inoremap pumvisible() ? "\" : "\u\" set mouse= @@ -180,5 +178,6 @@ let g:localvimrc_sandbox=0 lua require("my-lsp") lua require("lsputils") "lua require("conf.compe") +lua require("conf.cmp") lua require("conf.trouble") " vi:foldmethod=marker sw=2 diff --git a/lua/conf/compe.lua b/lua/conf/compe.lua index 5bbdc83..c430800 100644 --- a/lua/conf/compe.lua +++ b/lua/conf/compe.lua @@ -31,3 +31,42 @@ require'compe'.setup { luasnip = true; }; } + +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 + return col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') ~= nil +end + +-- Use (s-)tab to: +--- move to prev/next item in completion menuone +--- jump to prev/next snippet's placeholder +_G.tab_complete = function() + if vim.fn.pumvisible() == 1 then + return t "" + elseif vim.fn['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 "" + elseif vim.fn['vsnip#jumpable'](-1) == 1 then + return t "(vsnip-jump-prev)" + else + -- If is not working in your terminal, change it to + return t "" + end +end + +vim.api.nvim_set_keymap("i", "", "v:lua.tab_complete()", {expr = true}) +vim.api.nvim_set_keymap("s", "", "v:lua.tab_complete()", {expr = true}) +vim.api.nvim_set_keymap("i", "", "v:lua.s_tab_complete()", {expr = true}) +vim.api.nvim_set_keymap("s", "", "v:lua.s_tab_complete()", {expr = true}) diff --git a/lua/my-lsp.lua b/lua/my-lsp.lua index ee80fa0..e0991e1 100644 --- a/lua/my-lsp.lua +++ b/lua/my-lsp.lua @@ -39,7 +39,7 @@ local on_attach = function(client, bufnr) buf_set_keymap('n', ']d', 'lua vim.lsp.diagnostic.goto_next()', opts) buf_set_keymap('n', '', 'lua vim.lsp.diagnostic.set_loclist()', opts) buf_set_keymap("n", "f", "lua vim.lsp.buf.formatting()", opts) - require'completion'.on_attach(client, bufnr) + --require'completion'.on_attach(client, bufnr) end diff --git a/packages.vim b/packages.vim index 84d3bf5..9d4cd2e 100644 --- a/packages.vim +++ b/packages.vim @@ -4,8 +4,8 @@ call plug#begin(expand(':p:h') . '/plugged') Plug 'pbrisbin/vim-mkdir' Plug 'embear/vim-localvimrc' -"Plug 'crater2150/vim-theme-chroma' -Plug '~/sources/chroma-colors/vim' +Plug 'crater2150/vim-theme-chroma' +"Plug '~/sources/chroma-colors/vim' Plug 'fladson/vim-kitty' " tim pope stuff @@ -31,8 +31,14 @@ Plug 'mhinz/vim-signify' Plug 'neovim/nvim-lspconfig' Plug 'kabouzeid/nvim-lspinstall' Plug 'scalameta/nvim-metals' -" Plug 'hrsh7th/nvim-compe' -Plug 'nvim-lua/completion-nvim' +"Plug 'hrsh7th/nvim-compe' +Plug 'hrsh7th/nvim-cmp' +Plug 'hrsh7th/cmp-buffer' +Plug 'hrsh7th/cmp-path' +Plug 'hrsh7th/cmp-nvim-lsp' +Plug 'hrsh7th/vim-vsnip' +Plug 'hrsh7th/vim-vsnip-integ' +"Plug 'nvim-lua/completion-nvim' Plug 'nvim-treesitter/nvim-treesitter', {'branch': '0.5-compat', 'do': ':TSUpdate'} Plug 'nvim-lua/lsp-status.nvim' Plug 'RishabhRD/popfix'