X-Git-Url: https://code.delx.au/gnu-emacs-elpa/blobdiff_plain/d4a9dad594473c511f975017d792efc8a8339671..98f32631ffdaa9daf735799734ad9d3565146898:/beacon.el diff --git a/beacon.el b/beacon.el index 7b2289f40..a4024a043 100644 --- a/beacon.el +++ b/beacon.el @@ -5,7 +5,7 @@ ;; Author: Artur Malabarba ;; URL: https://github.com/Malabarba/beacon ;; Keywords: convenience -;; Version: 0.6.1 +;; Version: 1.2 ;; Package-Requires: ((seq "1.11")) ;; This program is free software; you can redistribute it and/or modify @@ -150,6 +150,7 @@ For instance, if you want to disable beacon on buffers where (add-hook 'beacon-dont-blink-predicates #'window-minibuffer-p) (defcustom beacon-dont-blink-major-modes '(t magit-status-mode magit-popup-mode + inf-ruby-mode gnus-summary-mode gnus-group-mode) "A list of major-modes where the beacon won't blink. Whenever the current buffer satisfies `derived-mode-p' for @@ -235,7 +236,7 @@ COLORS applied to each one." (seq-filter (lambda (o) (overlay-get o 'beacon)) (overlays-at (point)))))) -(defun beacon--vanish () +(defun beacon--vanish (&rest _) "Turn off the beacon." (when (timerp beacon--timer) (cancel-timer beacon--timer)) @@ -300,8 +301,10 @@ Only returns `beacon-size' elements." (o (delete-overlay o) (save-excursion - (while (progn (forward-char 1) - (setq o (beacon--ov-at-point))) + (while (and (condition-case nil + (progn (forward-char 1) t) + (end-of-buffer nil)) + (setq o (beacon--ov-at-point))) (let ((colors (overlay-get o 'beacon-colors))) (if (not colors) (move-overlay o (1- (point)) (point)) @@ -384,6 +387,11 @@ The same is true for DELTA-X and horizonta movement." (cond ;; Sanity check. ((not (markerp beacon--previous-place))) + ;; Blink for switching buffers. + ((and beacon-blink-when-buffer-changes + (not (eq (marker-buffer beacon--previous-place) + (current-buffer)))) + (beacon-blink-automated)) ;; Blink for switching windows. ((and beacon-blink-when-window-changes (not (eq beacon--previous-window (selected-window)))) @@ -440,11 +448,13 @@ unreliable, so just blink immediately." (add-hook 'window-scroll-functions #'beacon--window-scroll-function) (add-hook 'focus-in-hook #'beacon--blink-on-focus) (add-hook 'post-command-hook #'beacon--post-command) + (add-hook 'before-change-functions #'beacon--vanish) (add-hook 'pre-command-hook #'beacon--record-vars) (add-hook 'pre-command-hook #'beacon--vanish)) (remove-hook 'focus-in-hook #'beacon--blink-on-focus) (remove-hook 'window-scroll-functions #'beacon--window-scroll-function) (remove-hook 'post-command-hook #'beacon--post-command) + (remove-hook 'before-change-functions #'beacon--vanish) (remove-hook 'pre-command-hook #'beacon--record-vars) (remove-hook 'pre-command-hook #'beacon--vanish)))