Files
dotfiles/nvim/lua/plugins/dap.lua
FaultyBranches 377aaf83cf feat: Starting the cleanup on DAP plugins and adding a basic statusline
to futz around with potential replacement of more external plugins.
2026-06-07 14:21:19 -05:00

144 lines
3.9 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
vim.pack.add({
'https://github.com/rcarriga/nvim-dap-ui',
'https://github.com/mfussenegger/nvim-dap',
'https://github.com/nvim-neotest/nvim-nio',
'https://github.com/theHamsta/nvim-dap-virtual-text',
})
-- TODO: Needs a pass to remove hardcoding, potentially cut out mason completely and general cleanup
require('dapui').setup({
mappings = {
open = 'o',
remove = 'd',
edit = 'e',
repl = 'r',
toggle = 't',
},
layouts = {
{
elements = {
'scopes',
'breakpoints',
'stacks',
},
size = 0.33,
position = 'right',
},
{
elements = {
'console',
'watches',
},
size = 0.2,
position = 'bottom',
},
},
floating = {
max_height = nil,
max_width = nil,
border = 'single',
mappings = {
close = { 'q', '<Esc>' },
},
},
windows = {
indent = 1
},
render = {
max_type_length = nil,
},
})
require('nvim-dap-virtual-text').setup()
-- local mason_dap = require('mason-nvim-dap')
local dap, dapui = require('dap'), require('dapui')
-- mason_dap.setup({
-- ensure_installed = {
-- 'codelldb',
-- 'debugpy',
-- },
-- automatic_installation = true,
-- handlers = {
-- function(config)
-- require('mason-nvim-dap').default_setup(config)
-- end,
-- }
-- })
dap.listeners.before.attach.dapui_config = function()
dapui.open()
end
dap.listeners.before.launch.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
-- vim.fn.sign_define('DapBreakpoint', { text = 'ᛒ', texthl = '', lineh = '', numhl = '' })
vim.fn.sign_define('DapBreakpoint', { text = '🟥', texthl = '', lineh = '', numhl = '' })
vim.fn.sign_define('DapBreakpointCondition', { text = '🝌', texthl = '', lineh = '', numhl = '' })
vim.fn.sign_define('DapStopped', { text = '▶️' })
dap.adapters.gdb = {
type = 'executable',
command = 'gdb',
args = { '-i', 'dap' },
}
dap.adapters.lldb = {
command = 'lldb',
type = 'executable',
}
dap.adapters.debugpy = {
command = 'debugpy',
type = 'executable',
}
dap.configurations = {
rust = {
{
type = 'lldb',
name = 'Debug',
request = 'launch',
program = function()
return vim.fn.getcwd() .. '/target/debug/faultybranches' -- TODO: remove the testing hardcoded path
end,
stopAtBeginningOfMainSubprogram = true,
},
},
python = {
{
type = 'python',
name = 'Launch current file',
request = 'launch',
program = '${file}',
pythonPath = function()
if vim.env.VIRTUAL_ENV then
return vim.env.VIRTUAL_ENV .. '/bin/python'
end
return vim.fn.exepath('python3') or vim.fn.exepath('python') or 'python'
end
}
}
}
vim.keymap.set('n', '<leader>b', function()
require('dap').toggle_breakpoint()
end)
vim.keymap.set('n', '<leader>B', function() require('dap').set_breakpoint(vim.fn.input('Breakpoint condition: ')) end)
vim.keymap.set({ 'n', 'v' }, '<leader>dh', function() require('dap.ui.widgets').hover() end)
vim.keymap.set('n', '<F5>', function() require('dap').continue() end)
vim.keymap.set('n', '<F6>', function() require('dap').run_to_cursor() end)
vim.keymap.set('n', '<F8>', function() require('dap').terminate() end)
vim.keymap.set('n', '<F10>', function() require('dap').step_over() end)
vim.keymap.set('n', '<F11>', function() require('dap').step_into() end)
vim.keymap.set('n', '<F12>', function() require('dap').step_out() end)