2.3 KiB
2.3 KiB
evil-leap
- Tasks
- Many targets w/ SPC and DEL labels
- Passthrough input on fail
- Leap backwards
- Character equivalence classes
- Match newlines with SPC SPC
- Leap from window
- Only leap to visible targets
- Avoid leaping to target directly under point
- Leap any direction
- Cleanup w/
pre-command-hook - Extract equivalence classes from
char-fold-table - Documentation
- Correctly use
countprefix argument - Support input methods
- Leap to sexp/tree-sitter obj?
- There's no reason to depend on Evil
Emacs' answer to Neovim's answer to the mouse
Tasks
DONE Passthrough input on fail
CLOSED: [2024-11-23 Sat 09:07]
DONE Leap backwards
CLOSED: [2024-11-24 Sun 08:55]
TODO Character 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-actionautomatically." - "Jump to target" really means "call
evil-leap-actionon target."