1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
local dap = require("dap")
local dapui = require("dapui")
local widgets = require("dap.ui.widgets")
local map = vim.keymap.set
dapui.setup()
-- stylua: ignore start
map("n", " bu", function() dapui.toggle() end, { desc = "Toggle dap-ui" })
map("n", " bb", function() dap.toggle_breakpoint() end, { desc = "Toggle breakpoint" })
map("n", " bc", function() dap.continue() end, {desc="Continue"})
map("n", " bs", function() dap.step_over() end, {desc="Step over"})
map("n", " bi", function() dap.step_into() end, {desc="Step into"})
map("n", " bo", function() dap.step_out() end, {desc="Step out"})
map({ "n", "v" }, " bh", function() widgets.hover() end, {desc="Show hover"})
map({ "n", "v" }, " bv", function() widgets.preview() end, {desc="Show preview"})
map("n", " bf", function() widgets.centered_float(widgets.frames) end, {desc="Show frames"})
map("n", " bp", function() widgets.centered_float(widgets.scopes) end, {desc="Show scopes"})
-- stylua: ignore end
map("n", " bl", function()
dap.set_breakpoint(nil, nil, vim.fn.input("Log point message: "))
end, { desc = "Break point with log" })
dap.adapters.gdb = {
id = "gdb",
type = "executable",
command = "gdb",
args = { "--quiet", "--interpreter=dap" },
}
dap.configurations.c = {
{
name = "Run (GDB)",
type = "gdb",
request = "launch",
-- This requires special handling of 'run_last', see
-- https://github.com/mfussenegger/nvim-dap/issues/1025#issuecomment-1695852355
program = function()
local path = vim.fn.input({
prompt = "Path to executable: ",
default = vim.fn.getcwd() .. "/",
completion = "file",
})
return (path and path ~= "") and path or dap.ABORT
end,
},
{
name = "Run with arguments (GDB)",
type = "gdb",
request = "launch",
-- This requires special handling of 'run_last', see
-- https://github.com/mfussenegger/nvim-dap/issues/1025#issuecomment-1695852355
program = function()
local path = vim.fn.input({
prompt = "Path to executable: ",
default = vim.fn.getcwd() .. "/",
completion = "file",
})
return (path and path ~= "") and path or dap.ABORT
end,
args = function()
local args_str = vim.fn.input({
prompt = "Arguments: ",
})
return vim.split(args_str, " +")
end,
},
{
name = "Attach to process (GDB)",
type = "gdb",
request = "attach",
processId = require("dap.utils").pick_process,
},
}
|