Beep when there are no matches

If avy--read-candidates doesn't find any candidates for the current
input, the user has surely made a typo.  In that case, beep at the user
to make him aware of that.
This commit is contained in:
Tassilo Horn 2015-10-22 15:25:13 +02:00
parent f28d238e0e
commit 0166808bc1

36
avy.el
View File

@ -1138,22 +1138,26 @@ This function obeys `avy-all-windows' setting."
(setq str (concat str (list char)))))
;; Highlight
(when (>= (length str) 1)
(dolist (win (avy-window-list))
(with-selected-window win
(dolist (pair (avy--find-visible-regions
(window-start)
(window-end (selected-window) t)))
(save-excursion
(goto-char (car pair))
(setq regex (regexp-quote str))
(while (re-search-forward regex (cdr pair) t)
(unless (get-char-property (1- (point)) 'invisible)
(let ((ov (make-overlay
(match-beginning 0)
(match-end 0))))
(push ov overlays)
(overlay-put ov 'window (selected-window))
(overlay-put ov 'face 'avy-goto-char-timer-face))))))))))
(let (found)
(dolist (win (avy-window-list))
(with-selected-window win
(dolist (pair (avy--find-visible-regions
(window-start)
(window-end (selected-window) t)))
(save-excursion
(goto-char (car pair))
(setq regex (regexp-quote str))
(while (re-search-forward regex (cdr pair) t)
(unless (get-char-property (1- (point)) 'invisible)
(let ((ov (make-overlay
(match-beginning 0)
(match-end 0))))
(setq found t)
(push ov overlays)
(overlay-put ov 'window (selected-window))
(overlay-put ov 'face 'avy-goto-char-timer-face))))))))
;; No matches at all, so there's surely a typo in the input.
(unless found (beep)))))
(nreverse (mapcar (lambda (ov)
(cons (cons (overlay-start ov)
(overlay-end ov))