return { { "mfussenegger/nvim-dap", dependencies = { "leoluz/nvim-dap-go", 'mfussenegger/nvim-dap-python', "rcarriga/nvim-dap-ui", "nvim-neotest/nvim-nio", }, config = function() local dap = require "dap" require('dap.ext.vscode').load_launchjs("launch.json") dap.defaults.fallback.exception_breakpoints = {'raised'} local ui = require "dapui" require("dapui").setup({ layouts = { { elements = { { id = "breakpoints", size = 0.5 }, { id = "stacks", size = 0.5 }, -- { -- id = "watches", -- size = 0.25 -- }, }, position = "left", size = 25 }, { elements = { { id = "scopes", size = 1 }, }, position = "bottom", size = 10 }, { elements = { { id = "repl", size = 1 }, }, position = "bottom", size = 10 } }, }) require("dap-go").setup() require("dap-python").setup() vim.keymap.set("n", "b", dap.toggle_breakpoint) vim.keymap.set("n", "gb", dap.run_to_cursor) -- Eval var under cursor vim.keymap.set("n", "?", function() require("dapui").eval(nil, { enter = true }) end) vim.keymap.set("n", "", dap.continue) vim.keymap.set("n", "", dap.step_into) vim.keymap.set("n", "", dap.step_over) vim.keymap.set("n", "", dap.step_out) vim.keymap.set("n", "", dap.step_back) vim.keymap.set("n", "", dap.restart) dap.listeners.before.attach.dapui_config = function() ui.open() end dap.listeners.before.launch.dapui_config = function() ui.open() end vim.api.nvim_create_user_command("DapResetUI", function() ui.close() ui.open() end, {}) vim.api.nvim_create_user_command("DapCloseUI", function() ui.close() end, {}) vim.api.nvim_create_user_command("DapToggleUI", function() ui.toggle() end, {}) vim.api.nvim_create_user_command("DapConditionalBreakpoint", function() require('dap').set_breakpoint(vim.fn.input('Breakpoint condition: ')) end, {}) -- dap.listeners.before.event_terminated.dapui_config = function() -- ui.close() -- end -- dap.listeners.before.event_exited.dapui_config = function() -- ui.close() -- end end, }, }