Skip to content
Back to top
View this page
Edit this page

# Recommended extensions

The Emacs community has produced a number of extensions to Flycheck. This page lists all that we know of and can safely recommend to our users.

Official extensions are (co-)maintained by the Flycheck maintainers who will take care to update official extensions in case of breaking changes in Flycheck and work to provide extra API for extensions if needed. If you’d like to make your extension an official one and move it into the Flycheck Github organisation please contact a maintainer.

If you do know extensions not in this list, or would like to see your own extension here, please feel free to add it.

We would like to thank all people who created and contributed to Flycheck extensions for their awesome work. Without your help and support Flycheck would not be what it is today.

## User interface

These extensions change Flycheck’s user interface:

- https://github.com/flycheck/flycheck-color-mode-line (official) colors the mode line according to the Flycheck status.

- https://github.com/flycheck/flycheck-pos-tip (official) shows Flycheck error messages in a graphical popup.

- https://github.com/liblit/flycheck-status-emoji adds cute emoji (e.g. 😱 for errors) to Flycheck’s mode line status.

- https://github.com/Wilfred/flycheck-title shows Flycheck error messages in the frame title.

- https://github.com/flycheck/flycheck-inline shows Flycheck error messages in the buffer, directly below their origin.

## Eglot

Eglot is the built-in LSP package in Emacs, starting with version 29. It uses internally Flymake to render diagnostics received by the LSP server (by providing a Flymake backend).

It seems that many people were forced to move to Flymake, because they wanted to use Eglot and its maintainer (who’s also the maintainer of Flymake) didn’t want to provide Flycheck integration (backend) for it (see the relevant discussion).

Fortunately, you have options if you want to stick with Flycheck:

- https://github.com/flycheck/flycheck-eglot (official) provides a simple “glue” minor mode that allows Flycheck and Eglot to work together.

- https://github.com/doomemacs/doomemacs has built-in integration for Flycheck and Eglot (that served as foundation for `flycheck-eglot`)

- You can use https://github.com/emacs-lsp/lsp-mode (an alternative to Eglot) which has built-in support for Flycheck.

## Language support

These extensions add support for new languages, or improve support for built-in languages. They are grouped by the corresponding language so you can jump directly to the languages that interest you:

### Cadence

- https://github.com/cmarqu/flycheck-hdl-irun adds a syntax checker for hardware description languages supported by Cadence IES/irun.

### Clojure

- https://github.com/borkdude/flycheck-clj-kondo adds a Flycheck checker using `clj-kondo`.

- https://github.com/clojure-emacs/squiggly-clojure adds syntax checking for Clojure.

### C/C++/Objective C

- https://github.com/Wilfred/flycheck-pkg-config configures Flycheck to use settings from pkg-config when checking C/C++.

- https://github.com/Sarcasm/flycheck-irony adds a Flycheck syntax checker for C, C++ and Objective C using Irony Mode.

### D

- https://github.com/flycheck/flycheck-d-unittest (official) adds a Flycheck checker to run unit tests for D programs on the fly.

### Deno

- https://github.com/flycheck/flycheck-deno (official) makes linting for Deno project available via deno-lint.

### Emacs Lisp

- https://github.com/flycheck/flycheck-cask (official) makes Flycheck use Cask packages for Emacs Lisp syntax checking in Cask projects.

- https://github.com/flycheck/flycheck-eask (official) makes Flycheck use Eask packages for Emacs Lisp syntax checking in Eask projects. (Similar to Cask)

- https://github.com/purcell/flycheck-package checks Emacs Lisp packages for common problems with package metadata.

### Julia

- https://github.com/gdkrmr/flycheck-julia makes linting for Julia available via Lint.jl.

### Haskell

- https://github.com/flycheck/flycheck-haskell (official) configures Flycheck from the Cabal settings and sandbox in Haskell projects.

### Kotlin

- https://github.com/whirm/flycheck-kotlin adds a Kotlin syntax checker using ktlint.

### Ledger

- https://github.com/purcell/flycheck-ledger adds a syntax checker for the Ledger accounting tool.

### Mercury

- https://github.com/flycheck/flycheck-mercury (official) adds a syntax checker for the Mercury language.

### OCaml

- https://github.com/flycheck/flycheck-ocaml (official) adds a syntax checker for OCaml using the Merlin backend.

### PHP

- https://github.com/emacs-php/phpstan.el adds a PHP static analyzer using PHPStan.

- https://github.com/emacs-php/psalm.el adds a PHP static analyzer using Psalm.

### Python

- https://github.com/Wilfred/flycheck-pyflakes adds a Python syntax checker using Pyflakes.

- https://github.com/msherry/flycheck-pycheckers adds a checker for Python that can run multiple syntax checkers simultaneously (Pyflakes, PEP8, Mypy 2/3, etc.).

- https://github.com/chocoelho/flycheck-prospector adds Prospector checker for Python syntax.

### Rust

- https://github.com/flycheck/flycheck-rust (official) configures Flycheck according to the Cargo settings and layouts of the current Rust project.

### Shell scripts

- https://github.com/cuonglm/flycheck-checkbashisms adds a shell script syntax checker using `checkbashisms` which is part of Debian devscripts and checks for common Bash constructs in POSIX shell scripts.