local dap = require('dap') local dapui = require('dapui') local icons = require('lib.icons') dapui.setup({ icons = { expanded = icons.ui.ArrowClosed, collapsed = icons.ui.ArrowOpen }, mappings = { expand = { '', '<2-LeftMouse>' }, open = 'o', remove = 'd', edit = 'e', repl = 'r', toggle = 't', }, expand_lines = vim.fn.has('nvim-0.7'), layouts = { { elements = { { id = 'scopes', size = 0.25 }, 'breakpoints', 'stacks', 'watches', }, size = 40, position = 'right', }, { elements = { 'repl', 'console', }, size = 0.25, position = 'bottom', }, }, floating = { max_height = nil, max_width = nil, border = 'rounded', mappings = { close = { 'q', '' }, }, }, windows = { indent = 1 }, render = { max_type_length = nil, }, }) vim.fn.sign_define('DapBreakpoint', { text = icons.ui.Bug, texthl = 'DiagnosticSignError', linehl = '', numhl = '' }) 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 dap.adapters.python = { type = 'executable', command = '/usr/bin/python', args = { '-m', 'debugpy.adapter' }, } dap.configurations.python = { { type = 'python', request = 'launch', name = 'Launch file', program = '${file}', pythonPath = function() local cwd = vim.fn.getcwd() if vim.fn.executable(cwd .. '/venv/bin/python') == 1 then return cwd .. '/venv/bin/python' elseif vim.fn.executable(cwd .. '/.venv/bin/python') == 1 then return cwd .. '/.venv/bin/python' else return '/usr/bin/python' end end, }, } dap.adapters.ruby = { type = 'executable', command = 'bundle', args = { 'exec', 'readapt', 'stdio' }, } dap.configurations.ruby = { { type = 'ruby', request = 'launch', name = 'Rails', program = 'bundle', programArgs = { 'exec', 'rails', 's' }, useBundler = true, }, } vim.api.nvim_create_user_command('DapUIToggle', function() require('dapui').toggle() end, {})