feat: add leap keybindings

This commit is contained in:
n3oney 2023-04-11 15:37:24 +02:00
parent c5aee897be
commit 0770b96098
No known key found for this signature in database
GPG key ID: C786693DE727850E
2 changed files with 82 additions and 20 deletions

View file

@ -1,7 +1,6 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
@ -13,18 +12,59 @@ in {
"vim-repeat"
];
vim.nnoremap = {
"<leader>h" = "<cmd> HopPattern<CR>";
};
vim.maps.normal = mkMerge [
(mkBinding cfg.mappings.leapForwardTo "<Plug>(leap-forward-to)" "Leap forward to")
(mkBinding cfg.mappings.leapBackwardTo "<Plug>(leap-backward-to)" "Leap backward to")
(mkBinding cfg.mappings.leapFromWindow "<Plug>(leap-from-window)" "Leap from window")
];
vim.maps.operator = mkMerge [
(mkBinding cfg.mappings.leapForwardTo "<Plug>(leap-forward-to)" "Leap forward to")
(mkBinding cfg.mappings.leapBackwardTo "<Plug>(leap-backward-to)" "Leap backward to")
(mkBinding cfg.mappings.leapForwardTill "<Plug>(leap-forward-till)" "Leap forward till")
(mkBinding cfg.mappings.leapBackwardTill "<Plug>(leap-backward-till)" "Leap backward till")
(mkBinding cfg.mappings.leapFromWindow "<Plug>(leap-from-window)" "Leap from window")
];
vim.maps.visualOnly = mkMerge [
(mkBinding cfg.mappings.leapForwardTo "<Plug>(leap-forward-to)" "Leap forward to")
(mkBinding cfg.mappings.leapBackwardTo "<Plug>(leap-backward-to)" "Leap backward to")
(mkBinding cfg.mappings.leapForwardTill "<Plug>(leap-forward-till)" "Leap forward till")
(mkBinding cfg.mappings.leapBackwardTill "<Plug>(leap-backward-till)" "Leap backward till")
(mkBinding cfg.mappings.leapFromWindow "<Plug>(leap-from-window)" "Leap from window")
];
vim.luaConfigRC.leap-nvim = nvim.dag.entryAnywhere ''
require('leap').add_default_mappings()
-- TODO: register custom keybinds
-- require('leap').leap {
-- opts = {
-- labels = {}
-- }
-- }
require('leap').opts = {
max_phase_one_targets = nil,
highlight_unlabeled_phase_one_targets = false,
max_highlighted_traversal_targets = 10,
case_sensitive = false,
equivalence_classes = { ' \t\r\n', },
substitute_chars = {},
safe_labels = {
"s", "f", "n", "u", "t", "/",
"S", "F", "N", "L", "H", "M", "U", "G", "T", "?", "Z"
},
labels = {
"s", "f", "n",
"j", "k", "l", "h", "o", "d", "w", "e", "m", "b",
"u", "y", "v", "r", "g", "t", "c", "x", "/", "z",
"S", "F", "N",
"J", "K", "L", "H", "O", "D", "W", "E", "M", "B",
"U", "Y", "V", "R", "G", "T", "C", "X", "?", "Z"
},
special_keys = {
repeat_search = '<enter>',
next_phase_one_target = '<enter>',
next_target = {'<enter>', ';'},
prev_target = {'<tab>', ','},
next_group = '<space>',
prev_group = '<tab>',
multi_accept = '<enter>',
multi_revert = '<backspace>',
},
}
'';
};
}

View file

@ -1,13 +1,35 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.vim.utility.motion.leap;
in {
{lib, ...}:
with lib;
with builtins; {
options.vim.utility.motion.leap = {
enable = mkEnableOption "Enable leap.nvim plugin (easy motion)";
mappings = {
leapForwardTo = mkOption {
type = types.nullOr types.str;
description = "Leap forward to";
default = "s";
};
leapBackwardTo = mkOption {
type = types.nullOr types.str;
description = "Leap backward to";
default = "S";
};
leapForwardTill = mkOption {
type = types.nullOr types.str;
description = "Leap forward till";
default = "x";
};
leapBackwardTill = mkOption {
type = types.nullOr types.str;
description = "Leap backward till";
default = "X";
};
leapFromWindow = mkOption {
type = types.nullOr types.str;
description = "Leap from window";
default = "gs";
};
};
};
}