From: Artur Malabarba Date: Fri, 16 Oct 2015 09:40:54 +0000 (+0100) Subject: Merge pull request #6 from tsdh/master X-Git-Url: https://code.delx.au/gnu-emacs-elpa/commitdiff_plain/b033c633490ce741dfcead5e5d0a1e8b4f86b38e?hp=d66b20674a98e3cf8d180bd607e491c894596567 Merge pull request #6 from tsdh/master Fix a bug and add blink when window changes feature --- diff --git a/beacon.el b/beacon.el index b6aa776aa..d9f239668 100644 --- a/beacon.el +++ b/beacon.el @@ -45,6 +45,7 @@ ;; ;; • To customize /when/ the beacon should blink at all, configure ;; `beacon-blink-when-window-scrolls', +;; `beacon-blink-when-window-changes', ;; `beacon-blink-when-buffer-changes', and ;; `beacon-blink-when-point-moves'. ;; @@ -89,6 +90,10 @@ movement distance (in lines) that triggers a beacon blink." "Should the beacon blink when the window scrolls?" :type 'boolean) +(defcustom beacon-blink-when-window-changes t + "Should the beacon blink when the window changes?" + :type 'boolean) + (defcustom beacon-blink-duration 0.3 "Time, in seconds, that the blink should last." :type 'number) @@ -144,6 +149,7 @@ blink." ;; Our overlay is very temporary, so we take the liberty of giving ;; it a high priority. (overlay-put ov 'priority beacon-overlay-priority) + (overlay-put ov 'window (selected-window)) (while properties (overlay-put ov (pop properties) (pop properties))) (push ov beacon--ovs) @@ -266,6 +272,7 @@ Only returns `beacon-size' elements." (defvar beacon--window-scrolled nil) (defvar beacon--previous-place nil) (defvar beacon--previous-mark-head nil) +(defvar beacon--previous-window nil) (defun beacon--movement-> (delta) "Return non-nil if latest point movement is > DELTA. @@ -294,6 +301,10 @@ If DELTA is nil, return nil." (cond ((not (markerp beacon--previous-place)) (beacon--vanish)) + ;; Blink for switching windows. + ((and beacon-blink-when-window-changes + (not (eq beacon--previous-window (selected-window)))) + (beacon-blink)) ;; Blink for scrolling. ((and beacon-blink-when-window-scrolls beacon--window-scrolled @@ -308,7 +319,8 @@ If DELTA is nil, return nil." (setq beacon--window-scrolled nil) (unless (window-minibuffer-p) (setq beacon--previous-mark-head (car mark-ring)) - (setq beacon--previous-place (point-marker)))) + (setq beacon--previous-place (point-marker)) + (setq beacon--previous-window (selected-window)))) (defun beacon--window-scroll-function (win _start-pos) "Blink the beacon or record that window has been scrolled.