| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| Flycheck v39.0 source code.tar.gz | 2026-08-10 | 2.3 MB | |
| Flycheck v39.0 source code.zip | 2026-08-10 | 2.5 MB | |
| README.md | 2026-08-10 | 37.6 kB | |
| Totals: 3 Items | 4.8 MB | 1 | |
New Features
- #2336: Carry the rule ids
yaml-actionlint,r-lintrandpuppet-lintalready print, so the error list shows which check fired andC-c ! ecan explain lintr's linters through their reference pages; messages lose the bracketed or parenthesised id they used to carry inline. - #2335: Bring back the
sassandscsscheckers, on Dart Sass; the originals went out in 36.0 with the death of Ruby Sass. Compiling catches what stylelint alone does not, such as undefined variables and mixins; compile errors come first, deprecation warnings and@warnmessages show as warnings, and a buffer that compiles cleanly enough is handed on to the stylelint checkers. Requires Dart Sass 1.74 or newer; on anything older the checkers disable themselves rather than fail every check (#1549). - #2334: Add a
luau-analyzechecker for the Luau language, using the analyzer that ships with Luau (originally proposed in #2167). It runs in the Lua major modes but only on.luaufiles, since the analyzer rejects plain Lua constructs likegoto, and it checks the buffer through a copy next to the original, so the project's.luaurcapplies to unsaved contents. - #2331: Add
flycheck-jsonnet-ext-code-filesto bind external code files (--ext-code-file) for thejsonnetchecker (originally proposed in #1932). - #2329: Explain more checkers' diagnostics with
C-c ! e:yaml-yamllint,terraform-tflint,ruby-reek,markdown-pymarkdownandjavascript-oxlintnow open the rule's documentation page. - #2322:
textlintcarries the fixes its fixable rules emit, such ascommon-misspellings, soC-c ! fapplies them; its eslint-compatible output had the fixes all along, and now a spec keeps it that way. - #2319:
markdown-markdownlint-clinow carries the fixes markdownlint suggests, soC-c ! fandC-c ! Fapply them; the checker reads markdownlint's JSON output, and a rule configured withseverity: warningnow shows as a warning rather than an error. - #2156: Add OCaml checkers.
ocaml-dunechecks a Dune project withdune build @check, so references to sibling modules and to the project's dependencies resolve, andocamlchecks a standalone file withocamlfind ocamlc. Flycheck picks between them by whether the file belongs to a Dune project, since the compiler on its own would report every reference to a sibling module as an unbound module. - #2157: Add a
swiftchecker usingswiftc -parse, which parses a file without type-checking it, so it is right for any Swift file whether or not it belongs to a package. Type errors need a language server that knows how the project is built, throughglobal-flycheck-eglot-modeorflycheck-lsp-mode. - #2286: Make
tcl-nagelfarconfigurable:flycheck-tcl-nagelfar-syntax-databaseslists the databases to load with-s, so a project whose procedures span several files stops reporting them as unknown commands, andflycheck-tcl-nagelfar-argspasses arbitrary arguments (originally proposed in #1906). - #2279: Show LSP diagnostic tags. A language server marks unused imports and unreachable code as unnecessary and stale APIs as deprecated; those errors are now dimmed and struck through respectively, on top of the usual highlighting, with
flycheck-eglot-modeand the nativeflycheck-lspchecker (#2275). Errors gain atagsslot, so other checkers can set them too. A tag is not a level: an unused import is still a warning. - #2231: Make the
rust-clippychecker configurable withflycheck-rust-clippy-args(extracargo clippyarguments) and theflycheck-rust-clippy-tests,flycheck-rust-clippy-all-targetsandflycheck-rust-clippy-all-featurestoggles;flycheck-rust-featuresnow applies torust-clippyas well (originally proposed in #2087 and #2125). - #2231: Add
flycheck-rust-editionto set the edition (--edition) for therustchecker when checking single-file crates outside a Cargo project. - #2234: Make the
python-ruffchecker configurable without a config file:flycheck-python-ruff-select,flycheck-python-ruff-extend-selectandflycheck-python-ruff-ignorefor rule tuning,flycheck-python-ruff-target-version,flycheck-python-ruff-preview, andflycheck-python-ruff-argsfor arbitraryruff checkarguments. - #2237: Expose more
ruby-rubocopoptions:flycheck-rubocop-serverto keep a warm server process alive (--server),flycheck-rubocop-onlyandflycheck-rubocop-exceptto focus or suppress cops, andflycheck-rubocop-argsfor arbitrary arguments. - #2238: Add
flycheck-python-mypy-argsfor passing arbitrary arguments (such as--strictor--ignore-missing-imports) tomypy. - #2239: Add
flycheck-dockerfile-hadolint-configto pointdockerfile-hadolintat a.hadolint.yamlfile (via--config) andflycheck-dockerfile-hadolint-argsfor arbitrary arguments. - #2240: Expose more
terraform-tflintoptions:flycheck-tflint-configfor a.tflint.hclfile (--config),flycheck-tflint-enabled-rules/flycheck-tflint-disabled-rules(--enable-rule/--disable-rule), andflycheck-tflint-argsfor arbitrary arguments. - #2241: Turn
flycheck-stylelint-argsinto a real user option, so the four stylelint checkers (css/scss/sass/less) accept arbitrary arguments such as--custom-syntax. - #2242: Add
flycheck-luacheck-globalsto allow extra globals (--globals) andflycheck-luacheck-argsfor arbitrary arguments tolua-luacheck. - #2243: Add
flycheck-yamllint-argsfor passing arbitrary arguments toyamllint. - #2245: Add
flycheck-flake8-argsandflycheck-pylint-argsfor passing arbitrary arguments (such as flake8's--select/--ignoreor pylint's--disable/--load-plugins) to thepython-flake8andpython-pylintcheckers. - #2246: Add
flycheck-phpcs-argsandflycheck-phpmd-argsfor passing arbitrary arguments (such as phpcs's--sniffs/--exclude/--severity) to thephp-phpcsandphp-phpmdcheckers. - #2247: Add args vars to the
elixir-credo,erlangandscala-scalastylecheckers:flycheck-elixir-credo-args,flycheck-erlang-argsandflycheck-scalastyle-args. - #2248: Add args vars to the
protobuf-protoc,puppet-lintandstatixcheckers:flycheck-protoc-args,flycheck-puppet-lint-argsandflycheck-statix-args. - #2249: Add args vars to the
markdown-markdownlint-cli,markdown-markdownlint-cli2andtextlintcheckers:flycheck-markdown-markdownlint-cli-args,flycheck-markdown-markdownlint-cli2-argsandflycheck-textlint-args. - #2254: Add args vars to the Go checkers:
flycheck-go-gofmt-args,flycheck-go-vet-args,flycheck-go-build-args,flycheck-go-test-argsandflycheck-go-errcheck-args. - #2256: Make the JavaScript and data-format checkers configurable:
javascript-oxlintgainsflycheck-javascript-oxlint-config,flycheck-javascript-oxlint-denyandflycheck-javascript-oxlint-allowfor rules and categories, and an args var;yaml-actionlintgainsflycheck-yaml-actionlint-config; andjavascript-standard,json-jqandyaml-jsyamlgain args vars. -
#2261: Let a checker step aside when its tool cannot run in the buffer, instead of failing the same way on every check.
python-flake8,python-ruff,python-pylint,python-mypy,ruby-rubocop/ruby-standard/ruby-chef-cookstyle,sh-shellcheckand the four stylelint checkers now recognise the exit statuses their tools use for a bad invocation, an unreadable configuration or a missing dependency, and disable themselves with the reason rather than reporting a suspicious result. Apython-flake8running under an interpreter that lacks its dependencies now saysModuleNotFoundError: No module named 'pycodestyle', and a stylelint with no configuration file says so.C-u C-c ! xre-enables a checker that disabled itself. -
#2270: Say so when nothing can check a buffer, instead of leaving an inert
FlyC-in the mode line with no explanation. Flycheck mentions it once per major mode per session, and distinguishes a mode no checker supports from one whose checkers are all unusable, which usually means the tool is not installed. - #2270: Mark an error whose fix has to be fetched before it is known to exist, such as an LSP
quickfixcode action, with[fix?]in the error list. Those errors deliberately carry no fix indicator, since it would promise a fix that may not be there, but nothing suggestedC-c ! fwas worth a try either.
Bugs fixed
- #2333: Stop the C/C++ checkers warning about
#pragma oncein every standalone header (#2178): the buffer is always the compiler's main file, so the warning fired on the very idiom headers are supposed to use. In a source file it still fires, as intended. - #2331: Read go-jsonnet's static errors, which carry no
STATIC ERROR:prefix and never matched the patterns written against the C++ binary, so thejsonnetchecker reported nothing on the implementation flycheck's own documentation recommends. - #2327: Read Scala 3's diagnostics. The compiler draws each of them in a box under a
-- [E008] Not Found Error: file:line:columnheader, with unconditional coloring, so thescalachecker has reported nothing on Scala 3 since dotty shipped. Scala 2's plain output is still read (#2179). - #2325: Stop
org-lintfreezing Emacs on large Org setups (#2161): itsinvalid-id-linkchecker rescans every org-id file in the session on each check, so it sits in the newflycheck-org-lint-disabled-checkersby default; set that to nil to run everything org-lint has. - #2324: Keep the errors earlier checkers in a chain reported when a later checker dies by a signal, and say what killed it, instead of clearing the buffer's whole result (#1881).
- #2323: Fix
flycheck-next-errorcycling forever between two errors when one's region sits inside the other's, andflycheck-previous-errorskipping the inner one (#1781). Language servers report overlapping regions routinely, so the 2020 bug bites much harder today. - #2299: Show an annotation straight away when you jump to an error, rather than on the next thing you do (#2293). Annotations are built for the visible part of the buffer from
post-command-hook, which runs before redisplay, so a jump that sends point off screen was building them while the window still described where it had been. - #2299: Keep a
sidelineannotation off the column the continuation glyph needs, so a message that fits stops spilling onto the next line by one character (#2292). Without a right fringe to draw that glyph in, as on a terminal, the rightmost column is not text's to use. - #2297: Read rebar3's diagnostics again. rebar3 3.24 replaced
file:line:column: messagewith a box drawn around the offending line, which none of the patterns matched, soerlang-rebar3has been reporting nothing since. The mark under the offending line says which column it means, so the column survives. Older rebar3's plain output is still read. - #2297: Read a parse error from the byte compiler on Emacs 31 and newer, which goes on to name the buffer it was reading and so no longer matched.
- #2297: Point the
rstchecker atrst2pseudoxml. Docutils 0.21 dropped the.pyfrom its front ends, sorst2pseudoxml.pyhas not existed since April 2024 and the checker had nothing to run. - #2289: Report
check-declarewarnings again on Emacs 29 and newer. Emacs 29 put the whole warning on one line where earlier versions broke it across two, which the pattern did not allow, soflycheck-emacs-lisp-check-declarehas been finding nothing since. - #2289: Stop byte-compiling and checkdoc'ing
Easkfiles, which hold data rather than code. The list of such files still named only Cask and Carton, and theEldevexclusion beside it compared a whole path against a bare file name, so it never applied either. - #2289: Drop the program name jq 1.7 puts in front of its diagnostics, so a
json-jqmessage readsExpected value before ','rather thanjq: parse error: Expected value before ','. - #2303: Fix Flycheck asking Eglot for diagnostics a hundred times a second while a diagnostic is live, on Emacs 31 with a server that answers
textDocument/diagnostic(#2291). The two reports Eglot answers with are the two halves of one set, the pulled diagnostics and the pushed ones; taking them as competing answers made each one look like a change, and the check that followed asked again. Flycheck now assembles the reports that arrive together and re-checks only when the result differs from what it already shows. Diagnostics a report did not account for are kept rather than dropped, so the pulled and the pushed set both reach the buffer. - #2284: Fix Emacs exhausting
max-lisp-eval-depthin an Eglot buffer on Emacs 31 (#2201). Eglot answers one request for diagnostics with two reports, the pulled set and then the pushed one, and #2278 treated only the first as the answer; the second looked volunteered and started a check that asked again. - #2282: Refuse a quick fix whose edit names coordinates that cannot mean what they say, rather than editing somewhere the checker never pointed at. A column of zero used to raise an
args-out-of-range, a negative line silently edited the first line, and an end before its start was quietly swapped. A position past the end of the buffer is still allowed, since a fix for a missing trailing newline names one. - #2281: Fold a multi-line message onto one line in
flycheck-annotate-mode's compact styles. Plenty of checkers wrap a message over several lines, and the newline reached the screen:eolgave the annotated line extra rows instead of sitting after it, andsidelinelost the right-edge alignment that defines it. Thebelowstyle still shows messages in full. - #2280: Carry
flycheck-annotate-background's line tint through abelow-style annotation, so the tinted line and the messages under it read as one region instead of a tinted bar, an untinted block and a tinted bar again (#2276). The messages keep their own colours. - #2278: Fix Emacs locking up in an Eglot buffer whose server answers
textDocument/diagnosticrather than pushing (#2262). Under that model asking Eglot for diagnostics sends a request and returns, so the answer arrived after the guard against re-checking had unwound: the answer started a check, the check asked again, and rust-analyzer was fielding hundreds of requests a second. - #2266: Stop re-running a check for a diagnostics push that changes nothing. Language servers republish an unchanged set freely while they index or build, and every one of those used to cost a full check, overlay rebuild included (#2262). Both the Eglot bridge and the native
flycheck-lspchecker now compare before re-checking.flycheck-verify-setupreports how many pushes a buffer's server sent, how many of them changed anything, and at what rate. - #2277: Stop the
*eldoc*window still popping open on a jump when any Eldoc source answers asynchronously, such as a language server (#2201). Eldoc waits for every source before displaying, so the display outlived the binding #2265 relied on. - #2265: Stop
flycheck-next-errorand other jumps popping the*eldoc*window open. Documenting interactively is what refreshes the echo area after a command Eldoc does not recognise, buteldoc-display-in-bufferreads the same flag as a request to show the documentation buffer (#2201). Only the echo area sees the request now; the buffer is still kept up to date. - #2264: Make the two LSP bridges compose, so a lint server can run behind Eglot's server: with
flycheck-eglot-modeandflycheck-lsp-modeboth on and both-exclusiveoptions nil,eglot-checknow chains toflycheck-lspand both report into the same error list. Previously each bridge chained only to a command checker and never to the other, so whichever mode enabled last silently won. Which of the two leads no longer depends on the order the modes enable in either. - #2257: Fix the stale value of
flycheck-version, whichM-x flycheck-versionreports when Flycheck was not installed as a package. Development builds now report39.0-snapshot. - #2259: Stop marking every LSP diagnostic as fixable. A code-action fix is only fetched when applied, so Flycheck cannot know in advance that one exists, and marking it anyway replaced the familiar double-arrow indicator with the fix indicator on every diagnostic in an Eglot or
flycheck-lspbuffer. The fix indicator, the error list's[fix]badge and the inline fix marker now appear only where a fix is known to exist;C-c ! fstill asks the server on any diagnostic. - #2259: Explain the mode-line indicator when no error counts sit behind it:
-,!,.and?now say what they mean in a tooltip, and clicking one runsflycheck-verify-setupon the buffer. - #2259: Replace the wall of text Flycheck printed to the echo area when it could not read a checker's output. A crashing linter, such as a misconfigured
python-flake8printing a traceback, now produces one line naming the checker and pointing atC-c ! v, which shows what the checker actually printed. Flycheck no longer suggests filing a bug report against itself for what is nearly always a local setup problem. - #2233: Fix
flycheck-annotate-mode'sbelowstyle trapping vertical motion on the annotated line -next-lineneeded an extra press to get past it andevil-next-visual-linecould not move past it at all. The multi-line message now hangs off the following line instead of the annotated line's newline. - #2235: Fix
flycheck-verify-setuperroring withWrong type argument: number-or-marker-p, nilwheneslintis not installed (#2232);flycheck-call-checker-process-for-outputno longer chokes on a missing executable either. - #2236: Detect the project root of a
javascript-eslintbuffer from a flat config file (eslint.config.jsand its.mjs/.cjs/.tsvariants), not only the legacy.eslintrc/.eslintignorethat ESLint 9 dropped. - #2244: Apply
flycheck-go-build-tagsto thego-vetchecker as well, so a tagged build is checked consistently across the Go checkers. - #2255: Fix the error message not reaching the echo area after
flycheck-next-errorand other jumps, with the default Eldoc-based display (#2201); Eldoc keeps out of the echo area unless the command that ran is one it knows, so Flycheck now asks it to document interactively. - #2250: Fix several option-variable defects:
flycheck-cuda-includesandflycheck-tflint-variable-filesused a directory widget for options that are lists of files,flycheck-annotate-format-functionandflycheck-annotate-style-functionswere missing:risky, and a few options carried a malformed:package-version.
Changes
- #2313: Truncate a
sidelineannotation that cannot fit between the code and the window edge, with an ellipsis, instead of letting it land after the code and wrap onto the next line (#2312). - #2311: Remove the
hamlchecker; usehaml-lint, which reports a template that fails to parse as well as one that parses but reads badly. Haml 6 replaced its command line with subcommands in 2022, sohaml -c --stdinhas been answeringCould not find command "_c"ever since, and neither replacement will do:haml parsereports no line number, andhaml renderruns the template's Ruby. - #2304: Compile without warnings on Emacs 31, which made
when-let,if-let,revert-buffer-in-progress-pand a bareanyinrxobsolete. Installing Flycheck there printed a screenful of them, and our own build treats a warning as an error, so the snapshot CI job could not get as far as running the specs. - #2287: Copy every error at point as one kill-ring entry, so a single yank pastes them all, and show the lot in the echo area rather than only the first (#2096). They went in one at a time before, which left the rest behind
M-y, and a destructivenreversemeant the echo area only ever showed one. A message containing a%is no longer read as a format string. - #2250: Tidy up the configuration for consistency: rename
flycheck-mode-success-indicatortoflycheck-mode-line-success-indicator,flycheck-jsonnet-command-argstoflycheck-jsonnet-args, and the markdownlint-cli-enable-rules/-disable-rulesoptions to-enabled-rules/-disabled-rules(the old names remain as obsolete aliases), and mark more options:safeso they can be set as file- or directory-local variables. - #2251: Improve two stale defaults:
flycheck-gfortran-language-standardnow defaults to nil (GFortran's own default) instead of the 1995 standard, andflycheck-phpcs-changed-git-basedefaults to"main"instead of"trunk". - #2252: Give the config-file options a single, consistent name scheme: the
…rcvariables (flycheck-flake8rc,flycheck-rubocoprc,flycheck-stylelintrc, and the rest) are renamed to a…-configsuffix (flycheck-flake8-config,flycheck-rubocop-config,flycheck-stylelint-config, …), matching the newer checkers. The old names keep working as obsolete aliases. - #2253: Pick more modern defaults when several checkers support a language:
python-ruffis now preferred overpython-flake8,markdown-markdownlint-cli2overmarkdown-markdownlint-cli, andpython-pyrightis reachable (ahead ofpython-pycompile) instead of a silent no-op. Reorderflycheck-checkersor useflycheck-select-checkerto override. - #2267: Rename
flycheck-pylintrctoflycheck-pylint-config, the one config-file option #2252 left on the old scheme. The old name keeps working as an obsolete alias.
What's Changed
- Make the Rust checkers more configurable by @bbatsov in https://github.com/flycheck/flycheck/pull/2231
- Fix below-style annotations trapping vertical motion by @bbatsov in https://github.com/flycheck/flycheck/pull/2233
- Make the python-ruff checker configurable by @bbatsov in https://github.com/flycheck/flycheck/pull/2234
- Don't crash flycheck-verify-setup when eslint is missing by @bbatsov in https://github.com/flycheck/flycheck/pull/2235
- Detect eslint project roots from flat config files by @bbatsov in https://github.com/flycheck/flycheck/pull/2236
- Expose more ruby-rubocop options by @bbatsov in https://github.com/flycheck/flycheck/pull/2237
- Add a flycheck-python-mypy-args escape hatch by @bbatsov in https://github.com/flycheck/flycheck/pull/2238
- Let dockerfile-hadolint use a config file and extra arguments by @bbatsov in https://github.com/flycheck/flycheck/pull/2239
- Expose more terraform-tflint options by @bbatsov in https://github.com/flycheck/flycheck/pull/2240
- Make flycheck-stylelint-args a real user option by @bbatsov in https://github.com/flycheck/flycheck/pull/2241
- Add --globals and an args var to lua-luacheck by @bbatsov in https://github.com/flycheck/flycheck/pull/2242
- Add a flycheck-yamllint-args escape hatch by @bbatsov in https://github.com/flycheck/flycheck/pull/2243
- Apply build tags to go-vet too by @bbatsov in https://github.com/flycheck/flycheck/pull/2244
- Add args vars to the Python flake8 and pylint checkers by @bbatsov in https://github.com/flycheck/flycheck/pull/2245
- Add args vars to the PHP phpcs and phpmd checkers by @bbatsov in https://github.com/flycheck/flycheck/pull/2246
- Add args vars to the elixir-credo, erlang and scala-scalastyle checkers by @bbatsov in https://github.com/flycheck/flycheck/pull/2247
- Add args vars to the protobuf, puppet-lint and statix checkers by @bbatsov in https://github.com/flycheck/flycheck/pull/2248
- Add args vars to the markdownlint and textlint checkers by @bbatsov in https://github.com/flycheck/flycheck/pull/2249
- Tidy up the option-variable definitions by @bbatsov in https://github.com/flycheck/flycheck/pull/2250
- Improve two stale checker defaults by @bbatsov in https://github.com/flycheck/flycheck/pull/2251
- Unify config-file option names on the -config suffix by @bbatsov in https://github.com/flycheck/flycheck/pull/2252
- Prefer modern checkers in the default selection order by @bbatsov in https://github.com/flycheck/flycheck/pull/2253
- Add args vars to the Go checkers by @bbatsov in https://github.com/flycheck/flycheck/pull/2254
- Show the error message after a jump with the eldoc display by @bbatsov in https://github.com/flycheck/flycheck/pull/2255
- Make the JavaScript and data-format checkers configurable by @bbatsov in https://github.com/flycheck/flycheck/pull/2256
- Retarget the unreleased version tags at 39 by @bbatsov in https://github.com/flycheck/flycheck/pull/2258
- Fix current version variable value by @saulotoledo in https://github.com/flycheck/flycheck/pull/2257
- Make Flycheck say what went wrong instead of leaving you guessing by @bbatsov in https://github.com/flycheck/flycheck/pull/2259
- Call the development version 39.0-snapshot by @bbatsov in https://github.com/flycheck/flycheck/pull/2260
- Let more checkers step aside when their tool cannot run by @bbatsov in https://github.com/flycheck/flycheck/pull/2261
- Chain the LSP bridges to each other by @bbatsov in https://github.com/flycheck/flycheck/pull/2264
- Keep the eldoc display out of the doc window by @bbatsov in https://github.com/flycheck/flycheck/pull/2265
- Skip the re-check when a diagnostics push changes nothing by @bbatsov in https://github.com/flycheck/flycheck/pull/2266
- Rename flycheck-pylintrc to flycheck-pylint-config by @bbatsov in https://github.com/flycheck/flycheck/pull/2267
- Bring the troubleshooting page up to date by @bbatsov in https://github.com/flycheck/flycheck/pull/2268
- Fix the docs workflow's path filter by @bbatsov in https://github.com/flycheck/flycheck/pull/2269
- Say when nothing can check a buffer, and flag fixes that need fetching by @bbatsov in https://github.com/flycheck/flycheck/pull/2270
- Fill the gaps in the checker-chaining docs by @bbatsov in https://github.com/flycheck/flycheck/pull/2271
- Build the manual without warnings, and keep it that way by @bbatsov in https://github.com/flycheck/flycheck/pull/2272
- Add a FAQ by @bbatsov in https://github.com/flycheck/flycheck/pull/2273
- Give Windows longer to wait for a syntax check by @bbatsov in https://github.com/flycheck/flycheck/pull/2274
- Keep the eldoc window shut when a source answers late by @bbatsov in https://github.com/flycheck/flycheck/pull/2277
- Stop the pull-diagnostics feedback loop with Eglot by @bbatsov in https://github.com/flycheck/flycheck/pull/2278
- Show LSP diagnostic tags by @bbatsov in https://github.com/flycheck/flycheck/pull/2279
- Tint a below-style annotation with the line it belongs to by @bbatsov in https://github.com/flycheck/flycheck/pull/2280
- Fold a multi-line message onto one line in the compact styles by @bbatsov in https://github.com/flycheck/flycheck/pull/2281
- Refuse a fix whose edit points nowhere real by @bbatsov in https://github.com/flycheck/flycheck/pull/2282
- Reshoot the two screenshots that showed things that no longer exist by @bbatsov in https://github.com/flycheck/flycheck/pull/2283
- Take both of Eglot's reports as one answer by @bbatsov in https://github.com/flycheck/flycheck/pull/2284
- Make tcl-nagelfar configurable by @bbatsov in https://github.com/flycheck/flycheck/pull/2286
- Copy all the errors at point, and show all of them by @bbatsov in https://github.com/flycheck/flycheck/pull/2287
- Add OCaml checkers for Dune projects and standalone files by @bbatsov in https://github.com/flycheck/flycheck/pull/2156
- Add Swift compiler checker by @bbatsov in https://github.com/flycheck/flycheck/pull/2157
- Make the language checker specs actually run by @bbatsov in https://github.com/flycheck/flycheck/pull/2289
- python-ruff correct config priority by @rhoit in https://github.com/flycheck/flycheck/pull/2285
- Add a fixer for the perlimports checker by @mavit in https://github.com/flycheck/flycheck/pull/2288
- Test checker parsing against recorded tool output by @bbatsov in https://github.com/flycheck/flycheck/pull/2294
- Compare recorded checker output against the tools by @bbatsov in https://github.com/flycheck/flycheck/pull/2295
- Record checker output in a container of checkers by @bbatsov in https://github.com/flycheck/flycheck/pull/2296
- Read rebar3 and the Emacs 31 byte compiler again by @bbatsov in https://github.com/flycheck/flycheck/pull/2297
- Write down how a checker gets tested by @bbatsov in https://github.com/flycheck/flycheck/pull/2298
- Fix two annotation display bugs by @bbatsov in https://github.com/flycheck/flycheck/pull/2299
- Simplify the fixture plumbing, and gate on compile warnings by @bbatsov in https://github.com/flycheck/flycheck/pull/2300
- Take the reports Eglot answers with as one set by @bbatsov in https://github.com/flycheck/flycheck/pull/2303
- Compile without warnings on Emacs 31 by @bbatsov in https://github.com/flycheck/flycheck/pull/2304
- Run Checkdoc in CI, and fix what it had to say by @bbatsov in https://github.com/flycheck/flycheck/pull/2305
- Check every recording weekly, not the dozen a runner has by @bbatsov in https://github.com/flycheck/flycheck/pull/2306
- Re-record what the checkers read, against the current image by @bbatsov in https://github.com/flycheck/flycheck/pull/2308
- Fail when a spec builds its body and drops it by @bbatsov in https://github.com/flycheck/flycheck/pull/2309
- Record four more checkers, and stop pyright drifting on its own clock by @bbatsov in https://github.com/flycheck/flycheck/pull/2310
- Remove the haml checker in favour of haml-lint by @bbatsov in https://github.com/flycheck/flycheck/pull/2311
- Truncate sideline annotations that cannot fit beside the code by @bbatsov in https://github.com/flycheck/flycheck/pull/2313
- Test the LSP bridges end to end against a scripted server by @bbatsov in https://github.com/flycheck/flycheck/pull/2314
- Harden CI against supply-chain attacks by @bbatsov in https://github.com/flycheck/flycheck/pull/2315
- Carry markdownlint's fixes via its JSON output by @bbatsov in https://github.com/flycheck/flycheck/pull/2319
- File fixture drift as an issue by @bbatsov in https://github.com/flycheck/flycheck/pull/2320
- Skip annotate rebuilds over clean lines, add a benchmark by @bbatsov in https://github.com/flycheck/flycheck/pull/2321
- Bump actions/setup-python from 5.6.0 to 7.0.0 by @dependabot[bot] in https://github.com/flycheck/flycheck/pull/2316
- Bump actions/checkout from 6.1.0 to 7.0.1 by @dependabot[bot] in https://github.com/flycheck/flycheck/pull/2317
- Bump actions/cache from 4.3.0 to 6.1.0 by @dependabot[bot] in https://github.com/flycheck/flycheck/pull/2318
- Pin textlint's quick fixes with a spec by @bbatsov in https://github.com/flycheck/flycheck/pull/2322
- Fix error navigation among nested error regions by @bbatsov in https://github.com/flycheck/flycheck/pull/2323
- Keep a chain's earlier errors when a checker dies by signal by @bbatsov in https://github.com/flycheck/flycheck/pull/2324
- Keep org-lint's id-link checker out of the check by default by @bbatsov in https://github.com/flycheck/flycheck/pull/2325
- Read Scala 3's boxed diagnostics by @bbatsov in https://github.com/flycheck/flycheck/pull/2327
- Match a Scala 3 header too long for padding dashes by @bbatsov in https://github.com/flycheck/flycheck/pull/2328
- Explain five more checkers' diagnostics by @bbatsov in https://github.com/flycheck/flycheck/pull/2329
- Record five more checkers, fix Go tool visibility in the image by @bbatsov in https://github.com/flycheck/flycheck/pull/2330
- Read go-jsonnet's bare static errors by @bbatsov in https://github.com/flycheck/flycheck/pull/2331
- Keep #pragma once quiet when the buffer is a header by @bbatsov in https://github.com/flycheck/flycheck/pull/2333
- Add a Luau checker by @bbatsov in https://github.com/flycheck/flycheck/pull/2334
- Bring back the sass and scss checkers, on Dart Sass by @bbatsov in https://github.com/flycheck/flycheck/pull/2335
- Capture the rule ids three checkers fold into messages by @bbatsov in https://github.com/flycheck/flycheck/pull/2336
- Stop advertising the display extensions annotate-mode replaced by @bbatsov in https://github.com/flycheck/flycheck/pull/2337
New Contributors
- @saulotoledo made their first contribution in https://github.com/flycheck/flycheck/pull/2257
- @rhoit made their first contribution in https://github.com/flycheck/flycheck/pull/2285
- @dependabot[bot] made their first contribution in https://github.com/flycheck/flycheck/pull/2316
Full Changelog: https://github.com/flycheck/flycheck/compare/v38.3...v39.0