{
  config,
  lib,
  ...
}: let
  inherit (lib.modules) mkIf mkDefault;
  inherit (lib.nvim.binds) mkLznBinding;

  cfg = config.vim.utility.motion.leap;
in {
  config = mkIf cfg.enable {
    vim = {
      startPlugins = ["vim-repeat"];
      lazy.plugins.leap-nvim = {
        package = "leap-nvim";
        keys = [
          (mkLznBinding ["n" "o" "x"] cfg.mappings.leapForwardTo "<Plug>(leap-forward-to)" "Leap forward to")
          (mkLznBinding ["n" "o" "x"] cfg.mappings.leapBackwardTo "<Plug>(leap-backward-to)" "Leap backward to")
          (mkLznBinding ["n" "o" "x"] cfg.mappings.leapForwardTill "<Plug>(leap-forward-till)" "Leap forward till")
          (mkLznBinding ["n" "o" "x"] cfg.mappings.leapBackwardTill "<Plug>(leap-backward-till)" "Leap backward till")
          (mkLznBinding ["n" "o" "x"] cfg.mappings.leapFromWindow "<Plug>(leap-from-window)" "Leap from window")
        ];

        after = ''
          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>',
            },
          }
        '';
      };

      binds.whichKey.register."<leader>s" = mkDefault "+Leap";
    };
  };
}