mirror of
https://github.com/abo-abo/avy.git
synced 2025-10-13 13:33:03 +00:00
Change avy--process to accept cleanup function
Renamed to `avy-process' to indicate that it is used from another packages. Fixes #255 Fixes #266
This commit is contained in:
parent
e80251056d
commit
8db2759adf
18
avy.el
18
avy.el
@ -764,7 +764,7 @@ Set `avy-style' according to COMMMAND as well."
|
|||||||
(select-frame-set-input-focus frame))
|
(select-frame-set-input-focus frame))
|
||||||
(select-window window))))
|
(select-window window))))
|
||||||
|
|
||||||
(defun avy--process-1 (candidates overlay-fn)
|
(defun avy--process-1 (candidates overlay-fn &optional cleanup-fn)
|
||||||
(let ((len (length candidates)))
|
(let ((len (length candidates)))
|
||||||
(cond ((= len 0)
|
(cond ((= len 0)
|
||||||
nil)
|
nil)
|
||||||
@ -784,7 +784,7 @@ Set `avy-style' according to COMMMAND as well."
|
|||||||
(t
|
(t
|
||||||
(avy-read (avy-tree candidates avy-keys)
|
(avy-read (avy-tree candidates avy-keys)
|
||||||
overlay-fn
|
overlay-fn
|
||||||
#'avy--remove-leading-chars))))
|
(or cleanup-fn #'avy--remove-leading-chars)))))
|
||||||
(avy--done))))))
|
(avy--done))))))
|
||||||
|
|
||||||
(defvar avy-last-candidates nil
|
(defvar avy-last-candidates nil
|
||||||
@ -821,10 +821,13 @@ Set `avy-style' according to COMMMAND as well."
|
|||||||
(when (< pos (1- (length lst)))
|
(when (< pos (1- (length lst)))
|
||||||
(goto-char (caar (nth (1+ pos) lst)))))))
|
(goto-char (caar (nth (1+ pos) lst)))))))
|
||||||
|
|
||||||
(defun avy--process (candidates &optional overlay-fn)
|
(defun avy-process (candidates &optional overlay-fn cleanup-fn)
|
||||||
"Select one of CANDIDATES using `avy-read'.
|
"Select one of CANDIDATES using `avy-read'.
|
||||||
Use OVERLAY-FN to visualize the decision overlay."
|
Use OVERLAY-FN to visualize the decision overlay.
|
||||||
|
CLEANUP-FN should take no arguments and remove the effects of
|
||||||
|
multiple OVERLAY-FN invocations."
|
||||||
(setq overlay-fn (or overlay-fn (avy--style-fn avy-style)))
|
(setq overlay-fn (or overlay-fn (avy--style-fn avy-style)))
|
||||||
|
(setq cleanup-fn (or cleanup-fn #'avy--remove-leading-chars))
|
||||||
(unless (and (consp (car candidates))
|
(unless (and (consp (car candidates))
|
||||||
(windowp (cdar candidates)))
|
(windowp (cdar candidates)))
|
||||||
(setq candidates
|
(setq candidates
|
||||||
@ -832,13 +835,13 @@ Use OVERLAY-FN to visualize the decision overlay."
|
|||||||
candidates)))
|
candidates)))
|
||||||
(setq avy-last-candidates (copy-sequence candidates))
|
(setq avy-last-candidates (copy-sequence candidates))
|
||||||
(let ((original-cands (copy-sequence candidates))
|
(let ((original-cands (copy-sequence candidates))
|
||||||
(res (avy--process-1 candidates overlay-fn)))
|
(res (avy--process-1 candidates overlay-fn cleanup-fn)))
|
||||||
(cond
|
(cond
|
||||||
((null res)
|
((null res)
|
||||||
(message "zero candidates")
|
(message "zero candidates")
|
||||||
t)
|
t)
|
||||||
((eq res 'restart)
|
((eq res 'restart)
|
||||||
(avy--process original-cands overlay-fn))
|
(avy--process original-cands overlay-fn cleanup-fn))
|
||||||
;; ignore exit from `avy-handler-function'
|
;; ignore exit from `avy-handler-function'
|
||||||
((eq res 'exit))
|
((eq res 'exit))
|
||||||
(t
|
(t
|
||||||
@ -849,6 +852,9 @@ Use OVERLAY-FN to visualize the decision overlay."
|
|||||||
(car res)
|
(car res)
|
||||||
res))))))
|
res))))))
|
||||||
|
|
||||||
|
(define-obsolete-function-alias 'avy--process 'avy-process
|
||||||
|
"0.4.0")
|
||||||
|
|
||||||
(defvar avy--overlays-back nil
|
(defvar avy--overlays-back nil
|
||||||
"Hold overlays for when `avy-background' is t.")
|
"Hold overlays for when `avy-background' is t.")
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user