From 7c2ea00eae7c273bb26181d2fa438076c3ac8446 Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Sun, 13 Jun 2021 13:56:45 +0200 Subject: Setup neovim lsp --- vim/.config/nvim/init.vim | 4 ++ vim/.config/nvim/lua/lsp/init.lua | 91 +++++++++++++++++++++++++++++++++++++++ vim/.vimrc | 35 +++++++++++++-- 3 files changed, 126 insertions(+), 4 deletions(-) create mode 100644 vim/.config/nvim/lua/lsp/init.lua (limited to 'vim') diff --git a/vim/.config/nvim/init.vim b/vim/.config/nvim/init.vim index f182e5b..43ad269 100644 --- a/vim/.config/nvim/init.vim +++ b/vim/.config/nvim/init.vim @@ -1,3 +1,7 @@ set runtimepath^=~/.vim runtimepath+=~/.vim/after let &packpath = &runtimepath source ~/.vimrc + +lua <lua vim.lsp.diagnostic.goto_prev()', opts) + buf_set_keymap('n', ']d', 'lua vim.lsp.diagnostic.goto_next()', opts) + buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) + buf_set_keymap('n', 'ca', 'lua vim.lsp.buf.code_action()', opts) + buf_set_keymap('n', 'f', 'lua vim.lsp.buf.formatting()', opts) + buf_set_keymap('n', 't', 'lua vim.lsp.buf.type_definition()', opts) + buf_set_keymap('n', 'd', 'lua vim.lsp.diagnostic.show_line_diagnostics {show_header=false}', opts) +end + +local default_config = { + on_attach = on_attach +} + +local servers = { + hls = {} +} + +local nvim_lsp = require('lspconfig') +for server, config in pairs(servers) do + nvim_lsp[server].setup(vim.tbl_deep_extend('force', default_config, config)) +end diff --git a/vim/.vimrc b/vim/.vimrc index f3aed99..4e25604 100644 --- a/vim/.vimrc +++ b/vim/.vimrc @@ -34,6 +34,10 @@ Plugin 'google/vim-searchindex' " shows '[N/M]' when searching " Color schemes Plugin 'NLKNguyen/papercolor-theme' +if has('nvim') + Plugin 'neovim/nvim-lspconfig' " Language Server Protocol configs +endif + call vundle#end() " End Vundle @@ -80,6 +84,7 @@ highlight SpellBad cterm=underline,bold ctermfg=black ctermbg=red highlight SpellCap cterm=underline,bold ctermfg=black ctermbg=yellow highlight SpellLocal cterm=underline,bold ctermfg=black ctermbg=blue highlight SpellRare cterm=underline,bold ctermfg=black ctermbg=white + highlight ColorColumn ctermfg=black ctermbg=yellow " The terminal background (set in .Xresources) is the background for that part @@ -109,7 +114,26 @@ function! s:detect_terminal_line_border() call s:set_terminal_line_border('1c1c1c') endif endfunction -autocmd VimEnter,ColorScheme * call s:detect_terminal_line_border() + +function! s:colorscheme_changed() + call s:detect_terminal_line_border() + + if has('nvim') + " See https://github.com/neovim/nvim-lspconfig/issues/516 + lua require('vim.lsp.diagnostic')._define_default_signs_and_highlights() + + highlight LspDiagnosticsDefaultError ctermfg=red + highlight LspDiagnosticsSignError ctermfg=red + highlight LspDiagnosticsDefaultWarning ctermfg=brown + highlight LspDiagnosticsSignWarning ctermfg=brown + highlight LspDiagnosticsDefaultInformation ctermfg=yellow + highlight LspDiagnosticsSignInformation ctermfg=yellow + highlight LspDiagnosticsDefaultHint ctermfg=yellow + highlight LspDiagnosticsSignHint ctermfg=yellow + endif +endfunction + +autocmd VimEnter,ColorScheme * call s:colorscheme_changed() " When we leave vim we restore the value set also in .Xresources autocmd VimLeave * call s:set_terminal_line_border('002b36') @@ -125,8 +149,8 @@ map s :syn sync fromstart function! s:enable_automatic_background() augroup bg - autocmd bg BufEnter * set bg=dark | call s:detect_terminal_line_border() - autocmd bg BufEnter *.bib,*.md,*.tex,*.txt set bg=light | call s:detect_terminal_line_border() + autocmd bg BufEnter * set background=dark | call s:colorscheme_changed() + autocmd bg BufEnter *.bib,*.md,*.tex,*.txt set background=light | call s:colorscheme_changed() augroup END endfunction @@ -160,7 +184,10 @@ let g:VM_case_setting = 'sensitive' " Don't let match-up mess up the statusline let g:matchup_matchparen_status_offscreen=0 -" Clean +" Status line based on LSP +set statusline+=%{luaeval('lsp_first_hover_code()')} + +" Clean has no language server, we use the cloogletags statusline component set statusline+=%{cleanvim#tags#statusline()} " Git gutter -- cgit v1.2.3