diff options
author | Raymaekers Luca <raymaekers.luca@gmail.com> | 2023-03-21 00:21:14 +0100 |
---|---|---|
committer | Raymaekers Luca <raymaekers.luca@gmail.com> | 2023-03-21 00:21:14 +0100 |
commit | 392517e91a07e762a4f946fb2625b39e0aab2471 (patch) | |
tree | 707f306219add3b65ea9bbdbaa57267ae7bf6554 /config/essentials | |
parent | d9ababa442b5d02414e100f7de1f574e5616125d (diff) |
use nvim-jdtls instead of nvim-cmp
Diffstat (limited to 'config/essentials')
-rw-r--r-- | config/essentials/nvim/ftplugin/java.lua | 56 | ||||
-rw-r--r-- | config/essentials/nvim/lua/tlast/cmp/java.lua | 2 |
2 files changed, 54 insertions, 4 deletions
diff --git a/config/essentials/nvim/ftplugin/java.lua b/config/essentials/nvim/ftplugin/java.lua index eeaff47..9cb52e1 100644 --- a/config/essentials/nvim/ftplugin/java.lua +++ b/config/essentials/nvim/ftplugin/java.lua @@ -1,3 +1,53 @@ -vim.keymap.set({"n", "i"}, "<LocalLeader>t", "<cmd>s/\\(\\s*\\)\\(.*\\)/\\1System.out.print(\"\\2\");<cr>") -vim.keymap.set({"n", "i"}, "<LocalLeader>i", "<cmd>s/\\(\\s*\\)\\(.*\\)/\\1System.out.print(\"\\2: \" + \\2);<cr>") -vim.keymap.set({"n", "i"}, "<LocalLeader>l", "<cmd>s/print(/println(/<cr>") +local home = os.getenv('HOME') +local root_markers = {'gradlew', 'mvnw', '.git'} +local root_dir = require('jdtls.setup').find_root(root_markers) +local workspace_folder = home .. "/.local/share/eclipse/" .. vim.fn.fnamemodify(root_dir, ":p:h:t") + +function nnoremap(rhs, lhs, bufopts, desc) + bufopts.desc = desc + vim.keymap.set("n", rhs, lhs, bufopts) +end + +local on_attach = function(client, bufnr) + -- Regular Neovim LSP client keymappings + local bufopts = { noremap=true, silent=true, buffer=bufnr } + nnoremap('gD', vim.lsp.buf.declaration, bufopts, "Go to declaration") + nnoremap('gd', vim.lsp.buf.definition, bufopts, "Go to definition") + nnoremap('gi', vim.lsp.buf.implementation, bufopts, "Go to implementation") + nnoremap('K', vim.lsp.buf.hover, bufopts, "Hover text") + nnoremap('<C-k>', vim.lsp.buf.signature_help, bufopts, "Show signature") + nnoremap('<space>wa', vim.lsp.buf.add_workspace_folder, bufopts, "Add workspace folder") + nnoremap('<space>wr', vim.lsp.buf.remove_workspace_folder, bufopts, "Remove workspace folder") + nnoremap('<space>wl', function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + end, bufopts, "List workspace folders") + nnoremap('<space>D', vim.lsp.buf.type_definition, bufopts, "Go to type definition") + nnoremap('<space>rn', vim.lsp.buf.rename, bufopts, "Rename") + nnoremap('<space>ca', vim.lsp.buf.code_action, bufopts, "Code actions") + vim.keymap.set('v', "<space>ca", "<ESC><CMD>lua vim.lsp.buf.range_code_action()<CR>", + { noremap=true, silent=true, buffer=bufnr, desc = "Code actions" }) + nnoremap('<space>f', function() vim.lsp.buf.format { async = true } end, bufopts, "Format file") + + -- Java extensions provided by jdtls + nnoremap("<C-o>", jdtls.organize_imports, bufopts, "Organize imports") + nnoremap("<space>ev", jdtls.extract_variable, bufopts, "Extract variable") + nnoremap("<space>ec", jdtls.extract_constant, bufopts, "Extract constant") + vim.keymap.set('v', "<space>em", [[<ESC><CMD>lua require('jdtls').extract_method(true)<CR>]], + { noremap=true, silent=true, buffer=bufnr, desc = "Extract method" }) +end + +local config = { + flags = { + debounce_text_changes = 80, + }, + cmd = { + 'jdtls', + '-Dlog.protocol=true', + '-Dlog.level=ALL', + '-Xms4g', + '-data', workspace_folder, + }, + on_attach = on_attach, + root_dir = root_dir, +} +require('jdtls').start_or_attach(config) diff --git a/config/essentials/nvim/lua/tlast/cmp/java.lua b/config/essentials/nvim/lua/tlast/cmp/java.lua index 7d13fb3..1027588 100644 --- a/config/essentials/nvim/lua/tlast/cmp/java.lua +++ b/config/essentials/nvim/lua/tlast/cmp/java.lua @@ -1 +1 @@ -require'lspconfig'.jdtls.setup{} +-- require'lspconfig'.jdtls.setup{} |