branch: master
commit eda091bf5d0c501116585d73d35b2e3ec2652fcd
Author: Oleh Krehel <[email protected]>
Commit: Oleh Krehel <[email protected]>
Customize ivy-avy and fix compile warnings
* ivy.el (ivy-avy): Require avy. Allow the user to customize `avy-keys',
`avy-background' and `avy-style' (but prefer 'pre to 'at-full, since
it doesn't obscure any letters). Don't issue an extra `ivy-call'.
Fixes #246
---
ivy.el | 55 +++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 39 insertions(+), 16 deletions(-)
diff --git a/ivy.el b/ivy.el
index b983db0..6c3c789 100644
--- a/ivy.el
+++ b/ivy.el
@@ -745,28 +745,51 @@ On error (read-only), call `ivy-on-del-error-function'."
(setq ivy--old-re nil)
(cl-rotatef ivy--regex-function ivy--regexp-quote))
+(defvar avy-all-windows)
+(defvar avy-action)
+(defvar avy-keys)
+(defvar avy-keys-alist)
+(defvar avy-style)
+(defvar avy-styles-alist)
+(declare-function avy--process "ext:avy")
+(declare-function avy--style-fn "ext:avy")
+
+(eval-after-load 'avy
+ '(add-to-list 'avy-styles-alist '(ivy-avy . pre)))
+
(defun ivy-avy ()
"Jump to one of the current ivy candidates."
(interactive)
+ (unless (require 'avy nil 'noerror)
+ (error "Package avy isn't installed"))
(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)))))
+ (avy-keys (or (cdr (assq 'ivy-avy avy-keys-alist))
+ avy-keys))
+ (avy-style (or (cdr (assq 'ivy-avy
+ avy-styles-alist))
+ avy-style))
+ (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 avy-style)))))
(ivy-set-index (- (line-number-at-pos candidate) 2))
(ivy--exhibit)
- (ivy-done)
- (ivy-call)))
+ (ivy-done)))
(defun ivy-sort-file-function-default (x y)
"Compare two files X and Y.