kickstart.nvim/lua/custom/plugins/python-debugging.lua

88 lines
2.5 KiB
Lua

-- python-debugging.lua: Debugging Python code with DAP
--
return {
-- DEBUGGING
-- DAP Client for nvim
-- - start the debugger with `<leader>dc`
-- - add breakpoints with `<leader>db`
-- - terminate the debugger `<leader>dt`
{
'mfussenegger/nvim-dap',
keys = {
{
'<leader>dc',
function()
require('dap').continue()
end,
desc = 'Start/Continue Debugger',
},
{
'<leader>db',
function()
require('dap').toggle_breakpoint()
end,
desc = 'Add Breakpoint',
},
{
'<leader>dt',
function()
require('dap').terminate()
end,
desc = 'Terminate Debugger',
},
},
},
-- UI for the debugger
-- - the debugger UI is also automatically opened when starting/stopping the debugger
-- - toggle debugger UI manually with `<leader>du`
{
'rcarriga/nvim-dap-ui',
dependencies = { 'mfussenegger/nvim-dap', 'nvim-neotest/nvim-nio' },
keys = {
{
'<leader>du',
function()
require('dapui').toggle()
end,
desc = 'Toggle Debugger UI',
},
},
-- automatically open/close the DAP UI when starting/stopping the debugger
config = function()
local listener = require('dap').listeners
listener.after.event_initialized['dapui_config'] = function()
require('dapui').open()
end
listener.before.event_terminated['dapui_config'] = function()
require('dapui').close()
end
listener.before.event_exited['dapui_config'] = function()
require('dapui').close()
end
end,
},
-- Configuration for the python debugger
-- - configures debugpy for us
-- - uses the debugpy installation from mason
{
'mfussenegger/nvim-dap-python',
dependencies = 'mfussenegger/nvim-dap',
config = function()
-- fix: E5108: Error executing lua .../Local/nvim-data/lazy/nvim-dap-ui/lua/dapui/controls.lua:14: attempt to index local 'element' (a nil value)
-- see: https://github.com/rcarriga/nvim-dap-ui/issues/279#issuecomment-1596258077
local dap, dapui = require 'dap', require 'dapui'
dapui.setup()
-- uses the debugypy installation by mason
local debugpyPythonPath = require('mason-registry').get_package('debugpy'):get_install_path() .. '/venv/bin/python3'
require('dap-python').setup(debugpyPythonPath, {}) ---@diagnostic disable-line: missing-fields
end,
},
}
-- The line beneath this is called `modeline`. See `:help modeline`
-- vim: ts=2 sts=2 sw=2 et