diff --git a/README.org b/README.org index 98ee10c..0ee9278 100644 --- a/README.org +++ b/README.org @@ -1,80 +1,27 @@ #+title: evil-leap +#+subtitle: Emacs' answer to Neovim's answer to the mouse. #+author: Madeleine Sydney -Emacs' answer to Neovim's answer to the mouse +Evil-leap is a port of [[https://github.com/ggandor/leap.nvim/][leap.nvim]], a fantastic Neovim package that allows you to search for and quickly jump to two-character strings. -* Tasks +* Installation -** DONE Many targets w/ [[kbd:][SPC]] and [[kbd:][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 Character equivalence classes - -** TODO Match newlines with [[kbd:][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. +With ~use-package~ + [[https://github.com/radian-software/straight.el][Straight]]: #+begin_src elisp -(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)))) + (use-package evil-leap + :straight (:type git + :host gitlab + :repo "msyds/evil-leap") + :config + ;; Bind `evil-leap-forward' and `evil-leap-backward' here. + ) #+end_src -** TODO Avoid leaping to target directly under point +* To-do -Currently, if the point is on ~a~, that very ~ab~ pair will be given as a potential target. - -#+begin_src -↓ -ab -#+end_src - -** 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 - -[[https://github.com/emacs-evil/evil/issues/5][Weird.]] - -** TODO Leap to sexp/tree-sitter obj? - -** TODO There's no reason to depend on Evil +- [ ] Fix exception thrown when no matches. +- [ ] Fix case-sensitive searching. +- [ ] ~SPC SPC~ to match newline. +- [ ] Remove Evil dependency. +- [ ] Case-fold?