branch: elpa/flycheck
commit 8c2ad7e0d9162b065c865dd5cb34fe8313c8fb0a
Author: Bozhidar Batsov <[email protected]>
Commit: Bozhidar Batsov <[email protected]>

    Preserve match data in idle trigger timer handler
    
    Wrap `flycheck--handle-idle-trigger` in `save-match-data` to prevent
    the idle timer from clobbering Emacs's match data, which can interfere
    with other code.  This follows the same pattern already used in
    `flycheck-handle-change`.
    
    Fixes #1805
---
 flycheck.el | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/flycheck.el b/flycheck.el
index e5af971958..56ad03bdd5 100644
--- a/flycheck.el
+++ b/flycheck.el
@@ -3492,17 +3492,18 @@ The syntax check is deferred if FORCE-DEFERRED is 
non-nil, or if
 (defun flycheck--handle-idle-trigger (buffer)
   "Run a syntax check in BUFFER if appropriate.
 This function is called by `flycheck--idle-trigger-timer'."
-  (let ((current-buffer (current-buffer)))
-    (when (buffer-live-p buffer)
-      (with-current-buffer buffer
-        (unless (or flycheck-buffer-switch-check-intermediate-buffers
-                    (eq buffer current-buffer))
-          (setq flycheck--idle-trigger-conditions
-                (delq 'idle-buffer-switch
-                      flycheck--idle-trigger-conditions)))
-        (when flycheck--idle-trigger-conditions
-          (flycheck-buffer-automatically flycheck--idle-trigger-conditions)
-          (setq flycheck--idle-trigger-conditions nil))))))
+  (save-match-data
+    (let ((current-buffer (current-buffer)))
+      (when (buffer-live-p buffer)
+        (with-current-buffer buffer
+          (unless (or flycheck-buffer-switch-check-intermediate-buffers
+                      (eq buffer current-buffer))
+            (setq flycheck--idle-trigger-conditions
+                  (delq 'idle-buffer-switch
+                        flycheck--idle-trigger-conditions)))
+          (when flycheck--idle-trigger-conditions
+            (flycheck-buffer-automatically flycheck--idle-trigger-conditions)
+            (setq flycheck--idle-trigger-conditions nil)))))))
 
 (defun flycheck-handle-change (beg end _len)
   "Handle a buffer change between BEG and END.

Reply via email to