branch: elpa/symbol-overlay
commit 39f772b531117edba596e7a1210b3dbb87d56adb
Author: Steve Purcell <[email protected]>
Commit: Steve Purcell <[email protected]>

    Prefer to check for selected window in timer callback
    
    This way we can avoid any work at all when the buffer whose timer is
    triggering is not visible.
---
 symbol-overlay.el | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/symbol-overlay.el b/symbol-overlay.el
index a1fcc3e629..28f7753364 100644
--- a/symbol-overlay.el
+++ b/symbol-overlay.el
@@ -339,18 +339,21 @@ This only affects symbols in the current displayed window 
if
   (when symbol-overlay-timer
     (cancel-timer symbol-overlay-timer)))
 
+(defun symbol-overlay-idle-timer (buf)
+  "Idle timer callback for BUF.
+This is used to maybe highlight the symbol at point, but only if
+the buffer is visible in the currently-selected window at the
+time."
+  (when (and (buffer-live-p buf) (eq (window-buffer) buf))
+    (with-current-buffer buf
+      (symbol-overlay-maybe-put-temp))))
+
 (defun symbol-overlay-update-timer (value)
   "Update `symbol-overlay-timer' with new idle-time VALUE."
   (symbol-overlay-cancel-timer)
   (setq symbol-overlay-timer
         (and value (> value 0)
-             (run-with-idle-timer
-              value t
-              (lambda (buf)
-                (when (buffer-live-p buf)
-                  (with-current-buffer buf
-                    (symbol-overlay-maybe-put-temp))))
-              (current-buffer)))))
+             (run-with-idle-timer value t 'symbol-overlay-idle-timer 
(current-buffer)))))
 
 (defun symbol-overlay-post-command ()
   "Installed on `post-command-hook'."

Reply via email to