nvf/modules/plugins/debugger/nvim-dap/config.nix

84 lines
2.9 KiB
Nix
Raw Normal View History

2023-05-04 15:41:11 +00:00
{
config,
lib,
...
}: let
inherit (lib.strings) optionalString;
inherit (lib.modules) mkIf mkMerge;
inherit (lib.attrsets) mapAttrs;
2024-09-30 19:58:43 +00:00
inherit (lib.nvim.binds) addDescriptionsToMappings mkSetLuaBinding mkSetLuaLznBinding;
inherit (lib.nvim.dag) entryAnywhere entryAfter;
2023-05-04 15:41:11 +00:00
cfg = config.vim.debugger.nvim-dap;
self = import ./nvim-dap.nix {inherit lib;};
2023-06-12 00:59:34 +00:00
mappingDefinitions = self.options.vim.debugger.nvim-dap.mappings;
mappings = addDescriptionsToMappings cfg.mappings mappingDefinitions;
2023-05-04 15:41:11 +00:00
in {
2023-05-05 13:31:55 +00:00
config = mkMerge [
(mkIf cfg.enable {
vim = {
startPlugins = ["nvim-dap"];
2023-05-04 15:41:11 +00:00
pluginRC =
{
# TODO customizable keymaps
nvim-dap = entryAnywhere ''
local dap = require("dap")
vim.fn.sign_define("DapBreakpoint", { text = "🛑", texthl = "ErrorMsg", linehl = "", numhl = "" })
'';
}
// mapAttrs (_: v: (entryAfter ["nvim-dap"] v)) cfg.sources;
2023-06-12 00:59:34 +00:00
maps.normal = mkMerge [
(mkSetLuaBinding mappings.continue "require('dap').continue")
(mkSetLuaBinding mappings.restart "require('dap').restart")
(mkSetLuaBinding mappings.terminate "require('dap').terminate")
(mkSetLuaBinding mappings.runLast "require('dap').run_last")
2023-06-12 00:59:34 +00:00
(mkSetLuaBinding mappings.toggleRepl "require('dap').repl.toggle")
(mkSetLuaBinding mappings.hover "require('dap.ui.widgets').hover")
(mkSetLuaBinding mappings.toggleBreakpoint "require('dap').toggle_breakpoint")
2023-06-12 00:59:34 +00:00
(mkSetLuaBinding mappings.runToCursor "require('dap').run_to_cursor")
(mkSetLuaBinding mappings.stepInto "require('dap').step_into")
(mkSetLuaBinding mappings.stepOut "require('dap').step_out")
(mkSetLuaBinding mappings.stepOver "require('dap').step_over")
(mkSetLuaBinding mappings.stepBack "require('dap').step_back")
2023-06-12 00:59:34 +00:00
(mkSetLuaBinding mappings.goUp "require('dap').up")
(mkSetLuaBinding mappings.goDown "require('dap').down")
];
};
2023-05-05 13:31:55 +00:00
})
(mkIf (cfg.enable && cfg.ui.enable) {
vim = {
startPlugins = ["nvim-nio"];
2023-05-05 13:31:55 +00:00
2024-10-17 15:17:18 +00:00
lazy.plugins.nvim-dap-ui = {
package = "nvim-dap-ui";
setupModule = "dapui";
setupOpts = {};
2024-09-30 19:58:43 +00:00
2024-10-17 15:17:18 +00:00
keys = [
(mkSetLuaLznBinding mappings.toggleDapUI "function() require('dapui').toggle() end")
];
};
2024-09-30 19:58:43 +00:00
pluginRC.nvim-dap-ui = entryAfter ["nvim-dap"] (
optionalString cfg.ui.autoStart ''
dap.listeners.after.event_initialized["dapui_config"] = function()
require("dapui").open()
end
dap.listeners.before.event_terminated["dapui_config"] = function()
require("dapui").close()
end
dap.listeners.before.event_exited["dapui_config"] = function()
require("dapui").close()
end
''
);
};
2023-05-05 13:31:55 +00:00
})
];
2023-05-04 15:41:11 +00:00
}