branch: master commit eda091bf5d0c501116585d73d35b2e3ec2652fcd Author: Oleh Krehel <ohwoeo...@gmail.com> Commit: Oleh Krehel <ohwoeo...@gmail.com>
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.