Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Don't clobber match data in timer #1806

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
44 changes: 23 additions & 21 deletions flycheck.el
Original file line number Diff line number Diff line change
Expand Up @@ -3388,16 +3388,17 @@ or a list of them.)

The syntax check is deferred if FORCE-DEFERRED is non-nil, or if
`flycheck-must-defer-check' returns t."
(when (and flycheck-mode (if (listp condition)
(apply #'flycheck-may-check-automatically
condition)
(flycheck-may-check-automatically condition)))
(flycheck--clear-idle-trigger-timer)
(setq flycheck--idle-trigger-conditions nil)
(if (or force-deferred (flycheck-must-defer-check))
(flycheck-buffer-deferred)
(with-demoted-errors "Error while checking syntax automatically: %S"
(flycheck-buffer)))))
(save-match-data
(when (and flycheck-mode (if (listp condition)
(apply #'flycheck-may-check-automatically
condition)
(flycheck-may-check-automatically condition)))
(flycheck--clear-idle-trigger-timer)
(setq flycheck--idle-trigger-conditions nil)
(if (or force-deferred (flycheck-must-defer-check))
(flycheck-buffer-deferred)
(with-demoted-errors "Error while checking syntax automatically: %S"
(flycheck-buffer))))))

(defun flycheck--clear-idle-trigger-timer ()
"Clear the idle trigger timer."
Expand All @@ -3408,17 +3409,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.
Expand Down