Check buffers¶
Flycheck provides two Emacs minor modes for automatic syntax checking:
Flycheck Mode to enable syntax checking in the current buffer, and
Global Flycheck Mode to enable syntax checking in all buffers whenever
possible.
- Minor Mode Flycheck Mode¶
Enable automatic syntax checking in the current buffer.
- Minor Mode Global Flycheck Mode¶
Enable
Flycheck Modein all buffers where syntax checking is possible.Note
This mode does not enable
Flycheck Modein remote files (via TRAMP) and encrypted files. Checking remote files may be very slow depending on the network connections, and checking encrypted files would leak confidential data to temporary files and subprocesses.You can manually enable
Flycheck Modein these buffers nonetheless, but we do not recommend this for said reasons.Add the following to your init file to enable syntax checking permanently:
(add-hook 'after-init-hook #'global-flycheck-mode)
You can exclude specific major modes from syntax checking with
flycheck-global-modes:- defcustom flycheck-global-modes¶
Major modes for which
Global Flycheck Modeturns onFlycheck Mode:t(the default)Turn
Flycheck Modeon for all major modes.(foo-mode …)Turn
Flycheck Modeon for all major modes in this list, i.e. whenever the value ofmajor-modeis contained in this list.(not foo-mode …)Turn
Flycheck Modeon for all major modes not in this list, i.e. whenever the value ofmajor-modeis not contained in this list.
Note
Global Flycheck Modenever turns onFlycheck Modein major modes whosemode-classproperty isspecial, regardless of the value of this option. Syntax checking simply makes no sense in special buffers which are typically intended for non-interactive display rather than editing.See also
- :infonode:`(elisp)Major Mode Conventions`
Information about major modes, and modes marked as special.
Check automatically¶
By default Flycheck Mode automatically checks a buffer whenever
it is enabled,
the buffer is saved,
the buffer is reverted (e.g. via
global-auto-revert-mode),a new line is inserted,
or a short time after the last change was made in a buffer.
You can customise this behaviour with flycheck-check-syntax-automatically:
- defcustom flycheck-check-syntax-automatically¶
A list of events which trigger a syntax check in the current buffer:
saveCheck the buffer immediately after it was saved.
new-lineCheck the buffer immediately after a new line was inserted.
idle-changeCheck the buffer a short time after the last change. The delay is customisable with
flycheck-idle-change-delay:- defcustom flycheck-idle-change-delay¶
Seconds to wait after the last change to the buffer before starting a syntax check.
idle-buffer-switchCheck the buffer a short time after switching to it from another buffer. The delay is customisable with
flycheck-idle-buffer-switch-delay:- defcustom flycheck-idle-buffer-switch-delay¶
Seconds to wait after switching to a buffer before starting a syntax check.
If you switch to several buffers in rapid succession, the behavior depends on
flycheck-buffer-switch-check-intermediate-buffers:- defcustom flycheck-buffer-switch-check-intermediate-buffers¶
If non-nil, then a buffer you switch to will have a syntax check run even if you switch to another buffer before it starts. If nil, then only the current buffer can have a syntax check run. Note that syntax checks can still be run in other buffers due to changes to their contents.
mode-enabledCheck the buffer immediately after
Flycheck Modewas enabled.
For instance with the following setting
Flycheck Modewill only check the buffer when it was saved:(setq flycheck-check-syntax-automatically '(mode-enabled save))
When a change-driven syntax check (idle-change or save) is triggered
while a recently started check is still running, the running check is
interrupted and the new one starts immediately, since its results would no
longer match the buffer. Checks triggered on every keystroke (the
new-line condition) or by buffer switches coalesce behind the running
check instead, and syntax checkers that cannot be interrupted or that have
already made substantial progress are left to finish:
- defcustom flycheck-interrupt-running-checks¶
Whether a new syntax check interrupts a running one. With the default value of
10, only running checks younger than ten seconds are interrupted; checks that have made more progress are left to complete, and the new check is deferred until they finish, so slow syntax checkers still publish their results. Set totto always interrupt, ornilto never interrupt and always defer, like older Flycheck versions did. Settingnilfile- or directory-locally is handy for projects whose syntax checkers you never want interrupted.
Check manually¶
You can also start a syntax check explicitly with C-c ! c: