2024-11-27 15:15:22 -07:00
2024-11-27 15:15:22 -07:00
2024-11-27 15:15:22 -07:00
idk
2024-11-27 13:13:22 -07:00

evil-leap

Evil's answer to Neovim's answer to the mouse

Tasks

TODO Equivalence classes

TODO Many targets w/ SPC and DEL labels

TODO Match newlines with SPC SPC

DONE Passthrough input on fail

CLOSED: [2024-11-23 Sat 09:07]

DONE Leap backwards

CLOSED: [2024-11-24 Sun 08:55]

TODO Leap from window

TODO Only leap to visible targets

Currently, we take care to only search from the point to the beg/end of the window, but we don't account for concealed text, e.g. folded org subtrees.

evil-snipe achieves this by, in their search function, checking if the target is invisible, and skipping the match, if so.

(defun evil-snipe--seek-re (data scope count)
  (let ((regex (mapconcat #'cdr data ""))
        result)
    (when (and evil-snipe-skip-leading-whitespace
               (looking-at-p "[ \t]+")
               (string-match-p "^[ \t]+" (mapconcat #'car data "")))
      (setq regex (concat regex "[^ \t]")))
    (when (setq result (re-search-forward regex scope t count))
      ; ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
      (if (or (invisible-p (match-beginning 0))  ; ←
              (invisible-p (1- (match-end 0))))  ; ←
          (evil-snipe--seek-re data scope count) ; ←
      ; ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
        result))))

TODO Avoid leaping to target directly under point

Currently, if the point is on a, that very ab pair will be given as a potential target.

↓
ab

TODO Leap any direction

TODO Cleanup w/ pre-command-hook

TODO Extract equivalence classes from char-fold-table

TODO Documentation

TODO Clarify terminology

  • "Auto-jump" really means "call evil-leap-action automatically."
  • "Jump to target" really means "call evil-leap-action on target."

TODO Comparison with evil-snipe

TODO Comparison with leap.nvim

TODO Correctly use count prefix argument

TODO Support input methods

Description
No description provided
Readme 106 KiB
Languages
Emacs Lisp 100%