return { 'mfussenegger/nvim-dap', dependencies = { 'rcarriga/nvim-dap-ui', 'nvim-neotest/nvim-nio', }, config = function() -- Setup Debugging -- local dap = require('dap') -- Open UI on Debugging -- local dapui = require('dapui') dapui.setup({ layouts = { { elements = { { id = 'scopes', size = 0.65 }, { id = 'breakpoints', size = 0.35 }, }, position = 'left', size = 40, }, { elements = { { id = 'repl', size = 0.5 }, { id = 'console', size = 0.5 }, }, position = 'bottom', size = 10, }, }, }) dap.listeners.before.attach.dapui_config = function() dapui.open() end dap.listeners.before.launch.dapui_config = function() dapui.open() end -- Keybinding -- vim.keymap.set( 'n', 'dt', dapui.toggle, { desc = 'Toggle Debugger UI' } ) vim.keymap.set( 'n', 'db', dap.toggle_breakpoint, { desc = 'Toggle Breakpoint' } ) vim.keymap.set( 'n', 'dc', dap.continue, { desc = 'Debugger Continue' } ) vim.keymap.set( 'n', 'dx', dap.terminate, { desc = 'Debugger Terminate' } ) vim.keymap.set( 'n', 'ds', dap.step_over, { desc = 'Debugger Step Over' } ) -- Breakpoints -- vim.api.nvim_set_hl( 0, 'DapBreakpoint', { ctermbg = 0, fg = '#993939', bg = '#31353f' } ) vim.api.nvim_set_hl( 0, 'DapLogPoint', { ctermbg = 0, fg = '#61afef', bg = '#31353f' } ) vim.api.nvim_set_hl( 0, 'DapStopped', { ctermbg = 0, fg = '#98c379', bg = '#31353f' } ) vim.fn.sign_define('DapBreakpoint', { text = '', texthl = 'DapBreakpoint', linehl = 'DapBreakpoint', numhl = 'DapBreakpoint', }) vim.fn.sign_define('DapBreakpointCondition', { text = '󰣏', texthl = 'DapBreakpoint', linehl = 'DapBreakpoint', numhl = 'DapBreakpoint', }) vim.fn.sign_define('DapBreakpointRejected', { text = '', texthl = 'DapBreakpoint', linehl = 'DapBreakpoint', numhl = 'DapBreakpoint', }) vim.fn.sign_define('DapLogPoint', { text = '', texthl = 'DapLogPoint', linehl = 'DapLogPoint', numhl = 'DapLogPoint', }) vim.fn.sign_define('DapStopped', { text = '', texthl = 'DapStopped', linehl = 'DapStopped', numhl = 'DapStopped', }) end, }