fix(java): repair Java debugger configuration and add run keymaps

- Fix debug bundles not being passed to JDTLS init_options
- Add on_attach callback to setup DAP after LSP attaches
- Remove broken manual Java DAP adapter (now handled by nvim-jdtls)
- Add java-debug-adapter and java-test to Mason ensure_installed
- Add new Java keymaps: debug, test, run (file/maven/gradle)
This commit is contained in:
Carlos Gutierrez
2026-01-10 22:27:02 -05:00
parent cd817820ca
commit 3940c92b48
4 changed files with 67 additions and 15 deletions

View File

@@ -5,7 +5,6 @@ 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
@@ -72,14 +71,46 @@ local config = {
},
init_options = {
bundles = {},
bundles = bundles,
},
}
-- Callback to setup DAP after JDTLS attaches
local function jdtls_on_attach(client, bufnr)
-- Setup DAP after language server is ready
if #bundles > 0 then
require("jdtls").setup_dap({ hotcodereplace = "auto" })
require("jdtls.dap").setup_dap_main_class_configs()
end
end
config.on_attach = jdtls_on_attach
require("jdtls").start_or_attach(config)
-- Java code actions
keymap("n", "<leader>co", "<Cmd>lua require'jdtls'.organize_imports()<CR>", { desc = "Organize Imports" })
keymap("n", "<leader>crv", "<Cmd>lua require('jdtls').extract_variable()<CR>", { desc = "Extract Variable" })
keymap("v", "<leader>crv", "<Esc><Cmd>lua require('jdtls').extract_variable(true)<CR>", { desc = "Extract Variable" })
keymap("n", "<leader>crc", "<Cmd>lua require('jdtls').extract_constant()<CR>", { desc = "Extract Constant" })
keymap("v", "<leader>crc", "<Esc><Cmd>lua require('jdtls').extract_constant(true)<CR>", { desc = "Extract Constant" })
keymap("v", "<leader>crm", "<Esc><Cmd>lua require('jdtls').extract_method(true)<CR>", { desc = "Extract Method" })
-- Java Debug & Run
keymap("n", "<leader>jt", "<Cmd>lua require('jdtls').test_class()<CR>", { desc = "Test Class" })
keymap("n", "<leader>jn", "<Cmd>lua require('jdtls').test_nearest_method()<CR>", { desc = "Test Nearest Method" })
keymap("n", "<leader>jd", "<Cmd>lua require('jdtls').debug_class()<CR>", { desc = "Debug Class (DAP)" })
keymap("n", "<leader>jr", function()
-- Run Java main class without debugger
local main_class = vim.fn.expand("%:t:r")
local cmd = string.format("java %s", main_class)
vim.cmd("split | terminal " .. cmd)
end, { desc = "Run Java File" })
keymap("n", "<leader>jm", function()
-- Run with Maven
vim.cmd("split | terminal mvn compile exec:java")
end, { desc = "Run Maven Project" })
keymap("n", "<leader>jg", function()
-- Run with Gradle
vim.cmd("split | terminal ./gradlew run")
end, { desc = "Run Gradle Project" })