diff --git a/.config/nvim/after/plugin/lspconfig.rc.vim b/.config/nvim/after/plugin/lspconfig.rc.vim index af0b036..f133f79 100644 --- a/.config/nvim/after/plugin/lspconfig.rc.vim +++ b/.config/nvim/after/plugin/lspconfig.rc.vim @@ -36,7 +36,6 @@ local on_attach = function(client, bufnr) buf_set_keymap('n', ']d', 'lua vim.lsp.diagnostic.goto_next()', opts) buf_set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) buf_set_keymap("n", "f", "lua vim.lsp.buf.formatting()", opts) - require'completion'.on_attach() end vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with( @@ -56,7 +55,8 @@ vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with( nvim_lsp.groovyls.setup { cmd = { "java", "-jar", "/home/kmcr/tools/groovy-language-server/build/libs/groovy-language-server-all.jar" }, on_attach = on_attach, - on_publish_diagnostics = diagnostic_handler + on_publish_diagnostics = diagnostic_handler, + capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) } nvim_lsp.ccls.setup { @@ -70,16 +70,35 @@ nvim_lsp.ccls.setup { }, }, on_attach = on_attach, - on_publish_diagnostics = diagnostic_handler + on_publish_diagnostics = diagnostic_handler, + capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) +} + +nvim_lsp.pylsp.setup { + settings = { + pylint = { + enabled = false + }, + pyflakes = { + enabled = false, + }, + }, + flags = { + debounce_text_changes = 150, + }, + on_attach = on_attach, + on_publish_diagnostics = diagnostic_handler, + capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) } -- Use a loop to conveniently call 'setup' on multiple servers and -- map buffer local keybindings when the language server attaches -local servers = { "pylsp", "cmake", "rust_analyzer" } +local servers = { "cmake", "rust_analyzer" } for _, lsp in ipairs(servers) do nvim_lsp[lsp].setup { on_attach = on_attach, - on_publish_diagnostics = diagnostic_handler + on_publish_diagnostics = diagnostic_handler, + capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) } end EOF diff --git a/.config/nvim/after/plugin/lspsaga.rc.vim b/.config/nvim/after/plugin/lspsaga.rc.vim deleted file mode 100644 index 5026974..0000000 --- a/.config/nvim/after/plugin/lspsaga.rc.vim +++ /dev/null @@ -1,45 +0,0 @@ -lua << EOF -local saga = require 'lspsaga' - --- add your config value here --- default value --- use_saga_diagnostic_sign = true --- error_sign = '', --- warn_sign = '', --- hint_sign = '', --- infor_sign = '', --- dianostic_header_icon = '  ', --- code_action_icon = ' ', --- code_action_prompt = { --- enable = true, --- sign = true, --- sign_priority = 20, --- virtual_text = true, --- }, --- finder_definition_icon = ' ', --- finder_reference_icon = ' ', --- max_preview_lines = 10, -- preview lines of lsp_finder and definition preview --- finder_action_keys = { --- open = 'o', vsplit = 's',split = 'i',quit = 'q',scroll_down = '', scroll_up = '' -- quit can be a table --- }, --- code_action_keys = { --- quit = 'q',exec = '' --- }, --- rename_action_keys = { --- quit = '',exec = '' -- quit can be a table --- }, --- definition_preview_icon = ' ' --- "single" "double" "round" "plus" --- border_style = "single" --- rename_prompt_prefix = '➤', --- if you don't use nvim-lspconfig you must pass your server name and --- the related filetypes into this table --- like server_filetype_map = {metals = {'sbt', 'scala'}} --- server_filetype_map = {} - ---saga.init_lsp_saga { --- your custom option here ---} -saga.init_lsp_saga() - -EOF diff --git a/.config/nvim/after/plugin/nvim-cmp.rc.vim b/.config/nvim/after/plugin/nvim-cmp.rc.vim new file mode 100644 index 0000000..d040c28 --- /dev/null +++ b/.config/nvim/after/plugin/nvim-cmp.rc.vim @@ -0,0 +1,38 @@ +lua << EOF + +-- Setup nvim-cmp. + local cmp = require'cmp' + + cmp.setup({ + snippet = { + expand = function(args) + -- For `vsnip` user. + vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` user. + + -- For `luasnip` user. + -- require('luasnip').lsp_expand(args.body) + + -- For `ultisnips` user. + vim.fn["UltiSnips#Anon"](args.body) + end, + }, + mapping = { + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.close(), + [''] = cmp.mapping.confirm({ select = true }), + }, + sources = { + { name = 'nvim_lsp' }, + + { name = 'path' }, + + { name = 'ultisnips' }, + + { name = 'buffer' }, + + { name = 'calc' }, + } + }) +EOF diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim index 0fa4d8a..1a946fd 100644 --- a/.config/nvim/init.vim +++ b/.config/nvim/init.vim @@ -13,16 +13,24 @@ call plug#begin('~/.config/nvim/plugins') " Code development helpers {{{ Plug 'neovim/nvim-lspconfig' -Plug 'glepnir/lspsaga.nvim' +"Plug 'glepnir/lspsaga.nvim' Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets' Plug 'wellle/context.vim' Plug 'dbeniamine/cheat.sh-vim' Plug 'puremourning/vimspector' Plug 'derekwyatt/vim-fswitch' -Plug 'nvim-lua/completion-nvim' Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} " }}} +" Completion {{{ +Plug 'hrsh7th/cmp-nvim-lsp' +Plug 'hrsh7th/cmp-buffer' +Plug 'hrsh7th/cmp-path' +Plug 'hrsh7th/cmp-calc' +Plug 'hrsh7th/nvim-cmp' +Plug 'quangnguyen30192/cmp-nvim-ultisnips' +" }}} + " Files switch, jump and grep-like tools {{{ "Plug 'preservim/nerdtree' | Plug 'Xuyuanp/nerdtree-git-plugin' Plug 'Shougo/defx.nvim', { 'do': ':UpdateRemotePlugins' }