From e946aaa3812b4406b9db74191330648b8d10f8a1 Mon Sep 17 00:00:00 2001 From: "Matthias P. Braendli" Date: Thu, 25 Nov 2021 15:58:34 +0100 Subject: Updates, replace coc by lsp --- dotvimrc | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 73 insertions(+), 20 deletions(-) (limited to 'dotvimrc') diff --git a/dotvimrc b/dotvimrc index 389f41b..1c32a3a 100644 --- a/dotvimrc +++ b/dotvimrc @@ -1,6 +1,9 @@ set nocompatible syn on +set maxmempattern=32000 +" because https://github.com/vim/vim/issues/6777#issuecomment-684776825 + " Because Konsole font size " https://github.com/neovim/neovim/issues/6798 set guicursor= @@ -17,6 +20,7 @@ set pastetoggle= set textwidth=120 set backspace=eol,indent,start set number +set signcolumn=yes "set mouse=a "Disabled "set grepprg=grep\ -nH\ $* set grepprg=rg\ --vimgrep\ $* @@ -40,6 +44,7 @@ set guioptions-=T " remove menu set guioptions-=m + set formatoptions+=j " Delete comment character when joining commented lines set history=1000 @@ -60,29 +65,78 @@ Plug 'scrooloose/nerdtree' Plug 'majutsushi/tagbar' Plug 'vim-scripts/taglist.vim' Plug 'tpope/vim-fugitive' -call plug#end() +Plug 'https://gitlab.com/Nate_B/vim-adif' -"Plug 'CoatiSoftware/vim-sourcetrail' -"nnoremap sr :SourcetrailRefresh -"nnoremap sa :SourcetrailActivateToken - -set runtimepath+=~/.vim/LanguageClient-neovim -" Required for operations modifying multiple buffers like rename. +if has("nvim") + Plug 'neovim/nvim-lspconfig' +endif -let g:LanguageClient_serverCommands = { - \ 'rust': ['rust-analyzer'], - \ 'python': ['pyls'], - \ 'cpp': ['clangd'], - \ 'c': ['clangd'] } +"Plug 'neoclide/coc.nvim', {'branch': 'release'} +call plug#end() -let g:LanguageClient_useVirtualText = "No" -let g:LanguageClient_autoStart = 0 +" dotnet tool install -g csharp-ls -nnoremap :call LanguageClient_contextMenu() -nnoremap gd :call LanguageClient#textDocument_definition() -nnoremap :call LanguageClient#textDocument_rename() +if has("nvim") + lua << EOF + local nvim_lsp = require('lspconfig') + + -- For debugging, use :LspInfo + --vim.lsp.set_log_level("debug") + -- Retrieve logs using :lua vim.cmd('e'..vim.lsp.get_log_path()) + + vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with( + vim.lsp.diagnostic.on_publish_diagnostics, { + signs = false, + } + ) + + -- Use an on_attach function to only map the following keys + -- after the language server attaches to the current buffer + local on_attach = function(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 + + -- Enable completion triggered by + 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) + --buf_set_keymap('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) + --buf_set_keymap('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) + --buf_set_keymap('n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) + --buf_set_keymap('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) + buf_set_keymap('n', 'r', 'lua vim.lsp.buf.rename()', opts) + buf_set_keymap('n', 'c', 'lua vim.lsp.buf.code_action()', opts) + buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) + buf_set_keymap('n', 'e', 'lua vim.lsp.diagnostic.show_line_diagnostics()', opts) + buf_set_keymap('n', '[d', 'lua vim.lsp.diagnostic.goto_prev()', opts) + 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) + + end + + -- Use a loop to conveniently call 'setup' on multiple servers and + -- map buffer local keybindings when the language server attaches + local servers = { 'clangd', 'rust_analyzer', 'pylsp', 'csharp_ls', 'tsserver' } + for _, lsp in ipairs(servers) do + nvim_lsp[lsp].setup { + on_attach = on_attach, + flags = { + debounce_text_changes = 150, + } + } + end +EOF +endif -set completefunc=LanguageClient#complete if executable('rg') let g:ackprg = "rg -ui --vimgrep" @@ -240,7 +294,6 @@ endpython endfun noremap :call MPB_Flip_Ext() -noremap f :call MPB_Flip_Ext() " Added for QSO logging function! MPB_Prepend_Time() @@ -312,7 +365,7 @@ noremap ]h :GitGutterNextHunk "GIT stuff noremap gt :call TimeLapse() -noremap gb :Gblame +noremap gb :Git blame noremap e :NERDTreeToggle -- cgit v1.2.3