branch: externals/avy
commit fd7b02f556041c883bad66517ff2ea6fff3113e8
Author: aragaer <arag...@gmail.com>
Commit: aragaer <arag...@gmail.com>

    Add `avy-action-oneshot` variable to redefine avy-action locally
    
    Could be used this way:
    
    ```elisp
    (let ((avy-action-oneshot #'push-button))
      (avy-goto-char-timer))
    ```
---
 avy.el | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/avy.el b/avy.el
index 5d0bc9ebb9..9e411f57f6 100644
--- a/avy.el
+++ b/avy.el
@@ -455,6 +455,9 @@ KEYS is the path from the root of `avy-tree' to LEAF."
 (defvar avy-action nil
   "Function to call at the end of select.")
 
+(defvar avy-action-oneshot nil
+  "Function to call once at the end of select.")
+
 (defun avy-handler-default (char)
   "The default handler for a bad CHAR."
   (let (dispatch)
@@ -890,10 +893,12 @@ multiple OVERLAY-FN invocations."
       (t
        (funcall avy-pre-action res)
        (setq res (car res))
-       (funcall (or avy-action 'avy-action-goto)
-                (if (consp res)
-                    (car res)
-                  res))
+       (let ((action (or avy-action avy-action-oneshot 'avy-action-goto)))
+         (setq avy-action-oneshot nil)
+         (funcall action
+                  (if (consp res)
+                      (car res)
+                    res)))
        res))))
 
 (define-obsolete-function-alias 'avy--process 'avy-process

Reply via email to