(add-hook 'beacon-dont-blink-predicates #'window-minibuffer-p)
-(defcustom beacon-dont-blink-major-modes '(magit-status-mode magit-popup-mode)
+(defcustom beacon-dont-blink-major-modes '(t magit-status-mode magit-popup-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
one of the major-modes on this list, the beacon will not
blink."
:type '(repeat symbol))
-(defcustom beacon-dont-blink-commands '(recenter-top-bottom)
+(defcustom beacon-dont-blink-commands '(next-line previous-line
+ forward-line)
"A list of commands that should not make the beacon blink.
Use this for commands that scroll the window in very
predictable ways, when the blink would be more distracting
(defun beacon--color-range ()
"Return a list of background colors for the beacon."
- (let* ((default-bg (or (background-color-at-point)
+ (let* ((default-bg (or (save-excursion
+ (unless (eobp)
+ (forward-line 1)
+ (unless (bobp) (forward-char -1)))
+ (background-color-at-point))
(face-background 'default)))
(bg (color-values (if (string-match "\\`unspecified-" default-bg)
(face-attribute 'beacon-fallback-background :background)
default-bg)))
(fg (cond
((stringp beacon-color) (color-values beacon-color))
- ((< (color-distance "black" bg)
- (color-distance "white" bg))
+ ((and (stringp bg)
+ (< (color-distance "black" bg)
+ (color-distance "white" bg)))
(make-list 3 (* beacon-color 65535)))
(t (make-list 3 (* (- 1 beacon-color) 65535))))))
(apply #'seq-mapn (lambda (r g b) (format "#%04x%04x%04x" r g b))