branch: master
commit dfb41d0ddeef32f247e658672b4cbf82834b7f0f
Author: PythonNut <[email protected]>
Commit: Oleh Krehel <[email protected]>
Implement ivy-avy
---
ivy.el | 24 ++++++++++++++++++++++++
1 files changed, 24 insertions(+), 0 deletions(-)
diff --git a/ivy.el b/ivy.el
index 8839ba6..b983db0 100644
--- a/ivy.el
+++ b/ivy.el
@@ -152,6 +152,7 @@ Only \"./\" and \"../\" apply here. They appear in reverse
order."
(define-key map (kbd "C-k") 'ivy-kill-line)
(define-key map (kbd "S-SPC") 'ivy-restrict-to-matches)
(define-key map (kbd "M-w") 'ivy-kill-ring-save)
+ (define-key map (kbd "C-'") 'ivy-avy)
map)
"Keymap used in the minibuffer.")
(autoload 'hydra-ivy/body "ivy-hydra" "" t)
@@ -744,6 +745,29 @@ On error (read-only), call `ivy-on-del-error-function'."
(setq ivy--old-re nil)
(cl-rotatef ivy--regex-function ivy--regexp-quote))
+(defun ivy-avy ()
+ "Jump to one of the current ivy candidates."
+ (interactive)
+ (let* ((avy-all-windows nil)
+ (avy-background t)
+ (candidate (let ((candidates))
+ (save-excursion
+ (save-restriction
+ (narrow-to-region (window-start) (window-end))
+ (goto-char (point-min))
+ (forward-line)
+ (while (< (point) (point-max))
+ (push (cons (point) (selected-window))
+ candidates)
+ (forward-line))))
+ (setq avy-action #'identity)
+ (avy--process (nreverse candidates)
+ (avy--style-fn 'at-full)))))
+ (ivy-set-index (- (line-number-at-pos candidate) 2))
+ (ivy--exhibit)
+ (ivy-done)
+ (ivy-call)))
+
(defun ivy-sort-file-function-default (x y)
"Compare two files X and Y.
Prioritize directories."