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, config,
lib, lib,
pkgs,
... ...
}: }:
with lib; let with lib; let
@ -13,18 +12,59 @@ in {
"vim-repeat" "vim-repeat"
]; ];
vim.nnoremap = { vim.maps.normal = mkMerge [
"<leader>h" = "<cmd> HopPattern<CR>"; (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 '' vim.luaConfigRC.leap-nvim = nvim.dag.entryAnywhere ''
require('leap').add_default_mappings() require('leap').opts = {
-- TODO: register custom keybinds max_phase_one_targets = nil,
-- require('leap').leap { highlight_unlabeled_phase_one_targets = false,
-- opts = { max_highlighted_traversal_targets = 10,
-- labels = {} 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 @@
{ {lib, ...}:
config, with lib;
lib, with builtins; {
pkgs,
...
}:
with lib; let
cfg = config.vim.utility.motion.leap;
in {
options.vim.utility.motion.leap = { options.vim.utility.motion.leap = {
enable = mkEnableOption "Enable leap.nvim plugin (easy motion)"; 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";
};
};
}; };
} }