diff --git a/plugins/by-name/patterns/default.nix b/plugins/by-name/patterns/default.nix new file mode 100644 index 00000000..eb68aa53 --- /dev/null +++ b/plugins/by-name/patterns/default.nix @@ -0,0 +1,47 @@ +{ lib, ... }: +lib.nixvim.plugins.mkNeovimPlugin { + name = "patterns"; + packPathName = "patterns.nvim"; + package = "patterns-nvim"; + + maintainers = [ lib.maintainers.khaneliman ]; + + settingsExample = { + preferred_regex_matcher = "lua"; + update_delay = 300; + + keymaps = { + explain_input = { + "" = { + callback = "close"; + }; + "K" = { + callback = "lang_prev"; + }; + "J" = { + callback = "lang_next"; + }; + }; + hover = { + "e" = { + callback = "edit"; + }; + }; + }; + + windows = { + hover = lib.nixvim.nestedLiteralLua '' + function(pos, side) + return { + width = math.floor(vim.o.columns * 0.8), + height = math.floor(vim.o.lines * 0.6), + border = "single", + footer = { + { "󰛪 Patterns ", "FloatTitle" }, + } + } + end + ''; + }; + }; +} diff --git a/tests/test-sources/plugins/by-name/patterns/default.nix b/tests/test-sources/plugins/by-name/patterns/default.nix new file mode 100644 index 00000000..638428ef --- /dev/null +++ b/tests/test-sources/plugins/by-name/patterns/default.nix @@ -0,0 +1,86 @@ +{ + empty = { + plugins.patterns.enable = true; + }; + + default = { + plugins.patterns = { + enable = true; + settings = { + preferred_regex_matcher = "vim"; + update_delay = 150; + + keymaps = { + explain_input = { + "" = { + callback = "apply"; + }; + "q" = { + callback = "close"; + }; + "" = { + callback = "toggle"; + }; + "H" = { + callback = "lang_prev"; + }; + "L" = { + callback = "lang_next"; + }; + }; + explain_preview = { + "q" = { + callback = "close"; + }; + "" = { + callback = "toggle"; + }; + "T" = { + callback = "mode_change"; + }; + }; + hover = { + "q" = { + callback = "close"; + }; + "i" = { + callback = "edit"; + }; + }; + }; + }; + }; + }; + + custom = { + plugins.patterns = { + enable = true; + settings = { + preferred_regex_matcher = "lua"; + update_delay = 200; + + keymaps = { + explain_input = { + "" = { + callback = "apply"; + }; + "q" = { + callback = "close"; + }; + "" = { + callback = "toggle"; + }; + }; + hover = { + "q" = { + callback = "close"; + }; + "i" = { + callback = "edit"; + }; + }; + }; + }; + }; + }; +}