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