diff --git a/modules/utility/motion/leap/config.nix b/modules/utility/motion/leap/config.nix index f4c8b38..4a6c571 100644 --- a/modules/utility/motion/leap/config.nix +++ b/modules/utility/motion/leap/config.nix @@ -1,7 +1,6 @@ { config, lib, - pkgs, ... }: with lib; let @@ -13,18 +12,59 @@ in { "vim-repeat" ]; - vim.nnoremap = { - "h" = " HopPattern"; - }; + vim.maps.normal = mkMerge [ + (mkBinding cfg.mappings.leapForwardTo "(leap-forward-to)" "Leap forward to") + (mkBinding cfg.mappings.leapBackwardTo "(leap-backward-to)" "Leap backward to") + (mkBinding cfg.mappings.leapFromWindow "(leap-from-window)" "Leap from window") + ]; + + vim.maps.operator = mkMerge [ + (mkBinding cfg.mappings.leapForwardTo "(leap-forward-to)" "Leap forward to") + (mkBinding cfg.mappings.leapBackwardTo "(leap-backward-to)" "Leap backward to") + (mkBinding cfg.mappings.leapForwardTill "(leap-forward-till)" "Leap forward till") + (mkBinding cfg.mappings.leapBackwardTill "(leap-backward-till)" "Leap backward till") + (mkBinding cfg.mappings.leapFromWindow "(leap-from-window)" "Leap from window") + ]; + + vim.maps.visualOnly = mkMerge [ + (mkBinding cfg.mappings.leapForwardTo "(leap-forward-to)" "Leap forward to") + (mkBinding cfg.mappings.leapBackwardTo "(leap-backward-to)" "Leap backward to") + (mkBinding cfg.mappings.leapForwardTill "(leap-forward-till)" "Leap forward till") + (mkBinding cfg.mappings.leapBackwardTill "(leap-backward-till)" "Leap backward till") + (mkBinding cfg.mappings.leapFromWindow "(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 = '', + next_phase_one_target = '', + next_target = {'', ';'}, + prev_target = {'', ','}, + next_group = '', + prev_group = '', + multi_accept = '', + multi_revert = '', + }, + } ''; }; } diff --git a/modules/utility/motion/leap/leap.nix b/modules/utility/motion/leap/leap.nix index 6a48995..045562d 100644 --- a/modules/utility/motion/leap/leap.nix +++ b/modules/utility/motion/leap/leap.nix @@ -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"; + }; + }; }; }