]> code.delx.au - gnu-emacs-elpa/commitdiff
Fix scrolling outside command loop
authorArtur Malabarba <bruce.connor.am@gmail.com>
Thu, 15 Oct 2015 13:33:30 +0000 (14:33 +0100)
committerArtur Malabarba <bruce.connor.am@gmail.com>
Thu, 15 Oct 2015 13:33:30 +0000 (14:33 +0100)
beacon.el

index 81eb64b9d6dbbf1d4755a69c6817e864eb89daec..ba47f18eaf2dde9a566190c9fb77048f23da3e47 100644 (file)
--- a/beacon.el
+++ b/beacon.el
@@ -258,7 +258,17 @@ If DELTA is nil, return nil."
     (setq beacon--previous-place (point-marker))))
 
 (defun beacon--window-scroll-function (win _start-pos)
     (setq beacon--previous-place (point-marker))))
 
 (defun beacon--window-scroll-function (win _start-pos)
-  (setq beacon--window-scrolled win))
+  "Blink the beacon or record that window has been scrolled.
+If invoked during the command loop, record the current window so
+that it may be blinked on post-command.  This is because the
+scrolled window might not be active, but we only know that at
+`post-command-hook'.
+
+If invoked outside the command loop, `post-command-hook' would be
+unreliable, so just blink immediately."
+  (if this-command
+      (setq beacon--window-scrolled win)
+    (beacon-blink)))
 
 \f
 ;;; Minor-mode
 
 \f
 ;;; Minor-mode