return { { 'mfussenegger/nvim-dap', keys = function() local function dap(name) return function() require('dap')[name]() end end return { { 'dc', dap 'continue', desc = 'continue' }, { 'ds', dap 'step_into', desc = 'step into' }, { 'dn', dap 'step_over', desc = 'step over (next)' }, { 'df', dap 'step_out', desc = 'step out (finish)' }, { 'db', dap 'toggle_breakpoint', desc = 'toggle breakpoint' }, { 'do', function() vim.ui.input({ prompt = 'Condition: ' }, function(input) if input == nil then return end require('dap').set_breakpoint(input) end) end, desc = 'set conditional breakpoint', }, { 'dl', dap 'clear_breakpoints', desc = 'clear breakpoints' }, { 'dq', dap 'terminate', desc = 'quit' }, } end, }, { 'rcarriga/nvim-dap-ui', opts = { controls = { element = 'repl', enabled = true, icons = { disconnect = '', pause = '', play = '', run_last = '', step_back = '', step_into = '', step_out = '', step_over = '', terminate = '', }, }, element_mappings = {}, expand_lines = true, floating = { border = 'single', mappings = { close = { 'q', '' }, }, }, force_buffers = true, icons = { collapsed = '', current_frame = '', expanded = '', }, layouts = { { elements = { { id = 'scopes', size = 0.5, }, -- { -- id = "breakpoints", -- size = 0.25 -- }, { id = 'stacks', size = 0.25, }, { id = 'watches', size = 0.25, }, }, position = 'right', size = 40, }, { elements = { { id = 'repl', size = 0.5, }, { id = 'console', size = 0.5, }, }, position = 'bottom', size = 10, }, }, mappings = { edit = 'e', expand = { '', '<2-LeftMouse>' }, open = 'o', remove = 'd', repl = 'r', toggle = 't', }, render = { indent = 1, max_value_lines = 100, }, }, }, }