diff --git a/plugins/by-name/flit/default.nix b/plugins/by-name/flit/default.nix new file mode 100644 index 00000000..6bcb8d4e --- /dev/null +++ b/plugins/by-name/flit/default.nix @@ -0,0 +1,63 @@ +{ lib, ... }: +let + inherit (lib) types; + inherit (lib.nixvim) defaultNullOpts; +in +lib.nixvim.plugins.mkNeovimPlugin { + name = "flit"; + packPathName = "flit.nvim"; + package = "flit-nvim"; + description = "f/F/t/T motions on steroids, building on the Leap interface."; + + maintainers = [ lib.maintainers.jolars ]; + + settingsOptions = { + keys = + defaultNullOpts.mkAttrsOf types.str + { + f = "f"; + F = "F"; + t = "t"; + T = "T"; + } + '' + Key mappings. + ''; + + labeled_modes = defaultNullOpts.mkStr "v" '' + A string like `"nv"`, `"nvo"`, `"o"`, etc. + ''; + + clever_repeat = defaultNullOpts.mkBool true '' + Whether to repeat with the trigger key itself. + ''; + + multiline = defaultNullOpts.mkBool true '' + Whether to enable multiline support. + ''; + + opts = defaultNullOpts.mkAttrsOf' { + type = types.anything; + pluginDefault = { }; + example = lib.literalExpression '' + { + equivalence_classes.__empty = null; + } + ''; + description = '' + Like `leap`s similar argument (call-specific overrides). + ''; + }; + }; + + settingsExample = { + keys = { + f = "f"; + F = "F"; + t = "t"; + T = "T"; + }; + labeled_modes = "nv"; + multiline = true; + }; +} diff --git a/tests/test-sources/plugins/by-name/flit/default.nix b/tests/test-sources/plugins/by-name/flit/default.nix new file mode 100644 index 00000000..40a14fb2 --- /dev/null +++ b/tests/test-sources/plugins/by-name/flit/default.nix @@ -0,0 +1,39 @@ +{ + empty = { + plugins.flit.enable = true; + }; + + defaults = { + plugins.flit = { + enable = true; + settings = { + keys = { + f = "f"; + F = "F"; + t = "t"; + T = "T"; + }; + labeled_modes = "v"; + clever_repeat = true; + multiline = true; + opts = { }; + }; + }; + }; + + example = { + plugins.flit = { + enable = true; + settings = { + keys = { + f = "f"; + F = "F"; + t = "t"; + T = "T"; + }; + labeled_modes = "nv"; + multiline = true; + }; + }; + }; +}