local home = os.getenv("HOME") local workspace_path = home .. "/.local/share/nvim/jdtls-workspace/" local project_name = vim.fn.fnamemodify(vim.fn.getcwd(), ":p:h:t") local workspace_dir = workspace_path .. project_name local keymap = vim.keymap.set local status, jdtls = pcall(require, "jdtls") local dap = require("dap") if not status then return end local extendedClientCapabilities = jdtls.extendedClientCapabilities local bundles = { vim.fn.glob( home .. "/.local/share/nvim/mason/packages/java-debug/com.microsoft.java.debug.plugin/target/com.microsoft.java.debug.plugin-*.jar" ), } vim.list_extend( bundles, vim.split(vim.fn.glob(home .. "/.local/share/nvim/mason/packages/vscode-java-test/server/*.jar", true), "\n") ) local config = { cmd = { "java", "-Declipse.application=org.eclipse.jdt.ls.core.id1", "-Dosgi.bundles.defaultStartLevel=4", "-Declipse.product=org.eclipse.jdt.ls.core.product", "-Dlog.protocol=true", "-Dlog.level=ALL", "-Xmx1g", "--add-modules=ALL-SYSTEM", "--add-opens", "java.base/java.util=ALL-UNNAMED", "--add-opens", "java.base/java.lang=ALL-UNNAMED", "-javaagent:" .. home .. "/.local/share/nvim/mason/packages/jdtls/lombok.jar", "-jar", vim.fn.glob(home .. "/.local/share/nvim/mason/packages/jdtls/plugins/org.eclipse.equinox.launcher_*.jar"), "-configuration", home .. "/.local/share/nvim/mason/packages/jdtls/config_mac", "-data", workspace_dir, }, root_dir = require("jdtls.setup").find_root({ ".git", "mvnw", "gradlew", "pom.xml", "build.gradle" }), settings = { java = { signatureHelp = { enabled = true }, extendedClientCapabilities = extendedClientCapabilities, maven = { downloadSources = true, }, referencesCodeLens = { enabled = true, }, references = { includeDecompiledSources = true, }, inlayHints = { parameterNames = { enabled = "all", -- literals, all, none }, }, format = { enabled = false, }, }, }, init_options = { bundles = {}, }, } require("jdtls").start_or_attach(config) keymap("n", "co", "lua require'jdtls'.organize_imports()", { desc = "Organize Imports" }) keymap("n", "crv", "lua require('jdtls').extract_variable()", { desc = "Extract Variable" }) keymap("v", "crv", "lua require('jdtls').extract_variable(true)", { desc = "Extract Variable" }) keymap("n", "crc", "lua require('jdtls').extract_constant()", { desc = "Extract Constant" }) keymap("v", "crc", "lua require('jdtls').extract_constant(true)", { desc = "Extract Constant" }) keymap("v", "crm", "lua require('jdtls').extract_method(true)", { desc = "Extract Method" })