local vim = vim vim.pack.add({ { src = "https://github.com/mfussenegger/nvim-dap" }, { src = "https://github.com/rcarriga/nvim-dap-ui" }, { src = "https://github.com/nvim-neotest/nvim-nio" }, { src = "https://github.com/jay-babu/mason-nvim-dap.nvim" }, { src = "https://github.com/leoluz/nvim-dap-go" }, }) local setup_dap_keymaps = function() vim.keymap.set("n", "", function() require("dap").continue() end, { desc = "Debug: Start/Continue" }) vim.keymap.set("n", "", function() require("dap").step_into() end, { desc = "Debug: Step Into" }) vim.keymap.set("n", "", function() require("dap").step_over() end, { desc = "Debug: Step Over" }) vim.keymap.set("n", "", function() require("dap").step_out() end, { desc = "Debug: Step Out" }) vim.keymap.set("n", "b", function() require("dap").toggle_breakpoint() end, { desc = "Debug: Toggle Breakpoint" }) vim.keymap.set("n", "B", function() require("dap").set_breakpoint(vim.fn.input("Breakpoint condition: ")) end, { desc = "Debug: Set Breakpoint" }) vim.keymap.set("n", "", function() require("dapui").toggle() end, { desc = "Debug: See last session result" }) end local setup_dap = function() local dap = require("dap") local dapui = require("dapui") require("mason-nvim-dap").setup({ automatic_installation = true, ensure_installed = { "delve" }, handlers = {}, }) dapui.setup({ icons = { expanded = "▾", collapsed = "▸", current_frame = "*" }, controls = { icons = { pause = "⏸", play = "▶", step_into = "⏎", step_over = "⏭", step_out = "⏮", step_back = "b", run_last = "▶▶", terminate = "⏹", disconnect = "⏏", }, }, }) dap.listeners.after.event_initialized["dapui_config"] = dapui.open dap.listeners.before.event_terminated["dapui_config"] = dapui.close dap.listeners.before.event_exited["dapui_config"] = dapui.close require("dap-go").setup({ delve = { detached = vim.fn.has("win32") == 0, }, }) end setup_dap_keymaps() setup_dap()