Flycheck — Modern Emacs syntax checking¶
Flycheck is a modern on-the-fly syntax checking extension for GNU Emacs 24, intended as replacement for the older Flymake extension which is part of GNU Emacs.
It uses various syntax checking and linting tools to automatically check the contents of buffers while you type, and reports warnings and errors directly in the buffer, or in an optional error list:
This part of the documentation explains how to use Flycheck. It starts with a little introduction into Flycheck and a comparison with the built-in Flymake package, and then guides you through the installation and gives you a quick start. Eventually it provides comprehensive usage instructions covering all commands and options of Flycheck, and concludes with a list of supported languages and syntax checking tools.
- Flycheck versus Flymake
- Supported languages
- Emacs Lisp
- RPM SPEC
- Shell script languages
- Flycheck releases
This part of the documentation shows how to extend Flycheck, and provides an API reference.
- Extending Flycheck
- Flycheck API
This part of the documentation targets contributors to Flycheck. It provides general contribution guidelines, by which we review pull requests and other contributions, and instructions for specific tasks Flycheck contributors need to perform and problems they face.
The index provides a sorted list of all symbols and concepts explained throughout Flycheck’s documentation:
The following people—listed in alphabetical order—contributed substantial code to Flycheck:
- Atila Neves (include paths for DMD)
- Bozhidar Batsov (improved Flycheck menu, RuboCop syntax checker, improvements to Ruby)
- capdevc (enabled warnings in Rust)
- Damon Haley (PHPCS syntax checker)
- David Holm (Clang, Cppcheck and Verilator syntax checkers)
- Doug MacEachern (Go errcheck syntax checker)
- Fanael Linithien (GCC syntax checker, exception support for C/C++, inconclusive checks for cppcheck, bug fixes)
- Gereon Frey (fixes to temporary file handling in Go and to the Go tests)
- Gulshan Singh (customizable Rust crate type)
- Jimmy Yuen Ho Wong (HTML tidy and JSHint syntax checkers, bug fixes to faces)
- Krzysztof Witkowski (eval support)
- Lee Adams (scalastyle syntax checker)
- Łukasz Jędrzejewski (bug fixes for chktex syntax checker and error navigation)
- Magnar Sveen (customizable idle change delay)
- Malyshev Artem (customizable keymap prefix)
- Marian Schubert (Perl syntax checker)
- Mark Hellewell (Puppet and puppetlint syntax checkers)
- Marcin Antczak (error highlighting in error list)
- Matthias Dahl (performance improvements in temporary file handling)
- Mitch Tishmack (Microsoft extensions in C/C++)
- Omair Majid (syntax checker for RPM spec)
- Per Nordlöw (syntax checkers for Ada and Fortran)
- Peter Vasil (Lua and Go build/test syntax checkers)
- Robert Zaremba (gofmt syntax checker)
- Sean Salmon (platform-independent directory handling)
- Sebastian Wiesner (primary maintainer)
- Syohei Yoshida (customizable error display delay)
- steckerhalter (PHPCS syntax checker)
- Steve Purcell (various bug fixes, syntax checkers for HAML, csslint, jslint, SASS, SCSS, jsonlint, LESS, GHC, hdevtools and hlint)
- Sylvain Benner (Elixir and Erlang syntax checkers)
- Sylvain Rousseau (Bash syntax checkers)
- Ted Zlatanov (CFEngine syntax checker)
- Tom Jakubowski (test support in Rust)
- Tomoya Tanjo (DMD syntax checker)
- Victor Deryagin (Rust syntax checker)
- Yannick Roehlly (PEP8 naming support in Python)
- Yasuyuki Oka (syntax checkers for phpmd, Slim, js-yaml, ruby-lint, Handlebars, Foodcritic, AsciiDoc, Racket, ESLint, erubis, POSIX Make, Golint and go vet)
The following people greatly supported Flycheck in other ways:
- Simon Carter (valuable testing and feedback of automatic syntax checking)
- Matthias Güdemann (initial version of the Flycheck logo, valuable feedback for the final version)
The Flycheck developers would also like to thank the following people and projects:
- Bozhidar Batsov for his valuable feedback and his constant support and endorsement of Flycheck from the very beginning. Notably, he added Flycheck to his popular Prelude project at a very early stage and thus brought Flycheck to many new users.
- Magnar Sveen for his dash.el and s.el libraries, which support considerable parts of Flycheck internals, and greatly helped to overcome the author’s initial aversion to Emacs Lisp.
- Martin Grenfell for the Vim syntax checking extension Syntastic, which saved the author’s life back when he was using Vim, and served as inspiration for Flycheck and many of its syntax checkers.
- Pavel Kobyakov for his work on GNU Flymake, which is a great work on its own, despite its flaws and weaknesses
- Steve Purcell for his valuable feedback, the fruitful discussions and his important ideas about the shape and design of Flycheck, and his indispensible and dedicated work on MELPA, which drives the continuous distribution of Flycheck to its users.
Flycheck is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Flycheck is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
Permission is granted to copy, distribute and/or modify this documentation under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled GNU Free Documentation License.
Alternatively, you may copy, distribute and/or modify this documentation under the terms of the Creative Commons Attribution-ShareAlike 4.0 International Public License. A copy of the license can be obtained at https://creativecommons.org/licenses/by-sa/4.0/legalcode.
Permission is granted to copy, distribute and/or modify the Flycheck logo under the terms of the Creative Commons Attribution-ShareAlike 4.0 International Public License. A copy of the license can be obtained at https://creativecommons.org/licenses/by-sa/4.0/legalcode.