local dapui = require("dapui") local dap = require("dap") require("nvim-dap-virtual-text").setup {} dapui.setup() require("dap.ext.vscode").load_launchjs(nil, { rt_lldb = { "rust" } }) dap.listeners.before.attach.dapui_config = function() dapui.open() end dap.listeners.before.launch.dapui_config = function() dapui.open() end 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 vim.keymap.set("n", "db", vim.cmd.DapToggleBreakpoint, { desc = "Toggle Debug Breakpoint" }) vim.keymap.set("n", "dc", vim.cmd.DapContinue, { desc = "Debug Continue" }) vim.keymap.set("n", "dC", function() dap.run_last() end, { desc = "Debug Continue" }) vim.keymap.set("n", "dn", vim.cmd.DapStepOver, { desc = "Debug Step Over" }) vim.keymap.set("n", "di", vim.cmd.DapStepIn, { desc = "Debug Step In" }) vim.keymap.set("n", "do", vim.cmd.DapStepOut, { desc = "Debug Step Out" }) vim.keymap.set("n", "dt", vim.cmd.DapTerminate, { desc = "Debug Terminate" }) vim.keymap.set("n", "dr", vim.cmd.DapToggleRepl, { desc = "Debug Toggle REPL" }) vim.keymap.set("n", "du", function() require("dapui").toggle {} end, { desc = "Toggle Debug UI" }) vim.fn.sign_define("DapBreakpoint", { text = "", texthl = "DapBreakpoint", linehl = "", numhl = "DapBreakpoint" }) vim.fn.sign_define( "DapBreakpointCondition", { text = "ﳁ", texthl = "DapBreakpoint", linehl = "", numhl = "DapBreakpoint" } ) vim.fn.sign_define( "DapBreakpointRejected", { text = "", texthl = "DapBreakpoint", linehl = "", numhl = "DapBreakpoint" } ) vim.fn.sign_define("DapLogPoint", { text = "", texthl = "DapLogPoint", linehl = "", numhl = "DapLogPoint" }) vim.fn.sign_define("DapStopped", { text = "", texthl = "DapStopped", linehl = "", numhl = "DapStopped" }) dap.adapters.gdb = { type = "executable", command = "gdb", args = { "-i", "dap" }, } dap.adapters.lldb = { type = "executable", command = "lldb-vscode", -- adjust as needed, must be absolute path name = "lldb", } local lldb_config = { name = "Launch", type = "lldb", request = "launch", program = function() return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file") end, cwd = "${workspaceFolder}", } local lldb_attach_config = { name = "Attach to process", type = "lldb", -- Adjust this to match your adapter name (`dap.adapters.`) request = "attach", pid = require("dap.utils").pick_process, args = {}, } local rust_config = vim.tbl_deep_extend("force", lldb_config, { program = function() return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/target/debug/", "file") end, }) dap.configurations.c = { lldb_config, lldb_attach_config } dap.configurations.rust = { rust_config, lldb_attach_config } dap.adapters.delve = { type = 'server', port = '${port}', executable = { command = 'dlv', args = {'dap', '-l', '127.0.0.1:${port}'}, } }