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