plugins/autoclose: init + tests (#994)

This commit is contained in:
garaiza-93 2024-02-03 05:33:10 -06:00 committed by GitHub
parent 9d3ff56ed8
commit 7eefcfa5ee
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 148 additions and 4 deletions

View file

@ -108,6 +108,7 @@
./utils/alpha.nix
./utils/auto-save.nix
./utils/auto-session.nix
./utils/autoclose.nix
./utils/better-escape.nix
./utils/clipboard-image.nix
./utils/comment-nvim.nix
@ -138,11 +139,11 @@
./utils/molten.nix
./utils/multicursors.nix
./utils/navbuddy.nix
./utils/neorg.nix
./utils/neogen.nix
./utils/notify.nix
./utils/neorg.nix
./utils/netman.nix
./utils/nix-develop.nix
./utils/notify.nix
./utils/nvim-autopairs.nix
./utils/nvim-bqf.nix
./utils/nvim-colorizer.nix
@ -152,11 +153,11 @@
./utils/oil.nix
./utils/ollama.nix
./utils/persistence.nix
./utils/presence-nvim.nix
./utils/project-nvim.nix
./utils/quickmath.nix
./utils/refactoring.nix
./utils/rest.nix
./utils/presence-nvim.nix
./utils/quickmath.nix
./utils/specs.nix
./utils/spider.nix
./utils/startify.nix

View file

@ -0,0 +1,72 @@
{
lib,
helpers,
config,
pkgs,
...
}:
with lib; let
cfg = config.plugins.autoclose;
in {
options.plugins.autoclose = {
enable = mkEnableOption "autoclose";
package = helpers.mkPackageOption "autoclose" pkgs.vimPlugins.autoclose-nvim;
keys = mkOption {
type = with types; nullOr (attrsOf anything);
default = null;
description = "Configures various options, such as shortcuts for pairs, what pair of characters to use in the shortcut, etc. See the plugin's [README](https://github.com/m4xshen/autoclose.nvim?tab=readme-ov-file#-configuration) for more info.";
example = ''
keys = {
"(" = { escape = false, close = true, pair = "()" },
"[" = { escape = false, close = true, pair = "[]" },
"{" = { escape = false, close = true, pair = "{}" },
};
'';
};
options = {
disabledFiletypes = helpers.defaultNullOpts.mkListOf types.str ''["text"]'' ''
The plugin will be disabled under the filetypes in this table.
'';
disableWhenTouch =
helpers.defaultNullOpts.mkBool false
"Set this to true will disable the auto-close function when the cursor touches character that matches touch_regex.";
touchRegex =
helpers.defaultNullOpts.mkStr "[%w(%[{]"
"See [README](https://github.com/m4xshen/autoclose.nvim?tab=readme-ov-file#options)";
pairSpaces =
helpers.defaultNullOpts.mkBool false
"Pair the spaces when cursor is inside a pair of keys. See [README](https://github.com/m4xshen/autoclose.nvim?tab=readme-ov-file#options)";
autoIndent =
helpers.defaultNullOpts.mkBool true "Enable auto-indent feature";
disableCommandMode =
helpers.defaultNullOpts.mkBool false
"Disable autoclose for command mode globally";
};
};
config = with cfg; let
options' = {
inherit keys;
options = with options; {
disabled_filetypes = disabledFiletypes;
disable_when_touch = disableWhenTouch;
touch_regex = touchRegex;
pair_spaces = pairSpaces;
auto_indent = autoIndent;
disable_command_mode = disableCommandMode;
};
};
in {
extraPlugins = [cfg.package];
extraConfigLua = ''
require('autoclose').setup(${helpers.toLuaObject options'})
'';
};
}

View file

@ -0,0 +1,71 @@
{
empty = {plugins.autoclose.enable = true;};
defaults = {
plugins.autoclose.enable = true;
plugins.autoclose = {
keys = {
"(" = {
escape = false;
close = true;
pair = "()";
};
"[" = {
escape = false;
close = true;
pair = "[]";
};
"{" = {
escape = false;
close = true;
pair = "{}";
};
">" = {
escape = true;
close = false;
pair = "<>";
};
")" = {
escape = true;
close = false;
pair = "()";
};
"]" = {
escape = true;
close = false;
pair = "[]";
};
"}" = {
escape = true;
close = false;
pair = "{}";
};
"\"" = {
escape = true;
close = true;
pair = ''""'';
};
"'" = {
escape = true;
close = true;
pair = "''";
};
"`" = {
escape = true;
close = true;
pair = "``";
};
};
options = {
disabledFiletypes = ["text"];
disableWhenTouch = false;
touchRegex = "[%w(%[{]";
pairSpaces = false;
autoIndent = true;
disableCommandMode = false;
};
};
};
}