Skip to content

Releases: flycheck/flycheck

v36.0

19 Feb 12:25

Choose a tag to compare

New Features

  • [#2047]: Add javascript-oxlint checker for JavaScript and TypeScript using oxlint.
  • [#1757]: Add org-lint checker for Org mode files.
  • [#2132]: Add the flycheck-shellcheck-infer-shell option to the sh-shellcheck checker.
  • [#1977]: Add flycheck-shellcheck-args for passing extra command-line arguments to ShellCheck.
  • [#1854]: Add flycheck-shellcheck-enabled-checks option to enable optional ShellCheck checks via the --enable flag.
  • [#2139]: Add compatibility with Proselint 0.16.
  • [#1574]: Enable proselint checker for reStructuredText mode and chain it after the rst and rst-sphinx checkers.
  • [#1874]: Add flycheck-error-list-after-jump-hook, run after jumping from the error list to an error location.
  • [#2137]: Allow flycheck-command-map to be used as a prefix command with keymap-set and similar functions.
  • [#1833]: Automatically re-check the buffer after revert-buffer (e.g. when using global-auto-revert-mode).
  • [#1134]: Add error explainer for the python-ruff checker.
  • [#1979]: Show pyright rule names (e.g. reportGeneralTypeIssues) as error IDs.
  • [#2134]: Include info-level errors in the mode-line indicator (format: errors|warnings|infos).

Bugs fixed

  • [#2131]: Mitigate CVE-2024-53920 in the emacs-lisp checker subprocess.
  • [#2144]: Rewrite org-lint checker to run in the current Emacs process instead of a subprocess.
  • [#2043]: Fix rust checker temp directory error on modern Rust and Windows.
  • [#1859]: Force C locale for checker processes to ensure English output.
  • [#1919]: Isolate bidi characters in error message snippets.
  • [#1856]: Strictly enforce flycheck-navigation-minimum-level.
  • [#1918]: Exclude the *Flycheck error messages* buffer from global-flycheck-mode.
  • [#1908]: Increase error list File column width from 6 to 12 characters.
  • [#1882]: Fix Go build tags to use comma-separated format.
  • [#2098]: Fix tex-chktex error parsing with --inputfiles.
  • [#2143]: Fix compilation warnings on Emacs 30.
  • [#2089]: Make flycheck-protoc-import-path buffer-local.
  • [#2032]: Guard Tools menu operations for Emacs configs without Tools menu.
  • [#1805]: Preserve match data in idle trigger timer handler.
  • [#1170]: Skip error list highlighting when the error list is not visible.
  • [#1153]: Handle puppet-parser errors without line numbers.
  • [#1886]: Fix continuation indicator appearing on non-wrapped lines.
  • [#2062]: Fall back to python executable when python3 is unavailable.
  • [#2127]: Preserve pre-existing line-prefix text properties.
  • [#2086]: Fix the name of the PyMarkdown config.
  • [#2036]: Fix awk-gawk checker passing spurious quotes to gawk --source.
  • [#2092]: Detect parse errors in emacs-lisp byte compilation.
  • [#2090]: Fix python-ruff checker to use concise output format.
  • [#1926]: Fix flycheck-cuda-gencodes customize type.
  • Fix various minor issues: rpmlint error filter, php-ts-mode support, buffer-file-name nil guards, proselint version detection, python3 verification.

Removed

Removed 15 checkers for abandoned/deprecated tools: typescript-tslint, sass, scss, sass/scss-sass-lint, scss-lint, eruby-erubis, eruby-ruumba, css-csslint, protobuf-prototool, nix-linter, coffee-coffeelint, asciidoc, json-jsonlint, xml-xmlstarlet, javascript-jshint, yaml-ruby, ruby-jruby.

Changes

  • Modernized internals: removed dead code, replaced deprecated APIs, dropped compatibility shims for pre-27.1 Emacs.
  • [#2152]: Point package URL to GitHub repository.

Flycheck v35.0

23 Apr 12:21

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: 34.1...v35.0

Flycheck 34

14 Feb 18:10

Choose a tag to compare

New Features

  • New syntax checkers
    • [#2015]: PHP with phpcs-changed
    • [#2017]: HAML with haml-lint
    • [#2030]: Add yaml-actionlint checker for GitHub yaml action
      workflows.
    • [#2052]: Sass with Stylelint
    • [#2013]: Nix with statix
    • [#1935]: Chef (Ruby) with cookstyle
    • [#1915]: Markdown with pymarkdown
  • [#1873]: Add error explainer to perl-perlcritic.
  • [#1875]: Add error-explainer to css-stylelint.
  • [#1876]: Add error-explainer for markdownlint checker.
  • [#2019]: Add support for RELAX NG schema in xmllint.

Bugs Fixed

  • [#1793]: Fix flycheck-ruby-rubocop on buffers with no backing file.

Changes

  • [#2026]:Update the possible locations for yamllint's
    configuration file.
  • (Breaking) [#1697]: Remove the coq checker.
  • (Breaking) [#1935]: Remove the chef-foodcritic checker.
    (it's now replaced by ruby-chef-cookstyle)
  • (Breaking) [#2018]: Remove the golint checker.
  • (Breaking) Remove the ruby-rubylint checker.
  • [#1704]: The tslint checker is deprecated; it will go away in a
    future release.

Flycheck 33

10 Feb 10:15

Choose a tag to compare

Note: The changelog for this release is incomplete.

New features and improvements

  • The flycheck-verify-setup UI now includes buttons to re-enable manually
    disabled checkers and to try to re-enable automatically disabled checkers
    (command checkers are automatically disabled when their executable cannot be
    found). [GH-1755]
  • Error explainers can now return URLs (to show a webpage) or functions (to
    use custom formatting). For example, the Rust checker now renders
    explanations using markdown-view-mode. [GH-1753]
  • Enable checkers in many newer TreeSitter-based major modes (think *-ts-mode).

New syntax checkers

Breaking changes

  • Drop support for Emacs 25.
  • The variable flycheck-current-errors now contains errors in the order in
    which they were returned by checkers. In previous versions of Flycheck,
    this list was sorted by error position and severity. [GH-1749]

Flycheck 32

28 Mar 15:08
32

Choose a tag to compare

See the full changelog for more information. The flycheck-32 branch was originally frozen in May 2020.

Highlights

  • Many checkers and compiler, such as ocaml, rust, eslint, and
    others, include end-line and end-column information. Flycheck can now
    highlight the exact region that they report. Authors of checker definitions
    can use the new :end-line and :end-column arguments in
    flycheck-error-new, or the new end-line and end-column fields in
    error patterns. [GH-1400]

  • Errors that checkers return for other files will now be displayed on the
    first line of the current buffer instead of begin discarded. The error list
    indicates which file each error came from, and navigation moves
    automatically moves between files. This change helps with compiled
    languages, where an error in another file may cause the current file to be
    considered invalid. Variables flycheck-relevant-error-other-file-show
    and flycheck-relevant-error-other-file-minimum-level control this
    behavior. [GH-1427]

  • Flycheck can now draw error indicators in margins in addition to fringes.
    Margins can contain arbitrary characters and images, not just monochrome
    bitmaps, allowing for a better experience on high-DPI screens.
    flycheck-indication-mode controls this behavior, and
    flycheck-set-indication-mode can be used to automatically adjust the
    fringes and margins. Additionally, Flycheck's will now use high-resolution
    fringe bitmaps if the fringe is wide enough [GH-1742, GH-1744]

  • Error highlighting is now configurable, using the new
    flycheck-highlighting-style variable: instead of applying
    level-dependent faces (typically with wavy underlines), Flycheck can now
    insert delimiters around errors, or mix styles depending on how many lines
    an error covers. Additionally, stipples are added in the fringes to
    indicate errors that span multiple lines. [GH-1743]

New features and improvements

  • Flycheck can now trigger a syntax check automatically after switching
    buffers, using the idle-buffer-switch option in
    flycheck-check-syntax-automatically. This is useful when errors in a
    file are due to problems in a separate file. Variables
    flycheck-idle-buffer-switch-delay and
    flycheck-buffer-switch-check-intermediate-buffers control the
    functionality. [GH-1297]
  • Flycheck will now use Emacs' native XML parsing when libXML fails. This
    behavior can be changed by customizing flycheck-xml-parser. [GH-1349]
  • flycheck-verify-setup now shows more clearly which checkers
    will run in the buffer, and which are misconfigured. [GH-1478]
  • Flycheck now locates checker executables using a customizable function,
    flycheck-executable-find. The default value of this function allows
    relative paths (set e.g. in file or dir-local variables) in addition to
    absolute paths and executable names. [GH-1485]
  • Checkers that report error positions as a single offset from the start of
    the file can use the new flycheck-error-new-at-pos constructor instead
    of converting that position to a line and a column. [GH-1400]
  • Config-file variables can now be set to a list of file names. This is
    useful for checkers like mypy which don't run correctly when called from a
    subdirectory without passing an explicit config file. [GH-1711]
  • Thanks to algorithmic improvements in error reporting, Flycheck is now much
    faster in large buffers. [GH-1750]

New syntax checkers:

Checker improvements:

  • python-pylint and python-flake8 are now invoked with python -c,
    to make it easier to change between Python 2 and Python 3. [GH-1113]
  • Add flycheck-perl-module-list to use specified modules when
    syntax checking code with the perl checker. [GH-1207]
  • rust-cargo now uses cargo check and cargo test. [GH-1289]
  • Add flycheck-ghc-stack-project-file for the
    haskell-stack-ghc checker. [GH-1316]
  • Add flycheck-cppcheck-suppressions-file to pass a suppressions
    file to cppcheck. [GH-1329]
  • Add --force-exclusion flag to rubocop command. [GH-1348]
  • Flycheck now uses ESLint's JSON output instead of checkstyle XML. [GH-1350]
  • Add flychjeck-eslint-args to pass arguments to javascript-eslint.
    [GH-1360]
  • Flycheck will now execute rubocop from the directory where a Gemfile
    is located. If a Gemfile does not exist, the old behaviour of running
    the command from the directory where .rubocop.yml is found will be
    used. [GH-1368]
  • Add flycheck-sh-bash-args to pass arguments to sh-bash. [GH-1439]
  • haskell-stack-ghc will not try to install GHC anymore. [GH-1443]
  • Add flycheck-ghdl-ieee-library to select which standard IEEE
    library to use for ghdl. [GH-1547]
  • The javascript-eslint checker now supports typescript-mode by
    default.
  • Add flycheck-erlang-rebar3-profile to select which profile to
    use when compiling erlang with rebar3. [GH-1560]
  • Add flycheck-relevant-error-other-file-show to avoid showing errors
    from other files. [GH-1579]
  • The nix-linter checker now has an error explainer. [GH-1586]
  • The Emacs Lisp checker can now run in buffers not backed by files. [GH-1695]

Breaking changes

  • Remove the javascript-jscs checker. [GH-1024]
  • Remove the elixir-dogma checker. [GH-1450]
  • rust-cargo now requires Rust 1.17 or newer. [GH-1289]
  • rust now requires 1.18 or newer. [GH-1501]
  • Rename flycheck-cargo-rustc-args to flycheck-cargo-check-args.
    [GH-1289]
  • rust-cargo does not use the variable flycheck-rust-args anymore.
    [GH-1289]
  • Improve detection of default directory for haskell-ghc to consider
    hpack project files. [GH-1435]
  • Replace go tool vet with go vet. [GH-1548]
  • Remove the deprecated go-megacheck checker, which is replaced by
    go-staticcheck. [GH-1583]

Many thanks to all the people who contributed for this release 🎉

Flycheck 31

07 Oct 07:57
31

Choose a tag to compare

See the full changelog for more information.

Breaking changes

The rust-cargo checker now requires Rust 1.15 or newer. On the other hand, the checker is now capable to test integration tests, examples and benchmarks.

We have removed the javascript-gjslint checker following the deprecation of the Closure Linter.

Notable changes

We have added 10 new checkers: protobuf-protoc, systemd-analyze, nix-instantiate, dockerfile-hadolint, asciidoctor, less-stylelint, ruby-reek, go-megacheck, llvm-llc, and proselint.

Many thanks to all the people who contributed for this release 🎉

Flycheck 30

12 Oct 11:44

Choose a tag to compare

Notable changes:

  • Flycheck now checks Elixir with dogma and Sass/SCSS with sass-lint. Jade support is gone in favour of Pug support, following the renaming of the language.
  • Flycheck can now show explanations for the error under point with C-c ! e—currently support for Rust is included, more to come. The command previously bound to C-c ! e is not bound anymore, use M-x flycheck-set-checker-executable.
  • Flycheck now automatically disables syntax checker which are not available in exec-path, and does not longer attempt to find executables before each syntax check. As such you explicitly need to re-enable a syntax checker with C-u C-c ! x if you install the tool after visiting a file.
  • Using the same infrastructure Flycheck now automatically disables eslint if there is no eslint configuration for the current buffer. This introduces a slight delay when visiting Javascript buffers, but prevents errors from invoking eslint with no configuration. As part of this change support for explicit eslint configuration was removed—eslint's own configuration search is far superior.
  • Likewise the explicit configuration for luacheck was removed as well, in favour of luacheck's own configuration file search, for the same reasons.
  • Syntax checker definitions require :modes now; syntax checkers without :modes signal an error.

Further information

29

28 Aug 11:52

Choose a tag to compare

29

This release adds a new :working-directory property to syntax checkers which lets syntax checkers control the directory they are invoked from. The Haskell syntax checkers use this feature to run from the project directory if possible.

Javascript

This release replaces the option flycheck-eslint-rulesdir with flycheck-eslint-rules-directories which is now a list of rules directories for eslint.

Rust

The Rust syntax checkers now require Rust 1.7 or newer, and support the error format of Rust 1.12 and newer.

Miscellaneous

For more information please read the changelog.

Flycheck 28

05 Jun 20:39

Choose a tag to compare

This release adds new options for cppcheck and Rust, adds support for Geiser Mode and fixes two bugs.

Take a look at the changelog for more information.

Flycheck 27

08 May 11:24

Choose a tag to compare

This release brings new syntax checkers for Go, Markdown and TypeScript, and makes the Emacs Lisp Checkdoc syntax checker use any Checkdoc options from your Emacs session.

The PHP Code Sniffer syntax checker now requires PHP Code Sniffer 2.6 or newer, which is the latest release at the time of writing.

See the Changelog for more information.