2024-11-27 16:42:57 -07:00
2024-11-27 16:42:57 -07:00
2024-11-27 16:42:57 -07:00
idk
2024-11-27 13:13:22 -07:00

evil-leap

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

Tasks

DONE Many targets w/ SPC and DEL labels

CLOSED: [2024-11-27 Wed 16:04]

DONE Passthrough input on fail

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

DONE Leap backwards

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

TODO Equivalence classes

TODO Match newlines with SPC SPC

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%