(let* ((default-bg (or (save-excursion
(unless (eobp)
(forward-line 1)
- (unless (bobp) (forward-char -1)))
+ (unless (or (bobp) (not (bolp)))
+ (forward-char -1)))
(background-color-at-point))
(face-background 'default)))
- (bg (color-values (if (string-match "\\`unspecified-" default-bg)
+ (bg (color-values (if (or (not (stringp default-bg))
+ (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))
(defun beacon--post-command ()
"Blink if point moved very far."
(cond
- ((not (markerp beacon--previous-place))
- (beacon--vanish))
+ ;; Sanity check.
+ ((not (markerp beacon--previous-place)))
;; Blink for switching windows.
((and beacon-blink-when-window-changes
(not (eq beacon--previous-window (selected-window))))
;; Blink for movement
((beacon--movement-> beacon-blink-when-point-moves-vertically
beacon-blink-when-point-moves-horizontally)
- (beacon-blink))
- ;; Even if we don't blink, vanish any previous beacon.
- (t (beacon--vanish)))
+ (beacon-blink)))
(beacon--maybe-push-mark)
(setq beacon--window-scrolled nil))