Flycheck Versions Save

On the fly syntax checking for GNU Emacs

34.0

1 month ago

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.

33.0

1 month ago

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

  • Python with ruff. [GH-2033]

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]

32

1 year ago

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:

  • Awk with gawk [GH-1708]
  • Bazel with bazel-buildifier [GH-1613]
  • CUDA with cuda-nvcc [GH-1508]
  • CWL with schema-salad-tool [GH-1361]
  • Elixir with credo [GH-1062]
  • JSON with json-jq [GH-1568]
  • Jsonnet with jsonnet [GH-1345]
  • MarkdownLint CLI with markdownlint [GH-1366]
  • mypy with python-mypy [GH-1354]
  • Nix with nix-linter [GH-1530]
  • Opam with opam lint [GH-1532]
  • protobuf-prototool with prototool [GH-1591]
  • Rust with rust-clippy [GH-1385]
  • Ruumba with eruby-ruumba [GH-1616]
  • Staticcheck with go-staticheck [GH-1541]
  • terraform with terraform fmt, tflint [GH-1586]
  • Tcl with nagelfar [GH-1365]
  • Text prose with textlint [GH-1534]
  • VHDL with ghdl [GH-1160]

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 🎉

31

6 years ago

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 🎉

30

7 years ago

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

7 years ago

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.

28

7 years ago

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.

27

7 years ago

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.

26

7 years ago

After a longer hiatus it's time for another release which not only brings new languages, features and bug fixes but also is a major step forward for Flycheck as a community project. We now have a Code of Conduct, a new and much improved Contributor's Guide and a Gitter channel for you to ask question and discuss further development of Flycheck.

From now on we'll release more frequently. The version number will just monotonically increase; we'll still not make any guarantees about backwards compatibility.

In another major development we're going back to a Sphinx-based website and manual, because Texinfo is too much effort to maintain and write, and to arcane a format to force it upon our contributors. Unfortunately this means that we'll no longer include an Info manual in Flycheck's packages, so you can't read Flycheck's manual in Emacs' Info viewer anymore.

Please take a look at the Changelog for information about new features and bug fixes.

0.25.1

8 years ago

Flycheck 0.25, with standard input for syntax checkers, improved error display and an API for NixOS integration. Release announcement