From 97aee75d0b92943a661062bfa8951b20b89db554 Mon Sep 17 00:00:00 2001 From: Sonny Bakker Date: Wed, 24 Nov 2021 12:49:25 +0100 Subject: [PATCH] Use neovim's built-in lsp client Current configuration depends on nvim-cmp and cmp-nvim-lsp for autocompletion --- nvim/init.lua | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 72 insertions(+), 1 deletion(-) diff --git a/nvim/init.lua b/nvim/init.lua index 82a03bc..4fbba5e 100644 --- a/nvim/init.lua +++ b/nvim/init.lua @@ -76,10 +76,81 @@ vim.cmd[[ \ expandtab autoindent ]] ---Color trailing spaces with red color +--color trailing spaces with red color vim.cmd('highlight ExtraWhitespace ctermbg=green guibg=green') vim.cmd('match ExtraWhitespace /s+$/') vim.cmd('autocmd BufWinEnter * match ExtraWhitespace /s+$/') vim.cmd('autocmd InsertEnter * match ExtraWhitespace /s+%#@ + buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') + + -- Mappings. + local opts = { noremap=true, silent=true } + + --see `:help vim.lsp.*` for documentation on any of the below functions + buf_set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) + buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) + buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) + buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) + buf_set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) +end + +--enable some language servers with the additional completion capabilities +--offered by nvim-cmp +local servers = { 'pyright', } +for _, lsp in ipairs(servers) do + nvim_lsp[lsp].setup { + on_attach = on_attach, + capabilities = capabilities, + } +end + +--nvim-cmp setup +local cmp = require('cmp') +cmp.setup { + mapping = { + [''] = cmp.mapping.select_prev_item(), + [''] = cmp.mapping.select_next_item(), + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.close(), + [''] = cmp.mapping.confirm { + behavior = cmp.ConfirmBehavior.Replace, + select = true, + }, + [''] = function(fallback) + if cmp.visible() then + cmp.select_next_item() + else + fallback() + end + end, + [''] = function(fallback) + if cmp.visible() then + cmp.select_prev_item() + else + fallback() + end + end, + }, + sources = { + { name = 'nvim_lsp' }, + }, +}