From 61f44b311990c7f52e5f1ca13ceb68ae1298c81b Mon Sep 17 00:00:00 2001 From: Lorenzo Bettini Date: Wed, 30 Oct 2024 15:29:36 +0100 Subject: [PATCH] Fix "Run with Args" for Java Closes #4672 --- lua/lazyvim/plugins/extras/lang/java.lua | 29 ++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/lua/lazyvim/plugins/extras/lang/java.lua b/lua/lazyvim/plugins/extras/lang/java.lua index 6b83fe29..1262962e 100644 --- a/lua/lazyvim/plugins/extras/lang/java.lua +++ b/lua/lazyvim/plugins/extras/lang/java.lua @@ -15,6 +15,18 @@ local function extend_or_override(config, custom, ...) return config end +---@param config {args?:string|fun():string?} +local function get_args(config) + local args = config.args and (config.args .. " ") or "" + config = vim.deepcopy(config) + ---@cast args string + config.args = function() + local new_args = vim.fn.input("Run with args: ", args) --[[@as string]] + return new_args --[[@as string]] + end + return config +end + return { recommended = function() return LazyVim.extras.wants({ @@ -230,6 +242,23 @@ return { require("jdtls").setup_dap(opts.dap) require("jdtls.dap").setup_dap_main_class_configs(opts.dap_main) + -- Java debug adapter expects "args" to be a String, while the configuration of dap.extra + -- passes the "args" as a table; so we defined a different ger_args function + wk.add({ + { + mode = { "n", "v" }, + buffer = args.buf, + { "d", group = "+debug" }, + { + "da", + function() + require("dap").continue({ before = get_args }) + end, + desc = "Run with Args", + }, + }, + }) + -- Java Test require Java debugger to work if opts.test and mason_registry.is_installed("java-test") then -- custom keymaps for Java test runner (not yet compatible with neotest)