diff --git a/plugins/by-name/substitute/default.nix b/plugins/by-name/substitute/default.nix new file mode 100644 index 00000000..c4e0afc1 --- /dev/null +++ b/plugins/by-name/substitute/default.nix @@ -0,0 +1,29 @@ +{ lib, ... }: +lib.nixvim.plugins.mkNeovimPlugin { + name = "substitute"; + package = "substitute-nvim"; + description = "Operator to substitute and exchange text objects quickly."; + + maintainers = [ lib.maintainers.fwastring ]; + + settingsExample = { + on_substitute = lib.nixvim.nestedLiteralLua '' + function(params) + vim.notify("substituted using register " .. params.register) + end + ''; + + yank_substituted_text = true; + modifiers = [ + "join" + "trim" + ]; + highlight_substituted_text.timer = 750; + range = { + prefix = "S"; + complete_word = true; + auto_apply = true; + cursor_position = "start"; + }; + }; +} diff --git a/tests/test-sources/plugins/by-name/substitute/default.nix b/tests/test-sources/plugins/by-name/substitute/default.nix new file mode 100644 index 00000000..792ae4f8 --- /dev/null +++ b/tests/test-sources/plugins/by-name/substitute/default.nix @@ -0,0 +1,75 @@ +{ lib }: +{ + empty = { + plugins.substitute.enable = true; + }; + + defaults = { + plugins.substitute = { + enable = true; + settings = { + on_substitute = lib.nixvim.mkRaw "nil"; + yank_substituted_text = false; + preserve_cursor_position = false; + modifiers = lib.nixvim.mkRaw "nil"; + + highlight_substituted_text = { + enabled = true; + timer = 500; + }; + range = { + prefix = "s"; + prompt_current_text = false; + confirm = false; + complete_word = false; + group_substituted_text = false; + subject = lib.nixvim.mkRaw "nil"; + range = lib.nixvim.mkRaw "nil"; + register = lib.nixvim.mkRaw "nil"; + suffix = ""; + auto_apply = false; + cursor_position = "end"; + }; + exchange = { + motion = lib.nixvim.mkRaw "nil"; + use_esc_to_cancel = true; + preserve_cursor_position = false; + }; + }; + }; + }; + + example = { + plugins.substitute = { + enable = true; + settings = { + on_substitute = lib.nixvim.mkRaw '' + function(params) + vim.notify("substituted using register " .. params.register) + end + ''; + yank_substituted_text = true; + modifiers = [ + "join" + "trim" + ]; + highlight_substituted_text.timer = 750; + range = { + prefix = "S"; + complete_word = true; + confirm = true; + subject.motion = "iw"; + range.motion = "ap"; + suffix = "| call histdel(':', -1)"; + auto_apply = true; + cursor_position = "start"; + }; + exchange = { + motion = "ap"; + use_esc_to_cancel = false; + preserve_cursor_position = true; + }; + }; + }; + }; +}