From 392517e91a07e762a4f946fb2625b39e0aab2471 Mon Sep 17 00:00:00 2001 From: Raymaekers Luca Date: Tue, 21 Mar 2023 00:21:14 +0100 Subject: use nvim-jdtls instead of nvim-cmp --- config/essentials/nvim/ftplugin/java.lua | 56 ++++++++++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 3 deletions(-) (limited to 'config/essentials/nvim/ftplugin/java.lua') 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"}, "t", "s/\\(\\s*\\)\\(.*\\)/\\1System.out.print(\"\\2\");") -vim.keymap.set({"n", "i"}, "i", "s/\\(\\s*\\)\\(.*\\)/\\1System.out.print(\"\\2: \" + \\2);") -vim.keymap.set({"n", "i"}, "l", "s/print(/println(/") +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('', vim.lsp.buf.signature_help, bufopts, "Show signature") + nnoremap('wa', vim.lsp.buf.add_workspace_folder, bufopts, "Add workspace folder") + nnoremap('wr', vim.lsp.buf.remove_workspace_folder, bufopts, "Remove workspace folder") + nnoremap('wl', function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + end, bufopts, "List workspace folders") + nnoremap('D', vim.lsp.buf.type_definition, bufopts, "Go to type definition") + nnoremap('rn', vim.lsp.buf.rename, bufopts, "Rename") + nnoremap('ca', vim.lsp.buf.code_action, bufopts, "Code actions") + vim.keymap.set('v', "ca", "lua vim.lsp.buf.range_code_action()", + { noremap=true, silent=true, buffer=bufnr, desc = "Code actions" }) + nnoremap('f', function() vim.lsp.buf.format { async = true } end, bufopts, "Format file") + + -- Java extensions provided by jdtls + nnoremap("", jdtls.organize_imports, bufopts, "Organize imports") + nnoremap("ev", jdtls.extract_variable, bufopts, "Extract variable") + nnoremap("ec", jdtls.extract_constant, bufopts, "Extract constant") + vim.keymap.set('v', "em", [[lua require('jdtls').extract_method(true)]], + { 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) -- cgit v1.2.3