nixvim(gdb): install and config dap for gdb (and which-key)
dap: debugger adapter protocol
This commit is contained in:
parent
a98e69571f
commit
19ee36a8be
4 changed files with 196 additions and 1 deletions
2
home-manager/flake.lock
generated
2
home-manager/flake.lock
generated
|
|
@ -526,7 +526,7 @@
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1,
|
"lastModified": 1,
|
||||||
"narHash": "sha256-j/1eDZv4tFf5CT3KAnsNsmSAkgUUnUed1NZRtmwrOzc=",
|
"narHash": "sha256-e9cx42Et2WPfIxGy6d3zuNb85KWzNi5GnM7mABJtsec=",
|
||||||
"path": "./nixvim",
|
"path": "./nixvim",
|
||||||
"type": "path"
|
"type": "path"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
188
home-manager/nixvim/config/dap.nix
Normal file
188
home-manager/nixvim/config/dap.nix
Normal file
|
|
@ -0,0 +1,188 @@
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
# appearence
|
# appearence
|
||||||
./bufferline.nix
|
./bufferline.nix
|
||||||
./lualine.nix
|
./lualine.nix
|
||||||
|
./which-key.nix
|
||||||
|
|
||||||
# file and search utilities
|
# file and search utilities
|
||||||
./telescope.nix
|
./telescope.nix
|
||||||
|
|
@ -18,6 +19,9 @@
|
||||||
./treesitter.nix
|
./treesitter.nix
|
||||||
./nix.nix
|
./nix.nix
|
||||||
|
|
||||||
|
# debugging
|
||||||
|
./dap.nix
|
||||||
|
|
||||||
# autocompletion
|
# autocompletion
|
||||||
./cmp.nix
|
./cmp.nix
|
||||||
];
|
];
|
||||||
|
|
|
||||||
3
home-manager/nixvim/config/which-key.nix
Normal file
3
home-manager/nixvim/config/which-key.nix
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
plugins.which-key.enable = true;
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue