nix/home-manager/nixvim/config/dap.nix
2024-08-06 16:29:02 +02:00

188 lines
3.7 KiB
Nix

{
plugins.dap = {
enable = true;
extensions = {
dap-ui.enable = true;
dap-virtual-text.enable = true;
};
adapters = {
executables = {
gdb = {
command = "gdb";
args = [ "-i" "dap" ];
};
};
};
configurations = {
c = [
{
name = "Launch";
type = "gdb";
request = "launch";
program.__raw = # lua
''
function()
return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. '/', "file")
end
'';
args.__raw = # lua
''
function()
return vim.fn.input("Args: ", "", "file")
end
'';
cwd = ''''${workspacefolder}'';
stopOnEntry = false;
}
];
};
};
keymaps = [
{
mode = "n";
key = "<leader>db";
action = ":DapToggleBreakpoint<cr>";
options.desc = "Toggle Breakpoint";
}
{
mode = "n";
key = "<leader>dc";
action = ":DapContinue<cr>";
options.desc = "Continue";
}
{
mode = "n";
key = "<leader>da";
action = "<cmd>lua require('dap').continue({ before = get_args })<cr>";
options = {
silent = true;
desc = "Run with Args";
};
}
{
mode = "n";
key = "<leader>dC";
action = "<cmd>lua require('dap').run_to_cursor()<cr>";
options = {
silent = true;
desc = "Run to cursor";
};
}
{
mode = "n";
key = "<leader>dg";
action = "<cmd>lua require('dap').goto_()<cr>";
options = {
silent = true;
desc = "Go to line (no execute)";
};
}
{
mode = "n";
key = "<leader>di";
action = ":DapStepInto<cr>";
options = {
silent = true;
desc = "Step into";
};
}
{
mode = "n";
key = "<leader>dj";
action = "
<cmd>lua require('dap').down()<cr>
";
options = {
silent = true;
desc = "Down";
};
}
{
mode = "n";
key = "<leader>dk";
action = "<cmd>lua require('dap').up()<cr>";
options = {
silent = true;
desc = "Up";
};
}
{
mode = "n";
key = "<leader>dl";
action = "<cmd>lua require('dap').run_last()<cr>";
options = {
silent = true;
desc = "Run Last";
};
}
{
mode = "n";
key = "<leader>do";
action = ":DapStepOut<cr>";
options = {
silent = true;
desc = "Step Out";
};
}
{
mode = "n";
key = "<leader>dO";
action = ":DapStepOver<cr>";
options = {
silent = true;
desc = "Step Over";
};
}
{
mode = "n";
key = "<leader>dp";
action = "<cmd>lua require('dap').pause()<cr>";
options = {
silent = true;
desc = "Pause";
};
}
{
mode = "n";
key = "<leader>dr";
action = ":DapToggleRepl<cr>";
options = {
silent = true;
desc = "Toggle REPL";
};
}
{
mode = "n";
key = "<leader>ds";
action = "<cmd>lua require('dap').session()<cr>";
options = {
silent = true;
desc = "Session";
};
}
{
mode = "n";
key = "<leader>dt";
action = ":DapTerminate<cr>";
options = {
silent = true;
desc = "Terminate";
};
}
{
mode = "n";
key = "<leader>du";
action.__raw = # lua
''
function()
require("dapui").toggle()
end
'';
options = {
desc = "Toggle Debugger UI";
silent = true;
};
}
];
}