From 4a23a0d63e9fb367410f3daede604b560ba4aa44 Mon Sep 17 00:00:00 2001 From: Dale Sedivec Date: Sun, 15 Nov 2015 10:32:46 -0600 Subject: [PATCH] Fix De Bruijn "No catch for tag" error When using avy-goto-line and typing a line number with avy-style de-bruijn, you would get an error after entering your line number and pressing RET: No catch for tag: done, exit I believe this is because avy-read is wrapped with (catch 'done ...) but avy-read-de-bruijn doesn't catch done. This adds the catch to avy-read-de-bruijn. --- avy.el | 51 ++++++++++++++++++++++++++------------------------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/avy.el b/avy.el index f42cd42..aa6d662 100644 --- a/avy.el +++ b/avy.el @@ -390,31 +390,32 @@ multiple DISPLAY-FN invokations." ;; possible that the path-len must be incremented, e.g., if we're matching ;; for x and a buffer contains xaxbxcx only every second subsequence is ;; usable for the four matches. - (let* ((path-len (ceiling (log (length lst) (length keys)))) - (alist (avy--path-alist-1 lst path-len keys))) - (while (not alist) - (cl-incf path-len) - (setq alist (avy--path-alist-1 lst path-len keys))) - (let* ((len (length (caar alist))) - (i 0)) - (setq avy-current-path "") - (while (< i len) - (dolist (x (reverse alist)) - (avy--overlay-at-full (reverse (car x)) (cdr x))) - (let ((char (funcall avy-translate-char-function (read-key)))) - (avy--remove-leading-chars) - (setq alist - (delq nil - (mapcar (lambda (x) - (when (eq (caar x) char) - (cons (cdr (car x)) (cdr x)))) - alist))) - (setq avy-current-path - (concat avy-current-path (string (avy--key-to-char char)))) - (cl-incf i) - (unless alist - (funcall avy-handler-function char)))) - (cdar alist)))) + (catch 'done + (let* ((path-len (ceiling (log (length lst) (length keys)))) + (alist (avy--path-alist-1 lst path-len keys))) + (while (not alist) + (cl-incf path-len) + (setq alist (avy--path-alist-1 lst path-len keys))) + (let* ((len (length (caar alist))) + (i 0)) + (setq avy-current-path "") + (while (< i len) + (dolist (x (reverse alist)) + (avy--overlay-at-full (reverse (car x)) (cdr x))) + (let ((char (funcall avy-translate-char-function (read-key)))) + (avy--remove-leading-chars) + (setq alist + (delq nil + (mapcar (lambda (x) + (when (eq (caar x) char) + (cons (cdr (car x)) (cdr x)))) + alist))) + (setq avy-current-path + (concat avy-current-path (string (avy--key-to-char char)))) + (cl-incf i) + (unless alist + (funcall avy-handler-function char)))) + (cdar alist))))) ;;** Rest (defun avy-window-list ()