From 01835643903048a38867045fc3ebb4ff420e17f2 Mon Sep 17 00:00:00 2001 From: zoomiti Date: Sun, 21 Aug 2022 01:54:54 -0400 Subject: [PATCH] Improved cmp config --- .config/nvim/init.vim | 94 +++++++++++++++++++++++++++---------------- 1 file changed, 60 insertions(+), 34 deletions(-) diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim index 26291c9..3110853 100644 --- a/.config/nvim/init.vim +++ b/.config/nvim/init.vim @@ -52,11 +52,15 @@ Plug 'cocopon/inspecthi.vim' if has("nvim") " LSP Plug 'neovim/nvim-lspconfig' -Plug 'hrsh7th/cmp-nvim-lsp' + Plug 'hrsh7th/nvim-cmp' " For LSP completion +Plug 'hrsh7th/cmp-nvim-lsp' Plug 'hrsh7th/cmp-path' Plug 'hrsh7th/cmp-buffer' Plug 'hrsh7th/cmp-nvim-lua' +Plug 'hrsh7th/cmp-copilot' +Plug 'onsails/lspkind.nvim' +Plug 'quangnguyen30192/cmp-nvim-ultisnips' " Debugging Plug 'mfussenegger/nvim-dap' @@ -323,60 +327,82 @@ if has("nvim") playground = { enable = true, }, - } + } --}}} require('spellsitter').setup() require'colorizer'.setup() -- Setup nvim-cmp. local cmp = require'cmp' + local lspkind = require'lspkind' + local cmp_ultisnips_mappings = require'cmp_nvim_ultisnips.mappings' cmp.setup({ - snippet = { - expand = function(args) - vim.fn["UltiSnips#Anon"](args.body) - end, + snippet = { + expand = function(args) + 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 }), - [''] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_next_item() - else - fallback() - end + mapping = { + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.close(), + [''] = cmp.mapping.confirm({ select = true }), + [''] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + else + cmp_ultisnips_mappings.expand_or_jump_forwards(fallback) + end end, { 'i', 's' }), [''] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_prev_item() - else - fallback() + if cmp.visible() then + cmp.select_prev_item() + else + cmp_ultisnips_mappings.jump_backwards(fallback) end - end, { 'i', 's' }), - }, - sources = cmp.config.sources({ + end, { 'i', 's' }), + }, + sources = cmp.config.sources({ + { name = 'copilot' }, { name = 'nvim_lsp' }, { name = 'nvim_lua' }, { name = 'ultisnips' }, { name = 'path' }, - }, { + }, { { name = 'buffer', keyword_length = 5}, - }) - }) + }), + formatting = { + format = lspkind.cmp_format { + with_text = true, + menu = { + buffer = "[buf]", + nvim_lsp = "[LSP]", + nvim_lua = "[api]", + path = "[path]", + ultisnips = "[snip]", + copilot = "[cop]", + }, + }, + }, + }) -- Setup lspconfig. local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) local function on_attach(client, bufnr) - local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end - local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end - buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', {noremap = true}) - buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', {noremap = true}) - buf_set_keymap('n', '', 'lua vim.lsp.buf.hover()', {noremap = true}) - buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') + local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end + local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end + buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', {noremap = true}) + buf_set_keymap('n', 'gt', 'lua vim.lsp.buf.type_definition()', {noremap = true}) + buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', {noremap = true}) + buf_set_keymap('n', 'r', 'lua vim.lsp.buf.rename()', {noremap = true}) + buf_set_keymap('n', ']d', 'lua vim.diagnostic.goto_next()', {noremap = true}) + buf_set_keymap('n', '[d', 'lua vim.diagnostic.goto_prev()', {noremap = true}) + buf_set_keymap('n', '', 'lua vim.lsp.buf.code_action()', {noremap = true}) + buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', {noremap = true}) + buf_set_keymap('n', '', 'lua vim.lsp.buf.hover()', {noremap = true}) + buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') end require('lspconfig')['pyright'].setup({ capabilities = capabilities, on_attach = on_attach })