diff --git a/plugins/by-name/dap-rr/default.nix b/plugins/by-name/dap-rr/default.nix new file mode 100644 index 00000000..f145865e --- /dev/null +++ b/plugins/by-name/dap-rr/default.nix @@ -0,0 +1,64 @@ +{ lib, ... }: +let + inherit (lib) types; + inherit (lib.nixvim) defaultNullOpts; +in +lib.nixvim.plugins.mkNeovimPlugin { + name = "dap-rr"; + packPathName = "nvim-dap-rr"; + package = "nvim-dap-rr"; + + maintainers = [ lib.maintainers.GaetanLepage ]; + + settingsOptions = { + mappings = + defaultNullOpts.mkAttrsOf types.str + { + continue = ""; + step_over = ""; + step_out = ""; + step_into = ""; + reverse_continue = ""; + reverse_step_over = ""; + reverse_step_out = ""; + reverse_step_into = ""; + step_over_i = ""; + step_out_i = ""; + step_into_i = ""; + reverse_step_over_i = ""; + reverse_step_out_i = ""; + reverse_step_into_i = ""; + } + '' + Keyboard mappings for nvim-dap-rr. + ''; + }; + + settingsExample = { + mappings = { + continue = ""; + step_over = ""; + step_out = ""; + step_into = ""; + reverse_continue = ""; + reverse_step_over = ""; + reverse_step_out = ""; + reverse_step_into = ""; + }; + }; + + # Manually supplied to nvim-dap config module + callSetup = false; + extraConfig = cfg: { + plugins.dap = { + enable = true; + extensionConfigLua = '' + require("nvim-dap-rr").setup(${lib.nixvim.toLuaObject cfg.settings}) + ''; + configurations = { + rust = lib.mkDefault [ { __raw = "require('nvim-dap-rr').get_rust_config()"; } ]; + cpp = lib.mkDefault [ { __raw = "require('nvim-dap-rr').get_config()"; } ]; + }; + }; + }; +} diff --git a/tests/test-sources/plugins/by-name/dap-rr/default.nix b/tests/test-sources/plugins/by-name/dap-rr/default.nix new file mode 100644 index 00000000..2cb07cfb --- /dev/null +++ b/tests/test-sources/plugins/by-name/dap-rr/default.nix @@ -0,0 +1,58 @@ +{ + empty = { + plugins = { + dap.enable = true; + dap-rr.enable = true; + }; + }; + + defaults = { + plugins = { + dap.enable = true; + dap-rr = { + enable = true; + + settings = { + mappings = { + continue = ""; + step_over = ""; + step_out = ""; + step_into = ""; + reverse_continue = ""; + reverse_step_over = ""; + reverse_step_out = ""; + reverse_step_into = ""; + step_over_i = ""; + step_out_i = ""; + step_into_i = ""; + reverse_step_over_i = ""; + reverse_step_out_i = ""; + reverse_step_into_i = ""; + }; + }; + }; + }; + }; + + example = { + plugins = { + dap.enable = true; + dap-rr = { + enable = true; + + settings = { + mappings = { + continue = ""; + step_over = ""; + step_out = ""; + step_into = ""; + reverse_continue = ""; + reverse_step_over = ""; + reverse_step_out = ""; + reverse_step_into = ""; + }; + }; + }; + }; + }; +}