208 lines
4.0 KiB
Lua
208 lines
4.0 KiB
Lua
---@param config {type?:string, args?:string[]|fun():string[]?}
|
|
local function get_args(config)
|
|
local args = type(config.args) == "function" and (config.args() or {}) or config.args or {} --[[@as string[] | string ]]
|
|
local args_str = type(args) == "table" and table.concat(args, " ") or args --[[@as string]]
|
|
|
|
config = vim.deepcopy(config)
|
|
---@cast args string[]
|
|
config.args = function()
|
|
local new_args = vim.fn.expand(vim.fn.input("Run with args: ", args_str)) --[[@as string]]
|
|
if config.type and config.type == "java" then
|
|
---@diagnostic disable-next-line: return-type-mismatch
|
|
return new_args
|
|
end
|
|
return require("dap.utils").splitstr(new_args)
|
|
end
|
|
return config
|
|
end
|
|
|
|
return {
|
|
{
|
|
"mfussenegger/nvim-dap",
|
|
dependencies = {
|
|
"rcarriga/nvim-dap-ui",
|
|
-- virtual text for the debugger
|
|
{
|
|
"theHamsta/nvim-dap-virtual-text",
|
|
opts = {},
|
|
},
|
|
"jay-babu/mason-nvim-dap.nvim",
|
|
},
|
|
keys = {
|
|
{
|
|
"<leader>dB",
|
|
function()
|
|
require("dap").set_breakpoint(vim.fn.input("Breakpoint condition: "))
|
|
end,
|
|
desc = "Breakpoint Condition",
|
|
},
|
|
{
|
|
"<leader>db",
|
|
function()
|
|
require("dap").toggle_breakpoint()
|
|
end,
|
|
desc = "Toggle Breakpoint",
|
|
},
|
|
{
|
|
"<leader>dc",
|
|
function()
|
|
require("dap").continue()
|
|
end,
|
|
desc = "Run/Continue",
|
|
},
|
|
{
|
|
"<leader>da",
|
|
function()
|
|
require("dap").continue({ before = get_args })
|
|
end,
|
|
desc = "Run with Args",
|
|
},
|
|
{
|
|
"<leader>dC",
|
|
function()
|
|
require("dap").run_to_cursor()
|
|
end,
|
|
desc = "Run to Cursor",
|
|
},
|
|
{
|
|
"<leader>dg",
|
|
function()
|
|
require("dap").goto_()
|
|
end,
|
|
desc = "Go to Line (No Execute)",
|
|
},
|
|
{
|
|
"<leader>di",
|
|
function()
|
|
require("dap").step_into()
|
|
end,
|
|
desc = "Step Into",
|
|
},
|
|
{
|
|
"<leader>dj",
|
|
function()
|
|
require("dap").down()
|
|
end,
|
|
desc = "Down",
|
|
},
|
|
{
|
|
"<leader>dk",
|
|
function()
|
|
require("dap").up()
|
|
end,
|
|
desc = "Up",
|
|
},
|
|
{
|
|
"<leader>dl",
|
|
function()
|
|
require("dap").run_last()
|
|
end,
|
|
desc = "Run Last",
|
|
},
|
|
{
|
|
"<leader>do",
|
|
function()
|
|
require("dap").step_out()
|
|
end,
|
|
desc = "Step Out",
|
|
},
|
|
{
|
|
"<leader>dO",
|
|
function()
|
|
require("dap").step_over()
|
|
end,
|
|
desc = "Step Over",
|
|
},
|
|
{
|
|
"<leader>dP",
|
|
function()
|
|
require("dap").pause()
|
|
end,
|
|
desc = "Pause",
|
|
},
|
|
{
|
|
"<leader>dr",
|
|
function()
|
|
require("dap").repl.toggle()
|
|
end,
|
|
desc = "Toggle REPL",
|
|
},
|
|
{
|
|
"<leader>ds",
|
|
function()
|
|
require("dap").session()
|
|
end,
|
|
desc = "Session",
|
|
},
|
|
{
|
|
"<leader>dt",
|
|
function()
|
|
require("dap").terminate()
|
|
end,
|
|
desc = "Terminate",
|
|
},
|
|
{
|
|
"<leader>dw",
|
|
function()
|
|
require("dap.ui.widgets").hover()
|
|
end,
|
|
desc = "Widgets",
|
|
},
|
|
},
|
|
},
|
|
|
|
-- fancy UI for the debugger
|
|
{
|
|
"rcarriga/nvim-dap-ui",
|
|
dependencies = { "nvim-neotest/nvim-nio" },
|
|
keys = {
|
|
{
|
|
"<leader>du",
|
|
function()
|
|
require("dapui").toggle({})
|
|
end,
|
|
desc = "Dap UI",
|
|
},
|
|
{
|
|
"<leader>de",
|
|
function()
|
|
require("dapui").eval()
|
|
end,
|
|
desc = "Eval",
|
|
mode = { "n", "v" },
|
|
},
|
|
},
|
|
opts = {},
|
|
config = function(_, opts)
|
|
local dap = require("dap")
|
|
local dapui = require("dapui")
|
|
dapui.setup(opts)
|
|
dap.listeners.after.event_initialized["dapui_config"] = function()
|
|
dapui.open({})
|
|
end
|
|
dap.listeners.before.event_terminated["dapui_config"] = function()
|
|
dapui.close({})
|
|
end
|
|
dap.listeners.before.event_exited["dapui_config"] = function()
|
|
dapui.close({})
|
|
end
|
|
end,
|
|
},
|
|
|
|
-- mason.nvim integration
|
|
{
|
|
"jay-babu/mason-nvim-dap.nvim",
|
|
dependencies = { "mason-org/mason.nvim" },
|
|
lazy = true,
|
|
opts = {
|
|
-- Makes a best effort to setup the various debuggers with
|
|
-- reasonable debug configurations
|
|
automatic_installation = true,
|
|
|
|
-- You can provide additional configuration to the handlers,
|
|
-- see mason-nvim-dap README for more information
|
|
handlers = {},
|
|
},
|
|
},
|
|
}
|