]> git.sthu.org Git - vimconf.git/commitdiff
plugins: Switch to LSP and Mason
authorStefan Huber <shuber@sthu.org>
Fri, 12 Jul 2024 21:01:42 +0000 (23:01 +0200)
committerStefan Huber <shuber@sthu.org>
Fri, 12 Jul 2024 21:52:15 +0000 (23:52 +0200)
Remove old language-specific packages like javacomplete2, vim-clang, but
also generic packages like gutentags.

Instead add Mason and friends.

keymaps.vim
plugins-full.vim.example
plugins-midi.vim.example
plugins-mini.vim

index 4310e79fd89d007624e8e93bc1184f370e1f2f5c..f7d029e57c08e13d254b723cbf1ce2a94a93e763 100644 (file)
@@ -61,26 +61,11 @@ au Filetype c,cpp,objc map <buffer> <F24> :FSHere<CR>
 au Filetype markdown map <buffer> <F5> :call RunMarkdown()<CR>
 au Filetype asciidoc,asciidoctor map <buffer> <F5> :call RunAsciidoc()<CR>
 
-" See https://github.com/artur-shaik/vim-Javacomplete2
-" <C-j>ji <leader>ji
-au FileType java nmap <F4> <Plug>(JavaComplete-Imports-AddSmart)
-au FileType java imap <F4> <Plug>(JavaComplete-Imports-AddSmart)
-" <C-j>ii <leader>jii
-au FileType java nmap <F5> <Plug>(JavaComplete-Imports-Add)
-au FileType java imap <F5> <Plug>(JavaComplete-Imports-Add)
-" <C-j>I <leader>jI
-au FileType java nmap <F6> <Plug>(JavaComplete-Imports-AddMissing)
-au FileType java imap <F6> <Plug>(JavaComplete-Imports-AddMissing)
-" <C-j>R <leader>jR
-au FileType java nmap <F7> <Plug>(JavaComplete-Imports-RemoveUnused)
-au FileType java imap <F7> <Plug>(JavaComplete-Imports-RemoveUnused)
-
 
 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 " Some plugin-specific settings
 
 
-
 if filereadable($HOME . '/.vim/keymaps-local.vim')
   source ~/.vim/keymaps-local.vim
 endif
index 841d262830a2f6043cf928733daf696fcb888caa..f1ba0d53d719a6664a9848958ace4224b4a37897 100644 (file)
@@ -1,40 +1,36 @@
-" java extension to deoplete
-Plug 'artur-shaik/vim-javacomplete2', {'for': 'java'}
+" neovim-0.4 has troubles with nvim-treesitter
+if has('nvim-0.5')
+    " neovim-0.7 works until v0.8.0
+    if has('nvim-0.9')
+        Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
+    else
+        Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate', 'tag': 'v0.8.0'}
+    endif
 
-Plug 'neomake/neomake'
-Plug 'puremourning/vimspector'
+    Plug 'nvim-treesitter/nvim-treesitter-refactor', {'do': ':TSUpdate'}
+endif
+
+if has('nvim-0.7')
+    Plug 'williamboman/mason.nvim'
+    Plug 'neovim/nvim-lspconfig'
+    Plug 'williamboman/mason-lspconfig.nvim'
+    Plug 'mfussenegger/nvim-lint'
+    Plug 'mhartington/formatter.nvim'
+endif
 
-Plug 'kana/vim-operator-user'
-Plug 'rhysd/vim-clang-format'
-Plug 'justmao945/vim-clang', {'for': ['c', 'cpp', 'objc']}
 
 " Prevent slow foling update, e.g., for vimtex
 Plug 'Konfekt/FastFold'
-Plug 'lervag/vimtex'
-
-Plug 'shuber2/vim-syntax-easychair2'
 
 Plug 'gko/vim-coloresque'
 
-Plug 'vimwiki/vimwiki'
-Plug 'jceb/vim-orgmode', {'for': ['org']}
-
-Plug 'cakebaker/scss-syntax.vim', {'for': 'scss'}
-Plug 'hail2u/vim-css3-syntax', {'for': ['scss', 'css']}
+Plug 'puremourning/vimspector'
 
-Plug 'https://gitlab.com/dbeniamine/vim-mail'
 Plug 'Konfekt/vim-DetectSpellLang', {'do': 'spell'}
-Plug 'dpelle/vim-LanguageTool'
 
-" Disable devicons on linux terminal
-if $TERM == 'linux'
-    let g:enable_plugin_devicons=0
-    " Enable loading of devicons on all others
-else
-    let g:enable_plugin_devicons=1
-endif
+Plug 'dpelle/vim-LanguageTool'
 
-Plug 'ryanoasis/vim-devicons', Cond(g:enable_plugin_devicons)
+Plug 'ryanoasis/vim-devicons', Cond($TERM != 'linux')
 
 Plug 'joom/latex-unicoder.vim'
 Plug 'chrisbra/unicode.vim'
@@ -46,76 +42,119 @@ Plug 'dbeniamine/cheat.sh-vim', {'on': 'Cheat'}
 
 Plug 'sheerun/vim-polyglot'
 
-" neovim-0.4 has troubles with nvim-treesitter
-if has('nvim-0.5')
-    " neovim-0.7 works until v0.8.0
-    if has('nvim-0.9')
-        Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
-    else
-        Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate', 'tag': 'v0.8.0'}
-    endif
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+" FileType specific plugins
 
-    Plug 'nvim-treesitter/nvim-treesitter-refactor', {'do': ':TSUpdate'}
-endif
+" Java IDE:
+" https://sookocheff.com/post/vim/neovim-java-ide/
 
-function PluginsConfigFull()
-    let g:neomake_c_enabled_makers = ['clangtidy', 'clangcheck']
-    let g:neomake_cpp_enabled_makers = ['clangtidy', 'clangcheck']
-    let g:clang_compilation_database = '.'
+Plug 'lervag/vimtex'
 
-    " Taken from neomake
-    if OnBattery()
-        call neomake#configure#automake('w')
-    else
-        call neomake#configure#automake('nw', 1000)
-    endif
+Plug 'shuber2/vim-syntax-easychair2'
+
+Plug 'vimwiki/vimwiki'
+
+Plug 'jceb/vim-orgmode', {'for': ['org']}
+
+Plug 'https://gitlab.com/dbeniamine/vim-mail'
+
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
+function PluginsConfigFull()
 
     if has('nvim-0.5')
         set foldexpr=nvim_treesitter#foldexpr()
 
-    lua <<EOF
-        require'nvim-treesitter.configs'.setup {
-            -- one of "all"
-            ensure_installed = "all",
-            -- List of parsers to ignore installing
-            ignore_install = {},
-            -- Modules and its options go here
-            highlight = { enable = true },
-            -- Indentation is still quite buggy, e.g., for multi-line C comments
-            -- or for comments right after a preproc definition.
-            -- indent = { enable = true },
-            textobjects = { enable = true },
-            incremental_selection = {
-                enable = true,
-                keymaps = {
-                    init_selection = "gnn",
-                    node_incremental = "grn",
-                    scope_incremental = "grc",
-                    node_decremental = "grm",
-                },
-            },
-            refactor = {
-                highlight_definitions = { enable = true },
-                smart_rename = {
-                    enable = true,
-                    keymaps = { smart_rename = "grr" },
-                    },
-                navigation = {
+        lua <<EOF
+            require'nvim-treesitter.configs'.setup {
+                -- one of "all"
+                ensure_installed = "all",
+                -- List of parsers to ignore installing
+                ignore_install = {},
+                -- Modules and its options go here
+                highlight = { enable = true },
+                -- Indentation is still quite buggy, e.g., for multi-line C comments
+                -- or for comments right after a preproc definition.
+                -- indent = { enable = true },
+                textobjects = { enable = true },
+                incremental_selection = {
                     enable = true,
                     keymaps = {
-                        goto_definition = "gnd",
-                        list_definitions = "gnD",
-                        list_definitions_toc = "gO",
-                        goto_next_usage = "<a-*>",
-                        goto_previous_usage = "<a-#>",
+                        init_selection = "gnn",
+                        node_incremental = "grn",
+                        scope_incremental = "grc",
+                        node_decremental = "grm",
                     },
                 },
-            },
-        }
+                refactor = {
+                    highlight_definitions = { enable = true },
+                    smart_rename = {
+                        enable = true,
+                        keymaps = { smart_rename = "grr" },
+                        },
+                    navigation = {
+                        enable = true,
+                        keymaps = {
+                            goto_definition = "gnd",
+                            list_definitions = "gnD",
+                            list_definitions_toc = "gO",
+                            goto_next_usage = "<a-*>",
+                            goto_previous_usage = "<a-#>",
+                        },
+                    },
+                },
+            }
 EOF
     endif
 
+    if has('nvim-0.7')
+        lua <<EOF
+            require("mason").setup({
+                ui = {
+                    icons = {
+                        package_installed = "✓",
+                        package_pending = "➜",
+                        package_uninstalled = "✗"
+                    }
+                }
+            })
+            require("mason-lspconfig").setup()
+            require("mason-lspconfig").setup({
+                ensure_installed = {
+                    -- Latest before switching to Java 18
+                    -- "java_language_server@94a684b3931661440a57738fb2ee23d579acc2ab",
+                    "bashls",
+                    "clangd",
+                    "cssls",
+                    "html",
+                    "jdtls",
+                    "lua_ls",
+                    "markdown_oxide",
+                    "pylsp",
+                    "texlab",
+                    "vimls",
+                }
+            })
+
+            require("mason-lspconfig").setup_handlers {
+                -- The first entry (without a key) will be the default handler
+                -- and will be called for each installed server that doesn't have
+                -- a dedicated handler.
+                function (server_name) -- default handler (optional)
+                    require("lspconfig")[server_name].setup {}
+                end,
+                -- Next, you can provide a dedicated handler for specific servers.
+                -- For example, a handler override for the `rust_analyzer`:
+                -- ["rust_analyzer"] = function ()
+                --     require("rust-tools").setup {}
+                -- end
+            }
+EOF
+        " A gK mapping for hover. The default 'K' is already mapped to :Map
+        nmap <silent> gK :lua vim.lsp.buf.hover()<cr>
+
+    endif
+
     let g:fastfold_minlines = 0
 
     let g:detectspelllang_langs = {}
@@ -147,11 +186,6 @@ EOF
                 \ 'template_ext': '.html'}]
     let g:vimwiki_global_ext = 0
 
-
-    " Java completion
-    au FileType java setlocal omnifunc=javacomplete#Complete
-    au FileType java JCEnable
-
     let g:vimtex_fold_enabled = 1
     let g:vimtex_fold_levelmarker = '➜'
     let g:vimtex_view_general_viewer = 'okular'
@@ -191,15 +225,6 @@ EOF
     xmap <Leader>de  <Plug>VimspectorBalloonEval
 
     au BufNewFile .vimspector.json read ~/.vim/vimspector-config/vimspector.json
-
-    " Do not show diagnostic window of vim-clang
-    let g:clang_diagsopt = ''
-
-    augroup ClangFormatSettings
-        au!
-        au FileType c,cpp,objc,javascript,java,typescript,protobuf,cuda,vala
-                    \ vmap <buffer><leader>cf <Plug>(operator-clang-format)
-        au FileType c,cpp,objc,javascript,java,typescript,protobuf,cuda,vala
-                    \ nmap <buffer><leader>cf :ClangFormat<CR>
-    augroup END
 endfunction
+
+" vim:ft=vim
index a024726f46c2222d4a6bf6765f825d06f4f2cecd..7b120b998d4cad581bcafbd9eecc9ba416931d75 100644 (file)
@@ -2,21 +2,15 @@ Plug 'majutsushi/tagbar', {'on': 'TagbarToggle'}
 
 Plug 'jamessan/vim-gnupg'
 
-" Conditional loading does not work, see github issue #823
-Plug 'ludovicchabant/vim-gutentags'
-
 Plug 'editorconfig/editorconfig-vim'
 Plug 'embear/vim-localvimrc'
 
 Plug 'airblade/vim-rooter'
 
-Plug 'plasticboy/vim-markdown', {'for': 'markdown'}
+Plug 'preservim/vim-markdown', {'for': 'markdown'}
 Plug 'lvht/tagbar-markdown', {'for': 'markdown'}
 Plug 'habamax/vim-asciidoctor', {'for': 'asciidoc'}
 
-Plug 'PProvost/vim-markdown-jekyll', {'for': 'markdown'}
-Plug 'tpope/vim-liquid', {'for': ['liquid', 'html', 'xml', 'markdown']}
-
 Plug 'tpope/vim-ragtag'
 
 Plug 'Shougo/neosnippet.vim'
@@ -46,21 +40,10 @@ function PluginsConfigMidi()
 
     au FileType markdown call RagtagInit()
 
-    " Generally disable gutentags, but enable for some filetypes
-    let g:gutentags_enabled = 0
-    au FileType c,cpp,objc,tex let g:gutentags_enabled = 1
-    " Make manually created tags files also root markers
-    let g:gutentags_project_root = ['tags']
-    let g:gutentags_cache_dir = expand('~/.cache/vim/ctags/')
-    " Do not automatically generate on browsing
-    let g:gutentags_generate_on_missing = 0
-    let g:gutentags_ctags_exclude_wildignore = 1
-    let g:gutentags_ctags_exclude = [
-                \'node_modules', '_build', 'build*', 'CMakeFiles', '.*cache*', 'venv',
-                \'*.md', '*.css', '*.html', '*.json', '*.xml', '*.xmls', '*.ui']
-
     " Allow for reflow of bullet paragraphs
     let g:vim_markdown_auto_insert_bullets = 0
 
     let g:calendar_monday = 1
 endfunction
+
+" vim:ft=vim
index 4ad74205af9e28a1ae7fbe0a683ef1371f67d647..dad724731bd783f33bc2b28ce1b1bef8959920db 100644 (file)
@@ -105,7 +105,7 @@ function PluginsConfigMini()
         require('mini.bracketed').setup()
         require('mini.bufremove').setup()
         require('mini.comment').setup()
-        require('mini.completion').setup({delay = {completion = 500}})
+        require('mini.completion').setup()
         require('mini.cursorword').setup()
         require('mini.diff').setup()
         require('mini.files').setup()