From a9a1a5edb5ad623f7087610dd2986dfdde16af59 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Philippe=20H=C3=BCrlimann?= Date: Wed, 4 Sep 2024 15:26:32 +0200 Subject: [PATCH] switch to neovim builtin LSP client --- ftplugin/go.vim | 8 +++-- init.vim | 77 +++++++++++++++++++++++++++++-------------------- settings.json | 23 --------------- 3 files changed, 51 insertions(+), 57 deletions(-) delete mode 100644 settings.json diff --git a/ftplugin/go.vim b/ftplugin/go.vim index b78b44c..79c0bd3 100644 --- a/ftplugin/go.vim +++ b/ftplugin/go.vim @@ -1,5 +1,9 @@ -let g:go_metalinter_autosave=1 -let g:go_auto_type_info=1 +let g:go_auto_type_info = 1 +let g:go_def_mapping_enabled = 0 +let g:go_gopls_enabled = 0 +let g:go_jump_to_error = 0 +let g:go_metalinter_autosave = 1 +let g:go_code_completion_enabled = 0 nmap gtt (go-test) nmap gtf (go-test-func) diff --git a/init.vim b/init.vim index 613e472..6f502f5 100644 --- a/init.vim +++ b/init.vim @@ -6,7 +6,6 @@ call plug#begin('~/.local/share/nvim/plugged') Plug 'airblade/vim-gitgutter' Plug 'ap/vim-css-color' -Plug 'autozimu/LanguageClient-neovim', { 'branch': 'next', 'do': 'bash install.sh' } Plug 'avakhov/vim-yaml' Plug 'dhruvasagar/vim-table-mode' Plug 'editorconfig/editorconfig-vim' @@ -21,6 +20,7 @@ Plug 'LnL7/vim-nix' Plug 'luochen1990/rainbow' Plug 'mileszs/ack.vim' Plug 'nanotech/jellybeans.vim' +Plug 'neovim/nvim-lspconfig' Plug 'pbrisbin/html-template-syntax' Plug 'Raimondi/delimitMate' Plug 'rhysd/vim-clang-format' @@ -65,37 +65,6 @@ set laststatus=2 set hidden -let g:LanguageClient_settingsPath = expand('~/.config/nvim/settings.json') -let g:LanguageClient_serverCommands = { - \ 'c': ['ccls', '--log-file=/tmp/ccls.log'], - \ 'cpp': ['ccls', '--log-file=/tmp/ccls.log'], - \ 'java': ['jdtls'], - \ 'go': ['gopls'], - \ 'haskell': ['hie-wrapper', '-d', '-l', '/tmp/hie.log'], - \ 'perl': ['perl', '-MPerl::LanguageServer', '-e', 'Perl::LanguageServer::run'], - \ 'python': ['pyls', '-v', '--log-file','/tmp/pyls.log'], - \ 'rust': ['rust-analyzer'], - \} - -function LC_maps() - if has_key(g:LanguageClient_serverCommands, &filetype) - nmap (lcn-menu) - nmap K (lcn-hover) - nmap gd (lcn-definition) - nmap (lcn-rename) - nmap gD (lcn-type-definition) - nmap la (lcn-code-action) - vmap la (lcn-code-action) - nmap lr (lcn-references) - nmap li (lcn-implementation) - nmap lf (lcn-format) - nmap ls (lcn-symbols) - nmap lh (lcn-highlight) - endif -endfunction - -autocmd FileType * call LC_maps() - imap (neosnippet_expand_or_jump) smap (neosnippet_expand_or_jump) xmap (neosnippet_expand_target) @@ -144,3 +113,47 @@ let g:ctrlp_custom_ignore = 'node_modules\|git' let g:ctrlp_working_path_mode = 0 let g:EditorConfig_exclude_patterns = ['fugitive://.*'] + +" TODO: find replacement for this mapping +"nmap (lcn-menu) + +lua << EOF +local opts = { buffer = bufnr, noremap = true, silent = true } +vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts) +vim.keymap.set('n', 'gD', vim.lsp.buf.type_definition, opts) +vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts) +vim.keymap.set('n', '', vim.lsp.buf.rename, opts) +vim.keymap.set('n', 'la', vim.lsp.buf.code_action, opts) +vim.keymap.set('v', 'la', vim.lsp.buf.code_action, opts) +vim.keymap.set('n', 'lr', vim.lsp.buf.references) +vim.keymap.set('n', 'li', vim.lsp.buf.implementation, opts) +vim.keymap.set('n', 'lf', vim.lsp.buf.format, opts) +vim.keymap.set('n', 'ls', vim.lsp.buf.document_symbol, opts) +vim.keymap.set('n', 'lh', vim.lsp.buf.document_highlight, opts) + +local util = require 'lspconfig.util' + +require'lspconfig'.gopls.setup{cmd = {'gopls', '-v', 'serve', '-debug=localhost:6060', '-logfile=/tmp/gopls.log'}, root_dir = util.root_pattern("go.mod")} + +require'lspconfig'.pylsp.setup{ + cmd = {'pylsp', '-v', '--log-file','/tmp/pyls.log'}, + plugins = { + pyflakes = { + enabled = true + }, + pydocstyle = { + enabled = true + }, + black = { + enabled = true + }, + flake8 = { + enabled = true + } + }, +} +require'lspconfig'.perlpls.setup{cmd = {'nix-shell', '-p', 'perl538Packages.PLS', '--run', 'pls'}} +require'lspconfig'.jdtls.setup{} +require'lspconfig'.ccls.setup{} +require'lspconfig'.rust_analyzer.setup{} +EOF diff --git a/settings.json b/settings.json deleted file mode 100644 index ca7e8e3..0000000 --- a/settings.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "pyls": { - "plugins": { - "pyflakes": { - "enabled": false - }, - "pydocstyle": { - "enabled": false - }, - "pylint": { - "enabled": false - } - } - }, - "gopls": { - "analyses": { - "structtag": false - }, - "build.buildFlags": [ - "-tags=linux" - ] - } -} -- 2.51.2