diff --git a/nvim/lua/config/lazy.lua b/nvim/lua/config/lazy.lua index 37d0396..88e0e5f 100644 --- a/nvim/lua/config/lazy.lua +++ b/nvim/lua/config/lazy.lua @@ -61,15 +61,81 @@ dap.adapters.codelldb = { } local dap = require('dap') -dap.configurations.cpp = { - { - type = 'codelldb'; - request = 'launch'; - name = "Launch file"; - program = "build/source/cfi_app"; - }, -} +vim.api.nvim_create_user_command('Debug', function(opts) + local args = vim.split(opts.args, " ") -vim.api.nvim_create_user_command("Debug", function(opts) + if #args < 1 then + print("Usage: :Debug [] [...]") + return + end + + local executable = args[1] + local working_dir = (#args >= 2 and args[2] ~= "") and args[2] or vim.fn.getcwd() + local program_args = {} + if #args > 2 then + for i = 3, #args do + table.insert(program_args, args[i]) + end + end + + dap.run({ + type = 'codelldb', + request = 'launch', + name = 'Custom Debug', + program = executable, + cwd = working_dir, + args = program_args, + stopOnEntry = false, + }) +end, { + nargs = '+', + complete = 'file', + desc = 'Launch a debugger session with custom executable and args', +}) + +require("dapui").setup({ + layouts = { + { + elements = { + { id = "scopes", size = 0.8 }, + { id = "watches", size = 0.2 }, + }, + size = 40, + position = "left", + }, + { + elements = { + "repl", + "console", + }, + size = 0.25, + position = "bottom", + }, + }, + controls = { + enabled = true, + }, + floating = { + max_height = nil, + max_width = nil, + border = "rounded", + mappings = { + close = { "q", "" }, + }, + }, + windows = { indent = 1 }, +}) +local dap, dapui = require("dap"), require("dapui") +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 -end,) diff --git a/nvim/lua/plugins/debugging.lua b/nvim/lua/plugins/debugging.lua index b555866..05b4093 100644 --- a/nvim/lua/plugins/debugging.lua +++ b/nvim/lua/plugins/debugging.lua @@ -53,5 +53,12 @@ return { "mfussenegger/nvim-dap", "williamboman/mason.nvim", }, -} +}, + { + "rcarriga/nvim-dap-ui", + dependencies = { + "mfussenegger/nvim-dap", + "nvim-neotest/nvim-nio" + } +}, }