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:
@@ -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" })
|
||||
|
||||
Reference in New Issue
Block a user