1local key = require("gabrielgio.key")
2local dap = require("dap")
3local dapui = require("dapui")
4
5key.nnoremap("<F5>", ":lua require'dap'.continue()<CR>")
6key.nnoremap("<F10>", ":lua require'dap'.step_over()<CR>")
7key.nnoremap("<F11>", ":lua require'dap'.step_into()<CR>")
8key.nnoremap("<F12>", ":lua require'dap'.step_out()<CR>")
9key.nnoremap("<leader>b", ":lua require'dap'.toggle_breakpoint()<CR>")
10key.nnoremap("<leader>B", ":lua require'dap'.set_breakpoint(vim.fn.input('Condition: '))<CR>")
11key.nnoremap("<leader>dr", ":lua require'dap'.repl.open()<CR>")
12key.nnoremap("<Alt-k>", "<Cmd>lua require'dapui'.eval()<CR>")
13
14dap.listeners.before.attach.dapui_config = function()
15 dapui.open()
16end
17dap.listeners.before.launch.dapui_config = function()
18 dapui.open()
19end
20dap.listeners.before.event_terminated.dapui_config = function()
21 dapui.close()
22end
23dap.listeners.before.event_exited.dapui_config = function()
24 dapui.close()
25end
26
27vim.keymap.set("n", "<leader>di", require("dap.ui.widgets").hover)
28
29dap.adapters.delve = {
30 type = "server",
31 host = "127.0.0.1",
32 port = 2345,
33}
34
35dap.adapters.gdb = {
36 id = "gdb",
37 type = "executable",
38 command = "gdb",
39 args = { "--interpreter=dap", "--eval-command", "set print pretty on" },
40}
41
42dap.adapters.lldb = {
43 type = "executable",
44 command = "lldb-vscode", -- adjust as needed, must be absolute path
45 name = "lldb",
46}
47
48dap.configurations.go = {
49 {
50 type = "delve",
51 name = "remote",
52 mode = "remote",
53 request = "attach",
54 connect = {
55 host = "127.0.0.1",
56 port = "2345",
57 },
58 },
59}
60dap.configurations.zig = {
61 {
62 name = "Launch",
63 type = "gdb",
64 request = "launch",
65 program = function()
66 return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file")
67 end,
68 cwd = "${workspaceFolder}",
69 stopAtBeginningOfMainSubprogram = false,
70 args = function()
71 local args_str = vim.fn.input({
72 prompt = "Arguments: ",
73 })
74 return vim.split(args_str, " +")
75 end,
76 },
77 {
78 name = "Launch",
79 type = "lldb",
80 request = "launch",
81 program = function()
82 return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file")
83 end,
84 cwd = "${workspaceFolder}",
85 stopAtBeginningOfMainSubprogram = false,
86 args = function()
87 local args_str = vim.fn.input({
88 prompt = "Arguments: ",
89 })
90 return vim.split(args_str, " +")
91 end,
92 },
93}
94
95dapui.setup({
96 layouts = {
97 {
98 elements = {
99 {
100 id = "watches",
101 size = 1,
102 },
103 },
104 position = "bottom",
105 size = 10,
106 },
107 },
108})