Added DAP and created dedicated configuration for Rust

This commit is contained in:
Fred Drake
2024-10-01 00:07:49 -04:00
parent 3ceedb1f26
commit 32d294cd9e
8 changed files with 285 additions and 23 deletions
+200 -3
View File
@@ -4,10 +4,207 @@
dap = {
enable = true;
extensions = {
dap-go.enable = true;
dap-python.enable = true;
dap-ui.enable = true;
dap-ui = {
enable = true;
floating.mappings = { close = [ "<ESC>" "q" ]; };
};
dap-virtual-text = { enable = true; };
};
signs = {
dapBreakpoint = {
text = "";
texthl = "DapBreakpoint";
};
dapBreakpointCondition = {
text = "";
texthl = "DapBreakpointCondition";
};
dapLogPoint = {
text = "";
texthl = "DapLogPoint";
};
};
};
};
keymaps = [
{
mode = "n";
key = "<leader>dB";
action =
"\n <cmd>lua require('dap').set_breakpoint(vim.fn.input('Breakpoint condition: '))<cr>\n ";
options = {
silent = true;
desc = "Breakpoint Condition";
};
}
{
mode = "n";
key = "<leader>db";
action = ":DapToggleBreakpoint<cr>";
options = {
silent = true;
desc = "Toggle Breakpoint";
};
}
{
mode = "n";
key = "<leader>dc";
action = ":DapContinue<cr>";
options = {
silent = true;
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 = "\n <cmd>lua require('dap').down()<cr>\n ";
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 = "<cmd>lua require('dapui').toggle()<cr>";
options = {
silent = true;
desc = "Dap UI";
};
}
{
mode = "n";
key = "<leader>dw";
action = "<cmd>lua require('dap.ui.widgets').hover()<cr>";
options = {
silent = true;
desc = "Widgets";
};
}
{
mode = [ "n" "v" ];
key = "<leader>de";
action = "<cmd>lua require('dapui').eval()<cr>";
options = {
silent = true;
desc = "Eval";
};
}
];
extraConfigLua = ''
require('dap').listeners.after.event_initialized['dapui_config'] = require('dapui').open
require('dap').listeners.before.event_terminated['dapui_config'] = require('dapui').close
require('dap').listeners.before.event_exited['dapui_config'] = require('dapui').close
'';
}
+5
View File
@@ -34,6 +34,11 @@
group = "SOPS";
icon = "";
}
{
__unkeyed-1 = "<leader>d";
group = "Debug";
icon = "";
}
];
};
};
-7
View File
@@ -176,7 +176,6 @@ in { pkgs, ... }: {
nix = [ "nixfmt" ];
python = [ "black" ];
ruby = [ "rubyfmt" ];
rust = [ "rustfmt" ];
terraform = [ "tofu_fmt" ];
tf = [ "tofu_fmt" ];
typescript = [ "prettier" ];
@@ -243,11 +242,5 @@ in { pkgs, ... }: {
omnisharp.enable = true;
};
};
rustaceanvim = {
enable = true;
settings = { tools.enable_clippy = true; };
};
# rust-tools.enable = true;
};
}
+13
View File
@@ -0,0 +1,13 @@
{ pkgs, ... }: {
plugins.dap = {
enable = true;
extensions = {
dap-ui.enable = true;
dap-virtual-text.enable = true;
};
adapters = {
executables = { lldb = { command = "${pkgs.lldb_19}/bin/lldb-dap"; }; };
};
};
}
+16
View File
@@ -0,0 +1,16 @@
let
# Read all files in the current directory
files = builtins.readDir ./.;
# Filter out default.nix and non-.nix files
nixFiles = builtins.filter
(name: name != "default.nix" && builtins.match ".*\\.nix" name != null)
(builtins.attrNames files);
# Create a list of import statements
imports = map (name: ./. + "/${name}") nixFiles;
in {
# Import all configuration modules automatically
imports = imports;
}
+28
View File
@@ -0,0 +1,28 @@
{ pkgs, ... }: {
plugins = {
conform-nvim = {
enable = true;
settings = { formatters_by_ft.rust = [ "rustfmt" ]; };
};
rustaceanvim = {
enable = true;
settings = {
dap.adapter = {
command = "${pkgs.lldb_19}/bin/lldb-dap";
type = "executable";
};
tools.enable_clippy = true;
server = {
default_settings = {
inlayHints = { lifetimeElisionHints = { enable = "always"; }; };
rust-analyzer = {
cargo = { allFeatures = true; };
check = { command = "clippy"; };
};
};
};
};
};
};
}