branch: master commit 3b75d9520d76711f2e9b6505403a241c31022115 Author: Oleh Krehel <ohwoeo...@gmail.com> Commit: Oleh Krehel <ohwoeo...@gmail.com>
Make "C-g" and "ESC" fail silently when reading char * avy.el (avy-ignored-modes): Add type. (avy-handler-default): Silence "C-g" and "ESC". (avy-goto-line): Call `avy-handler-function' instead of `avy-handler-default'. (avy-timeout-seconds): Add type. Fixes #137 --- avy.el | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/avy.el b/avy.el index ff45502..78e5d63 100644 --- a/avy.el +++ b/avy.el @@ -165,7 +165,8 @@ When nil, punctuation chars will not be matched. (defcustom avy-ignored-modes '(image-mode doc-view-mode pdf-view-mode) "List of modes to ignore when searching for candidates. -Typically, these modes don't use the text representation.") +Typically, these modes don't use the text representation." + :type 'list) (defvar avy-ring (make-ring 20) "Hold the window and point history.") @@ -352,12 +353,15 @@ KEYS is the path from the root of `avy-tree' to LEAF." (defun avy-handler-default (char) "The default handler for a bad CHAR." (let (dispatch) - (if (setq dispatch (assoc char avy-dispatch-alist)) - (progn - (setq avy-action (cdr dispatch)) - (throw 'done 'restart)) - (signal 'user-error (list "No such candidate" char)) - (throw 'done nil)))) + (cond ((setq dispatch (assoc char avy-dispatch-alist)) + (setq avy-action (cdr dispatch)) + (throw 'done 'restart)) + ((memq char '(27 ?\C-g)) + ;; exit silently + (throw 'done 'exit)) + (t + (signal 'user-error (list "No such candidate" char)) + (throw 'done nil))))) (defvar avy-handler-function 'avy-handler-default "A function to call for a bad `read-key' in `avy-read'.") @@ -1090,11 +1094,12 @@ Otherwise, forward to `goto-line' with ARG." (goto-char (point-min)) (forward-line (1- arg))) (avy-with avy-goto-line - (let* ((avy-handler-function + (let* ((avy-handler-old avy-handler-function) + (avy-handler-function (lambda (char) (if (or (< char ?0) (> char ?9)) - (avy-handler-default char) + (funcall avy-handler-old char) (let ((line (read-from-minibuffer "Goto line: " (string char)))) (when line @@ -1223,7 +1228,8 @@ The window scope is determined by `avy-all-windows' or '(define-key isearch-mode-map (kbd "C-'") 'avy-isearch))) (defcustom avy-timeout-seconds 0.5 - "How many seconds to wait for the second char.") + "How many seconds to wait for the second char." + :type 'float) (defun avy--read-candidates () "Read as many chars as possible and return their occurences.