2021-07-13 03:11:43 +02:00
|
|
|
local M = {}
|
2021-08-22 20:03:19 +02:00
|
|
|
|
2021-07-13 03:11:43 +02:00
|
|
|
M.config = function()
|
2021-07-25 03:17:11 +02:00
|
|
|
lvim.builtin.dap = {
|
2022-10-06 07:20:12 +02:00
|
|
|
active = true,
|
2021-08-22 20:03:19 +02:00
|
|
|
on_config_done = nil,
|
2021-07-13 03:11:43 +02:00
|
|
|
breakpoint = {
|
2022-10-03 05:48:23 +02:00
|
|
|
text = lvim.icons.ui.Bug,
|
2022-10-05 09:25:51 +02:00
|
|
|
texthl = "DiagnosticSignError",
|
2021-07-13 03:11:43 +02:00
|
|
|
linehl = "",
|
|
|
|
numhl = "",
|
|
|
|
},
|
2021-09-30 09:31:59 +02:00
|
|
|
breakpoint_rejected = {
|
2022-10-03 05:48:23 +02:00
|
|
|
text = lvim.icons.ui.Bug,
|
2022-10-05 09:25:51 +02:00
|
|
|
texthl = "DiagnosticSignError",
|
2021-09-30 09:31:59 +02:00
|
|
|
linehl = "",
|
|
|
|
numhl = "",
|
|
|
|
},
|
|
|
|
stopped = {
|
2022-10-03 05:48:23 +02:00
|
|
|
text = lvim.icons.ui.BoldArrowRight,
|
2022-10-05 09:25:51 +02:00
|
|
|
texthl = "DiagnosticSignWarn",
|
|
|
|
linehl = "Visual",
|
|
|
|
numhl = "DiagnosticSignWarn",
|
2021-09-30 09:31:59 +02:00
|
|
|
},
|
2022-10-04 07:38:59 +02:00
|
|
|
ui = {
|
|
|
|
auto_open = true,
|
|
|
|
},
|
2021-07-13 03:11:43 +02:00
|
|
|
}
|
|
|
|
end
|
|
|
|
|
|
|
|
M.setup = function()
|
2022-10-06 07:20:12 +02:00
|
|
|
local status_ok, dap = pcall(require, "dap")
|
|
|
|
if not status_ok then
|
|
|
|
return
|
|
|
|
end
|
2021-07-13 03:11:43 +02:00
|
|
|
|
2022-04-28 16:30:39 +02:00
|
|
|
if lvim.use_icons then
|
|
|
|
vim.fn.sign_define("DapBreakpoint", lvim.builtin.dap.breakpoint)
|
|
|
|
vim.fn.sign_define("DapBreakpointRejected", lvim.builtin.dap.breakpoint_rejected)
|
|
|
|
vim.fn.sign_define("DapStopped", lvim.builtin.dap.stopped)
|
|
|
|
end
|
2021-09-30 09:31:59 +02:00
|
|
|
|
2021-07-25 03:17:11 +02:00
|
|
|
lvim.builtin.which_key.mappings["d"] = {
|
2021-07-13 03:11:43 +02:00
|
|
|
name = "Debug",
|
|
|
|
t = { "<cmd>lua require'dap'.toggle_breakpoint()<cr>", "Toggle Breakpoint" },
|
|
|
|
b = { "<cmd>lua require'dap'.step_back()<cr>", "Step Back" },
|
|
|
|
c = { "<cmd>lua require'dap'.continue()<cr>", "Continue" },
|
|
|
|
C = { "<cmd>lua require'dap'.run_to_cursor()<cr>", "Run To Cursor" },
|
|
|
|
d = { "<cmd>lua require'dap'.disconnect()<cr>", "Disconnect" },
|
|
|
|
g = { "<cmd>lua require'dap'.session()<cr>", "Get Session" },
|
|
|
|
i = { "<cmd>lua require'dap'.step_into()<cr>", "Step Into" },
|
|
|
|
o = { "<cmd>lua require'dap'.step_over()<cr>", "Step Over" },
|
|
|
|
u = { "<cmd>lua require'dap'.step_out()<cr>", "Step Out" },
|
2022-05-05 16:23:48 +02:00
|
|
|
p = { "<cmd>lua require'dap'.pause()<cr>", "Pause" },
|
2021-07-13 03:11:43 +02:00
|
|
|
r = { "<cmd>lua require'dap'.repl.toggle()<cr>", "Toggle Repl" },
|
|
|
|
s = { "<cmd>lua require'dap'.continue()<cr>", "Start" },
|
2021-08-05 22:27:51 +02:00
|
|
|
q = { "<cmd>lua require'dap'.close()<cr>", "Quit" },
|
2022-10-04 07:38:59 +02:00
|
|
|
U = { "<cmd>lua require'dapui'.toggle()<cr>", "Toggle UI" },
|
2021-07-13 03:11:43 +02:00
|
|
|
}
|
2021-08-22 20:03:19 +02:00
|
|
|
|
|
|
|
if lvim.builtin.dap.on_config_done then
|
|
|
|
lvim.builtin.dap.on_config_done(dap)
|
|
|
|
end
|
2021-07-13 03:11:43 +02:00
|
|
|
end
|
|
|
|
|
2022-10-04 07:38:59 +02:00
|
|
|
M.setup_ui = function()
|
2022-10-06 07:20:12 +02:00
|
|
|
local status_ok, dap = pcall(require, "dap")
|
|
|
|
if not status_ok then
|
|
|
|
return
|
|
|
|
end
|
2022-10-04 07:38:59 +02:00
|
|
|
local dapui = require "dapui"
|
|
|
|
dapui.setup {
|
|
|
|
expand_lines = true,
|
|
|
|
icons = { expanded = "", collapsed = "", circular = "" },
|
|
|
|
mappings = {
|
|
|
|
-- Use a table to apply multiple mappings
|
|
|
|
expand = { "<CR>", "<2-LeftMouse>" },
|
|
|
|
open = "o",
|
|
|
|
remove = "d",
|
|
|
|
edit = "e",
|
|
|
|
repl = "r",
|
|
|
|
toggle = "t",
|
|
|
|
},
|
|
|
|
layouts = {
|
|
|
|
{
|
|
|
|
elements = {
|
|
|
|
{ id = "scopes", size = 0.33 },
|
|
|
|
{ id = "breakpoints", size = 0.17 },
|
|
|
|
{ id = "stacks", size = 0.25 },
|
|
|
|
{ id = "watches", size = 0.25 },
|
|
|
|
},
|
|
|
|
size = 0.33,
|
|
|
|
position = "right",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
elements = {
|
|
|
|
{ id = "repl", size = 0.45 },
|
|
|
|
{ id = "console", size = 0.55 },
|
|
|
|
},
|
|
|
|
size = 0.27,
|
|
|
|
position = "bottom",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
floating = {
|
|
|
|
max_height = 0.9,
|
|
|
|
max_width = 0.5, -- Floats will be treated as percentage of your screen.
|
|
|
|
border = vim.g.border_chars, -- Border style. Can be 'single', 'double' or 'rounded'
|
|
|
|
mappings = {
|
|
|
|
close = { "q", "<Esc>" },
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
2021-07-25 03:17:11 +02:00
|
|
|
|
2022-10-04 07:38:59 +02:00
|
|
|
if lvim.builtin.dap.ui.auto_open then
|
|
|
|
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
|
|
|
|
end
|
2021-07-25 03:17:11 +02:00
|
|
|
|
2021-07-13 03:11:43 +02:00
|
|
|
return M
|