;; Author: Artur Malabarba <emacs@endlessparentheses.com>
;; URL: https://github.com/Malabarba/beacon
;; Keywords: convenience
-;; Version: 0.1.1
+;; Version: 0.2
;; Package-Requires: ((seq "1.9"))
;; This program is free software; you can redistribute it and/or modify
"Should the beacon blink when the window changes?"
:type 'boolean)
+(defcustom beacon-blink-when-focused nil
+ "Should the beacon blink when Emacs gains focus?
+Note that, due to a limitation of `focus-in-hook', this might
+trigger false positives on some systems."
+ :type 'boolean
+ :package-version '(beacon . "0.2"))
+
(defcustom beacon-blink-duration 0.3
"Time, in seconds, that the blink should last."
:type 'number)
;; lines. `count-screen-lines' is too slow if the movement had
;; thousands of lines.
(save-excursion
- (goto-char (min beacon--previous-place (point)))
- (vertical-motion delta)
- (> (max (point) beacon--previous-place)
- (line-beginning-position)))))
+ (let ((p (point)))
+ (goto-char (min beacon--previous-place p))
+ (vertical-motion delta)
+ (> (max p beacon--previous-place)
+ (line-beginning-position))))))
(defun beacon--maybe-push-mark ()
"Push mark if it seems to be safe."
(setq beacon--window-scrolled nil)
(beacon-blink)))
+(defun beacon--blink-on-focus ()
+ "Blink if `beacon-blink-when-focused' is non-nil"
+ (when beacon-blink-when-focused
+ (beacon-blink)))
+
\f
;;; Minor-mode
(defcustom beacon-lighter
(if beacon-mode
(progn
(add-hook 'window-scroll-functions #'beacon--window-scroll-function)
- (add-hook 'focus-in-hook #'beacon-blink)
+ (add-hook 'focus-in-hook #'beacon--blink-on-focus)
(add-hook 'post-command-hook #'beacon--post-command)
(add-hook 'pre-command-hook #'beacon--vanish))
- (remove-hook 'focus-in-hook #'beacon-blink)
+ (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 'pre-command-hook #'beacon--vanish)))