plugins/better-escape: init + tests (#626)

* adding better escape

* fixing formatting

* fixing tests

* fixing comments from pr

* fixing comments from pr

* Update tests/test-sources/plugins/utils/better-escape.nix

Co-authored-by: Gaétan Lepage <33058747+GaetanLepage@users.noreply.github.com>

* Update plugins/utils/better-escape.nix

Co-authored-by: Gaétan Lepage <33058747+GaetanLepage@users.noreply.github.com>

* Update plugins/utils/better-escape.nix

Co-authored-by: Gaétan Lepage <33058747+GaetanLepage@users.noreply.github.com>

* Update plugins/utils/better-escape.nix

Co-authored-by: Gaétan Lepage <33058747+GaetanLepage@users.noreply.github.com>

* Update plugins/utils/better-escape.nix

Co-authored-by: Gaétan Lepage <33058747+GaetanLepage@users.noreply.github.com>

* Update plugins/utils/better-escape.nix

Co-authored-by: Gaétan Lepage <33058747+GaetanLepage@users.noreply.github.com>

* fixing comments from pr

---------

Co-authored-by: Haseeb Majid <haseeb.majid@imaginecurve.com>
Co-authored-by: Gaétan Lepage <33058747+GaetanLepage@users.noreply.github.com>
This commit is contained in:
Haseeb Majid 2023-10-13 22:47:44 +01:00 committed by GitHub
parent 752f0481ce
commit bab56daddb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 95 additions and 0 deletions

View file

@ -91,6 +91,7 @@
./utils/alpha.nix
./utils/auto-save.nix
./utils/auto-session.nix
./utils/better-escape.nix
./utils/comment-nvim.nix
./utils/commentary.nix
./utils/conjure.nix

View file

@ -0,0 +1,78 @@
{
pkgs,
config,
lib,
...
}:
with lib; let
cfg = config.plugins.better-escape;
helpers = import ../helpers.nix {inherit lib;};
in {
options.plugins.better-escape =
helpers.extraOptionsOptions
// {
enable = mkEnableOption "better-escape.nvim";
package = helpers.mkPackageOption "better-escape.nvim" pkgs.vimPlugins.better-escape-nvim;
mapping = helpers.mkNullOrOption (with types; listOf str) ''
List of mappings to use to enter escape mode.
'';
timeout =
helpers.defaultNullOpts.mkNullable
(
with types;
either ints.unsigned str
)
"vim.o.timeoutlen"
''
The time in which the keys must be hit in ms.
Uses the value of `vim.o.timeoutlen` (`options.timeoutlen` in nixvim) by default.
'';
clearEmptyLines = helpers.defaultNullOpts.mkBool false ''
Clear line after escaping if there is only whitespace.
'';
keys =
helpers.defaultNullOpts.mkNullable
(
with types;
either str helpers.rawType
)
"<ESC>"
''
Keys used for escaping, if it is a function will use the result everytime.
Example (recommended):
keys.__raw = \'\'
function()
return vim.api.nvim_win_get_cursor(0)[2] > 1 and '<esc>l' or '<esc>'
end
\'\';
'';
};
config = let
setupOptions = with cfg;
{
inherit mapping;
timeout =
if isInt timeout
then helpers.mkRaw "timeout"
else timeout;
clear_empty_lines = clearEmptyLines;
inherit keys;
}
// cfg.extraOptions;
in
mkIf cfg.enable {
extraPlugins = [cfg.package];
extraConfigLua = ''
require('better_escape').setup(${helpers.toLuaObject setupOptions})
'';
};
}

View file

@ -0,0 +1,16 @@
{
empty = {
plugins.better-escape.enable = true;
};
example = {
plugins.better-escape = {
enable = true;
mapping = ["jj" "jk"];
timeout = 150;
clearEmptyLines = false;
keys = "<ESC>";
};
};
}