.. _flycheck-languages:

=====================
 Supported Languages
=====================

This document lists all programming and markup languages which Flycheck
supports.

.. note::

   Extensions may provide support for additional languages or add deeper
   integration with existing languages.

   Take a look at the :ref:`list of extensions <flycheck-extensions>` to see
   what the community can offer to you.

Each language has one or more syntax checkers whose names follow a convention of
:samp:`{language}-{tool}`.  All syntax checkers are listed in the order they
would be applied to a buffer, with all available options.  For more information
about a syntax checker open Emacs and use :command:`flycheck-describe-checker`
to view the docstring of the syntax checker.  Likewise, you may use
:command:`describe-variable` to read the complete docstring of any option.

.. supported-language:: Ada

   .. syntax-checker:: ada-gnat

      Check ADA syntax and types with `GNAT`_.

      .. _GNAT: https://www.adacore.com/community/

      .. defcustom:: flycheck-gnat-args

         A list of additional options.

      .. defcustom:: flycheck-gnat-include-path

         A list of include directories.  Relative paths are relative to the path
         of the buffer being checked.

      .. defcustom:: flycheck-gnat-language-standard

         The language standard to use as string.

      .. defcustom:: flycheck-gnat-warnings

         A list of additional warnings to enable.  Each item is the name of a
         warning category to enable.

.. supported-language:: AsciiDoc

   .. syntax-checker:: asciidoctor

      Check AsciiDoc with the default Asciidoctor_ backend.

      .. _Asciidoctor: https://asciidoctor.org

.. supported-language:: Awk

   .. syntax-checker:: awk-gawk

      Check Awk with gawk_.

      .. _gawk: https://www.gnu.org/software/gawk/manual

.. supported-language:: Bazel

   .. syntax-checker:: bazel-build-buildifier
                       bazel-module-buildifier
                       bazel-starlark-buildifier
                       bazel-workspace-buildifier

      Check Bazel with buildifier_.

      .. _buildifier: https://github.com/bazelbuild/buildtools

.. supported-language:: C/C++
   :index_as: C
              C++

   Flycheck checks C and C++ with either `c/c++-clang` or `c/c++-gcc`, and then
   with `c/c++-cppcheck`.

   .. syntax-checker:: c/c++-clang
                       c/c++-gcc

      Check C/C++ for syntax and type errors with Clang_ or GCC_ respectively.

      .. note::

         `c/c++-gcc` requires GCC 4.4 or newer.

      .. _Clang: https://clang.llvm.org/
      .. _GCC: https://gcc.gnu.org/

      .. defcustom:: flycheck-clang-args
                     flycheck-gcc-args

         A list of additional arguments for `c/c++-clang` and `c/c++-gcc`
         respectively.

      .. defcustom:: flycheck-clang-blocks

         Whether to enable blocks in `c/c++-clang`.

      .. defcustom:: flycheck-clang-definitions
                     flycheck-gcc-definitions

         A list of additional preprocessor definitions for `c/c++-clang` and
         `c/c++-gcc` respectively.

      .. defcustom:: flycheck-clang-include-path
                     flycheck-gcc-include-path

         A list of include directories for `c/c++-clang` and `c/c++-gcc`
         respectively, relative to the file being checked.

      .. defcustom:: flycheck-clang-includes
                     flycheck-gcc-includes

         A list of additional include files for `c/c++-clang` and `c/c++-gcc`
         respectively, relative to the file being checked.

      .. defcustom:: flycheck-clang-language-standard
                     flycheck-gcc-language-standard

         The language standard to use in `c/c++-clang` and `c/c++-gcc`
         respectively as string, via the ``-std`` option.

      .. defcustom:: flycheck-clang-ms-extensions

         Whether to enable Microsoft extensions to C/C++ in `c/c++-clang`.

      .. defcustom:: flycheck-clang-no-exceptions
                     flycheck-gcc-no-exceptions

         Whether to disable exceptions in `c/c++-clang` and
         `c/c++-gcc` respectively.

      .. defcustom:: flycheck-clang-no-rtti
                     flycheck-gcc-no-rtti

         Whether to disable RTTI in `c/c++-clang` and `c/c++-gcc` respectively,
         via ``-fno-rtti``.

      .. defcustom:: flycheck-clang-standard-library

         The name of the standard library to use for `c/c++-clang`, as string.

      .. defcustom:: flycheck-gcc-openmp

         Whether to enable OpenMP in `c/c++-gcc`.

      .. defcustom:: flycheck-clang-pedantic
                     flycheck-gcc-pedantic

         Whether to warn about language extensions in `c/c++-clang` and
         `c/c++-gcc` respectively.

      .. defcustom:: flycheck-clang-pedantic-errors
                     flycheck-gcc-pedantic-errors

         Whether to error on language extensions in `c/c++-clang` and
         `c/c++-gcc` respectively.

      .. defcustom:: flycheck-clang-warnings
                     flycheck-gcc-warnings

         A list of additional warnings to enable in `c/c++-clang` and
         `c/c++-gcc` respectively.  Each item is the name of a warning or
         warning category for ``-W``.

   .. syntax-checker:: c/c++-cppcheck

      Check C/C++ for semantic and stylistic issues with cppcheck_.

      .. _cppcheck: https://cppcheck.sourceforge.io/

      .. defcustom:: flycheck-cppcheck-args

         A list of additional arguments.

      .. defcustom:: flycheck-cppcheck-checks

         A list of enabled checks.  Each item is the name of a check for the
         ``--enable`` option.

      .. defcustom:: flycheck-cppcheck-inconclusive

         Whether to enable inconclusive checks.  These checks may yield more
         false positives than normal checks.

         .. note::

            This option requires cppcheck 1.54 or newer.

      .. defcustom:: flycheck-cppcheck-include-path

         A list of include directories.  Relative paths are relative to the file
         being checked.

      .. defcustom:: flycheck-cppcheck-standards

         The C, C++ and/or POSIX standards to use via one or more ``--std=``
         arguments.

      .. defcustom:: flycheck-cppcheck-suppressions

         The cppcheck suppressions list to use via one or more ``--suppress=``
         arguments.

      .. defcustom:: flycheck-cppcheck-suppressions-file

         The cppcheck suppressions file to use via the
         ``--suppressions-list=`` argument.

.. supported-language:: CFEngine

   .. syntax-checker:: cfengine

      Check syntax with `CFEngine <https://cfengine.com/>`_.

.. supported-language:: Coffeescript

   Flycheck checks Coffeescript syntax with `coffee`.

   .. syntax-checker:: coffee

      Check syntax with the `Coffeescript <https://coffeescript.org/>`_ compiler.

.. supported-language:: CSS

   .. syntax-checker:: css-stylelint

      Syntax-check and lint CSS with stylelint_.

      .. _stylelint: https://stylelint.io

      .. syntax-checker-config-file:: flycheck-stylelint-config

      .. defcustom:: flycheck-stylelint-quiet

         Whether to run stylelint in quiet mode via ``--quiet``.

      .. defcustom:: flycheck-stylelint-args

         A list of additional arguments passed to ``stylelint`` by all four
         stylelint checkers, for options such as ``--custom-syntax``.

.. supported-language:: CUDA C/C++
   :index_as: CUDA

   .. syntax-checker:: cuda-nvcc

      Checks syntax for CUDA C/C++ using the nvcc
      `nvcc <https://developer.nvidia.com/cuda-llvm-compiler>`_ compiler
      bundled in the NVIDIA Toolkit.

      CUDA C/C++ uses whichever system compiler you have configured, gcc/clang
      etc, but will sanitise error messages into a standardised format that
      can be picked up via flycheck. Corner cases may cause some odd behavior.

      .. defcustom:: flycheck-cuda-language-standard

         The C or C++ Language standard that you want the CUDA compiler to enforce.

      .. defcustom:: flycheck-cuda-gencodes

         A list of include real and virtual GPU architectures for nvcc.

      .. defcustom:: flycheck-cuda-includes

         A list of cuda includes.

      .. defcustom:: flycheck-cuda-include-path

         A list of include directories for nvcc.

      .. defcustom:: flycheck-cuda-definitions

         Additional preprocessor definitions for nvcc. Is passed unaltered to both
         GPU compiler and underlying C/C++ compiler.

      .. defcustom:: flycheck-cuda-relaxed-constexpr

         Enable calling host constexpr from device function for nvcc.

      .. defcustom:: flycheck-cuda-extended-lambda

        Allows for ``__host__ __device__`` lambdas as described (`here <https://developer.nvidia.com/blog/new-compiler-features-cuda-8/>`_).

      .. defcustom:: flycheck-cuda-compiler-options

        Specify options directly to the compiler/preprocessor.

.. supported-language:: CWL

   .. syntax-checker:: cwl

      Syntax check with (`Schema Salad <https://www.commonwl.org/v1.0/SchemaSalad.html>`_).

      .. defcustom:: flycheck-cwl-schema-path

         A path for the schema file for Common Workflow Language.

.. supported-language:: D

   .. syntax-checker:: d-dmd

      Check syntax and types with (`DMD <https://dlang.org/>`_).

      .. note::

         This syntax checker requires DMD 2.066 or newer.

      .. defcustom:: flycheck-dmd-include-path

         A list of include directories.

      .. defcustom:: flycheck-dmd-args

         A list of additional arguments.

   .. seealso::

      :flyc:`flycheck-d-unittest`
         Flycheck extension which provides a syntax checker to run D unittests
         on the fly and report the results with Flycheck.

.. supported-language:: Dockerfile

   .. syntax-checker:: dockerfile-hadolint

      Check syntax and code style with hadolint_

      .. _hadolint: https://github.com/hadolint/hadolint

      .. syntax-checker-config-file:: flycheck-dockerfile-hadolint-config

      .. defcustom:: flycheck-dockerfile-hadolint-args

         A list of additional arguments passed to ``hadolint``.

.. supported-language:: Elixir

   .. syntax-checker:: elixir-credo

      Check code style with `credo <https://github.com/rrrene/credo>`_

      .. defcustom:: flycheck-elixir-credo-strict

         When non-nil, run credo in strict mode, via ``--strict``.

      .. defcustom:: flycheck-elixir-credo-args

         A list of additional arguments passed to ``mix credo``.

.. supported-language:: Emacs Lisp

   Flycheck checks Emacs Lisp with `emacs-lisp` and then with
   `emacs-lisp-checkdoc`.

   .. syntax-checker:: emacs-lisp

      Check syntax with the built-in byte compiler.

      On Emacs 30+, this checker is only enabled for files marked as
      trusted via ``trusted-content`` (see :infonode:`(emacs)Safe File
      Variables`), to mitigate CVE-2024-53920.  Byte-compilation involves
      macro expansion which can execute arbitrary code, so untrusted files
      must not be byte-compiled.  To use this checker, add your project
      directories to ``trusted-content``.  The ``emacs-lisp-checkdoc``
      checker doesn't expand macros and remains enabled for untrusted
      files.

      .. defcustom:: flycheck-emacs-lisp-load-path

         The load path as list of strings.  Relative directories are expanded
         against the `default-directory` of the buffer being checked.

      .. defcustom:: flycheck-emacs-lisp-initialize-packages

         Whether to initialize Emacs' package manager with `package-initialize`
         before checking the buffer.  If set to :elisp:`auto` (the default),
         only initialize the package managers when checking files under
         `user-emacs-directory`.

      .. defcustom:: flycheck-emacs-lisp-package-user-dir

         The package directory as string.  Has no effect if
         `flycheck-emacs-lisp-initialize-packages` is nil.

      .. defcustom:: flycheck-emacs-lisp-check-declare

         If non-nil, also check `declare-function` forms using
         `check-declare-file`.

   .. syntax-checker:: emacs-lisp-checkdoc

      Check Emacs Lisp documentation conventions with ``checkdoc``.

   .. seealso::

      :infonode:`(elisp)Documentation Tips`
         Information about documentation conventions for Emacs Lisp.

      :gh:`purcell/flycheck-package`
         Flycheck extension which adds a syntax checker to check for violation
         of Emacs Lisp library headers and packaging conventions.

      :infonode:`(elisp)Library Headers`
         Information about library headers for Emacs Lisp files.

.. supported-language:: Ember Templates

   .. syntax-checker:: ember-template

      Check your Ember templates with
      `ember-template-lint <https://github.com/ember-template-lint/ember-template-lint>`_

      .. syntax-checker-config-file:: flycheck-ember-template-lint-config

.. supported-language:: Erlang

   Flycheck checks Erlang with `erlang-rebar3` in rebar projects and
   `erlang` otherwise.

   .. syntax-checker:: erlang

      Check Erlang with the standard `Erlang <https://www.erlang.org/>`_
      compiler.

      .. defcustom:: flycheck-erlang-include-path

         A list of include directories.

      .. defcustom:: flycheck-erlang-library-path

         A list of library directories.

      .. defcustom:: flycheck-erlang-args

         A list of additional arguments passed to ``erlc``, for options such as
         ``-D`` macro definitions.

   .. syntax-checker:: erlang-rebar3

      Check Erlang with the `rebar3 <https://www.rebar3.org/>`_ build tool.

      .. defcustom:: flycheck-erlang-rebar3-profile

         The profile to use when compiling, e.g. "default" or "test".
         The default value is nil which will use the test profile in test
         directories, the eqc profile in eqc directories and the default profile
         otherwise.

.. supported-language:: Fortran

   .. syntax-checker:: fortran-gfortran

      Check Fortran syntax and type with GFortran_.

      .. _GFortran: https://gcc.gnu.org/onlinedocs/gfortran/

      .. defcustom:: flycheck-gfortran-args

         A list of additional arguments.

      .. defcustom:: flycheck-gfortran-include-path

         A list of include directories.  Relative paths are relative to the file
         being checked.

      .. defcustom:: flycheck-gfortran-language-standard

         The language standard to use via the ``-std`` option.

      .. defcustom:: flycheck-gfortran-layout

         The source code layout to use.  Set to :elisp:`free` or :elisp:`fixed`
         for free or fixed layout respectively, or nil (the default) to let
         GFortran automatically determine the layout.

      .. defcustom:: flycheck-gfortran-warnings

         A list of warnings enabled via the ``-W`` option.

.. supported-language:: Go

   Flycheck checks Go with the following checkers:

   1. `go-gofmt`
   2. `go-vet`
   3. `go-build` or `go-test`
   4. `go-errcheck`
   5. `go-unconvert`
   6. `go-staticcheck`

   .. syntax-checker:: go-gofmt

      Check Go syntax with `gofmt <https://golang.org/cmd/gofmt/>`_.

      .. defcustom:: flycheck-go-gofmt-args

         A list of additional arguments passed to ``gofmt``.

   .. syntax-checker:: go-vet

      Check Go for suspicious code with vet_.

      .. defcustom:: flycheck-go-build-tags

         A list of build tags.

      .. defcustom:: flycheck-go-vet-args

         A list of additional arguments passed to ``go vet``.

      .. _vet: https://pkg.go.dev/cmd/vet/

   .. syntax-checker:: go-build

      Check syntax and type with the `Go compiler`_.

      .. _Go compiler: https://go.dev/cmd/go/

      .. defcustom:: flycheck-go-build-tags
         :noindex:

         See `flycheck-go-build-tags`

      .. defcustom:: flycheck-go-build-args

         A list of additional arguments passed to ``go build``.

   .. syntax-checker:: go-test

      Check syntax and types of Go tests with the `Go compiler`_.

      .. defcustom:: flycheck-go-build-tags
         :noindex:

         See `flycheck-go-build-tags`

      .. defcustom:: flycheck-go-test-args

         A list of additional arguments passed to ``go test``.

   .. syntax-checker:: go-errcheck

      Check for unhandled error returns in Go with errcheck_.

      .. note::

         This syntax checker requires errcheck build from commit 8515d34 (Aug
         28th, 2015) or newer.

      .. _errcheck: https://github.com/kisielk/errcheck

      .. defcustom:: flycheck-go-build-tags
         :noindex:

         See `flycheck-go-build-tags`

      .. defcustom:: flycheck-go-errcheck-args

         A list of additional arguments passed to ``errcheck``.

   .. syntax-checker:: go-unconvert

      Check for unnecessary type conversions with unconvert_.

      .. _unconvert: https://github.com/mdempsky/unconvert

   .. syntax-checker:: go-staticcheck

      Perform static analysis and code linting with staticcheck_, the successor to megacheck.

      .. defcustom:: flycheck-go-version

         staticcheck_ explicitly supports the last two releases of Go, but
         supports targeting older versions. Go versions should be specified
         like, "1.6", or, "1.11.4".

      .. _staticcheck: https://staticcheck.io/

.. supported-language:: Groovy

   .. syntax-checker:: groovy

      Check syntax using the `Groovy <https://www.groovy-lang.org/>`_ compiler.

.. supported-language:: Haml

   .. syntax-checker:: haml-lint

      Check style and syntax with the
      `HAML-Lint <https://github.com/sds/haml-lint/>`_ linter, which
      reports a template that does not parse as well as one that parses
      but reads badly.

.. supported-language:: Handlebars

   .. syntax-checker:: handlebars

      Check syntax with the `Handlebars <https://handlebarsjs.com/>`_ compiler.

.. supported-language:: Haskell

   Flycheck checks Haskell with `haskell-stack-ghc` (in Stack projects) or
   `haskell-ghc`, and then with `haskell-hlint`.

   .. seealso::

      :flyc:`flycheck-haskell`
         Flycheck extension to configure Flycheck's Haskell checkers from the
         metadata, with support for Cabal sandboxes.

      :flyc:`flycheck-hdevtools`
         Flycheck extension which adds an alternative syntax checker for GHC
         using `hdevtools <https://github.com/bitc/hdevtools/>`_.

   .. syntax-checker:: haskell-stack-ghc
                       haskell-ghc

      Check syntax and types with GHC_.  In Stack_ projects invoke GHC through Stack
      to bring package dependencies from Stack in.

      .. _GHC: https://www.haskell.org/ghc/
      .. _Stack: https://github.com/commercialhaskell/stack

      .. defcustom:: flycheck-ghc-args

         A list of additional arguments.

      .. defcustom:: flycheck-ghc-no-user-package-database

         Whether to disable the user package database (only for `haskell-ghc`).

      .. defcustom:: flycheck-ghc-stack-use-nix

         Whether to enable Nix support for Stack (only for `haskell-stack-ghc`).

      .. defcustom:: flycheck-ghc-stack-project-file

         Allows to override the default ``stack.yaml`` file for Stack,
         via ``--stack-yaml`` (only for `haskell-stack-ghc`).

      .. defcustom:: flycheck-ghc-package-databases

         A list of additional package databases for GHC (only for
         `haskell-ghc`).  Each item points to a directory containing a package
         directory, via ``-package-db``.

      .. defcustom:: flycheck-ghc-search-path

         A list of module directories, via ``-i``.

      .. defcustom:: flycheck-ghc-language-extensions

         A list of language extensions, via ``-X``.

   .. syntax-checker:: haskell-hlint

      Lint with `hlint <https://github.com/ndmitchell/hlint>`_.

      .. defcustom:: flycheck-hlint-args

         A list of additional arguments.

      .. defcustom:: flycheck-hlint-language-extensions

         A list of language extensions to enable.

      .. defcustom:: flycheck-hlint-ignore-rules

         A list of rules to ignore.

      .. defcustom:: flycheck-hlint-hint-packages

         A list of additional hint packages to include.

      .. syntax-checker-config-file:: flycheck-hlint-config

.. supported-language:: HTML

   .. syntax-checker:: html-tidy

      Check HTML syntax and style with `Tidy HTML5`_.

      .. _Tidy HTML5: https://github.com/htacg/tidy-html5

      .. syntax-checker-config-file:: flycheck-tidy-config

.. supported-language:: Javascript

   Flycheck checks Javascript with `javascript-eslint` or `javascript-oxlint`.

   Alternatively `javascript-standard` is used instead.

   .. syntax-checker:: javascript-eslint

      Check syntax and lint with `ESLint <https://eslint.org/>`_.

      .. note::

         Flycheck automatically :ref:`disables <flycheck-disable-checkers>`
         this syntax checker if eslint cannot find a valid configuration file
         for the current buffer.

      .. defcustom:: flycheck-eslint-args

         A list of additional arguments that are passed to eslint.

      .. defcustom:: flycheck-eslint-rules-directories

         A list of directories with custom rules.

   .. syntax-checker:: javascript-oxlint

      Lint JavaScript and TypeScript with `oxlint <https://oxc.rs/>`_.

      .. syntax-checker-config-file:: flycheck-javascript-oxlint-config

      .. defcustom:: flycheck-javascript-oxlint-deny

         A list of rules or categories to report, via ``--deny``.

      .. defcustom:: flycheck-javascript-oxlint-allow

         A list of rules or categories to suppress, via ``--allow``.

      .. defcustom:: flycheck-javascript-oxlint-args

         A list of additional arguments passed to ``oxlint``.

   .. syntax-checker:: javascript-standard

      Check syntax and code style with Standard_ or Semistandard_.

      .. defcustom:: flycheck-javascript-standard-args

         A list of additional arguments passed to ``standard``.

      .. _Standard: https://github.com/standard/standard
      .. _Semistandard: https://github.com/standard/semistandard

.. supported-language:: JSON

   Flycheck checks JSON with `json-python-json` or `json-jq`.

   .. syntax-checker:: json-python-json

      Check JSON with Python's built-in :py:mod:`json` module.

   .. syntax-checker:: json-jq

      Check JSON with jq_.

      This checker accepts multiple consecutive JSON values in a single input, which is useful for jsonlines data.

      .. defcustom:: flycheck-json-jq-args

         A list of additional arguments passed to ``jq``.

      .. _jq: https://stedolan.github.io/jq/

.. supported-language:: Jsonnet

   .. syntax-checker:: jsonnet

      Checks `Jsonnet <https://jsonnet.org>`_ with the `jsonnet` binary published at `go-jsonnet <https://github.com/google/go-jsonnet>`_.

      .. defcustom:: flycheck-jsonnet-args

         A list of additional arguments that are passed to `jsonnet`.

      .. defcustom:: flycheck-jsonnet-include-paths

         A list of include directories. These are passed to the `jsonnet`
         binary via ``-J``. Relative paths are resolved relative to the path
         of the buffer being checked.

      .. defcustom:: flycheck-jsonnet-ext-code-files

         A list of strings of the form ``VAR=FILE``, each passed via
         ``--ext-code-file`` so that ``std.extVar`` sees ``VAR`` bound to
         the contents of ``FILE``.

.. supported-language:: Less

   .. syntax-checker:: less

      Check syntax with the `Less <https://lesscss.org/>`_ compiler.

      .. note::

         This syntax checker requires lessc 1.4 or newer.

   .. syntax-checker:: less-stylelint

      Syntax-check and lint Less with stylelint_.

      .. _stylelint: https://stylelint.io

      .. syntax-checker-config-file:: flycheck-stylelint-config

      .. defcustom:: flycheck-stylelint-quiet

         Whether to run stylelint in quiet mode via ``--quiet``.

.. supported-language:: LLVM

   .. syntax-checker:: llvm-llc

      Check syntax with `llc <https://llvm.org/docs/CommandGuide/llc.html>`_.

.. supported-language:: Lua

   Flycheck checks Lua with `lua-luacheck`, falling back to `lua`.

   .. syntax-checker:: lua-luacheck

      Check syntax and lint with Luacheck_.

      .. syntax-checker-config-file:: flycheck-luacheck-config

      .. defcustom:: flycheck-luacheck-standards

         The luacheck standards to use via one or more ``--std`` arguments.

      .. defcustom:: flycheck-luacheck-globals

         A list of additional globals to allow, via one or more ``--globals``
         arguments.

      .. defcustom:: flycheck-luacheck-args

         A list of additional arguments passed to ``luacheck``.

      .. _Luacheck: https://github.com/mpeterv/luacheck

   .. syntax-checker:: lua

      Check syntax with the `Lua compiler <https://www.lua.org/>`_.

.. supported-language:: Luau

   .. syntax-checker:: luau-analyze

      Check syntax and types with the analyzer that ships with `Luau
      <https://luau.org/>`_, Roblox's typed dialect of Lua.

      Luau buffers run one of the Lua major modes, since there is no dedicated
      Luau mode, but the analyzer rejects constructs that Luau dropped from
      Lua, such as ``goto``, so this checker keeps to buffers visiting
      ``.luau`` files and leaves plain Lua to the Lua checkers.

      How strictly the analyzer type-checks follows the file's ``--!strict``
      pragma and the nearest ``.luaurc``, which it finds by walking up from the
      file, so the buffer is checked through a copy in its own directory and
      the project configuration applies to unsaved contents.

      .. defcustom:: flycheck-luau-analyze-args

         A list of additional arguments passed to ``luau-analyze``.

.. supported-language:: Markdown

   Flycheck checks Markdown with `markdownlint-cli`, `markdownlint-cli2`,
   `mdl` (that's the binary of the Ruby project `markdownlint`) or `pymarkdown`.
   `markdownlint-cli` and `markdownlint-cli2` are different command-line interfaces
   for the same `markdownlint` library (written in JavaScript).

   .. syntax-checker:: markdown-markdownlint-cli

      Check Markdown with markdownlint-cli_.

      .. _markdownlint-cli: https://github.com/igorshubovych/markdownlint-cli

      .. syntax-checker-config-file:: flycheck-markdown-markdownlint-cli-config

      .. defcustom:: flycheck-markdown-markdownlint-cli-disabled-rules

         A list of disabled rules.

      .. defcustom:: flycheck-markdown-markdownlint-cli-enabled-rules

         A list of enabled rules.

      .. defcustom:: flycheck-markdown-markdownlint-cli-args

         A list of additional arguments passed to ``markdownlint``.

   .. syntax-checker:: markdown-markdownlint-cli2

      Check Markdown with markdownlint-cli2_.

      .. _markdownlint-cli2: https://github.com/DavidAnson/markdownlint-cli2

      .. syntax-checker-config-file:: flycheck-markdown-markdownlint-cli2-config

      .. defcustom:: flycheck-markdown-markdownlint-cli2-args

         A list of additional arguments passed to ``markdownlint-cli2``.

   .. syntax-checker:: markdown-mdl

      Check Markdown with markdownlint_ (a.k.a. ``mdl``).

      .. _markdownlint: https://github.com/markdownlint/markdownlint/

      .. defcustom:: flycheck-markdown-mdl-rules

         A list of enabled rules.

      .. defcustom:: flycheck-markdown-mdl-tags

         A list of enabled rule tags.

      .. syntax-checker-config-file:: flycheck-markdown-mdl-style

   .. syntax-checker:: markdown-pymarkdown

      Check Markdown with PyMarkdown_.

      .. _PyMarkdown: https://pypi.org/project/pymarkdownlnt/

      .. syntax-checker-config-file:: flycheck-markdown-pymarkdown-config

.. supported-language:: Nix

   .. syntax-checker:: nix

      Check Nix with nix-instantiate_.

      .. _nix-instantiate: https://nixos.org/nix/manual/#sec-nix-instantiate

   .. syntax-checker:: statix

      Check Nix with statix_.

      .. _statix: https://github.com/nerdypepper/statix

      .. defcustom:: flycheck-statix-args

         A list of additional arguments passed to ``statix check``.

.. supported-language:: Org mode

   Flycheck supports checking Org mode files with the built-in ``org-lint`` command.

   .. syntax-checker:: org-lint

      .. _flycheck-checkers-org-lint:

      An Org mode syntax and style checker using ``org-lint``.

      The checker runs ``org-lint`` in the current Emacs process to detect
      issues such as:

      - Invalid links
      - Dead links
      - Duplicate IDs
      - Invalid keywords
      - Special characters in links
      - And more...

      Because the checker runs in the current Emacs process, it has access to
      all installed packages and user configuration, avoiding false positives
      for source block languages provided by external packages.

      The checker is enabled by default when ``org-lint`` is available (Org mode
      9.0 or later).

      .. defcustom:: flycheck-org-lint-disabled-checkers

         A list of org-lint checkers (symbols naming entries in
         ``org-lint--checkers``) not to run.  By default the
         ``invalid-id-link`` checker is disabled: it rescans every org-id
         file Emacs knows about on each check, in the current Emacs
         process, which freezes Emacs for tens of seconds per check on a
         large Org setup such as org-roam.  Set to ``nil`` to run every
         checker org-lint has.

      See the ``org-lint`` documentation in Org mode for details about the checks
      performed.

.. supported-language:: OCaml

   Flycheck has two OCaml checkers and picks between them by whether the file
   belongs to a `Dune <https://dune.build/>`_ project, since the compiler on its
   own cannot resolve references to sibling modules.

   .. syntax-checker:: ocaml-dune

      Check a Dune project with ``dune build @check``.

      Dune type-checks the whole project without linking it, so this checker
      resolves references to other modules and to the project's dependencies.
      It only runs once the buffer is saved, because Dune reads the files from
      disk, and it reports errors from the whole project, not only the file you
      are visiting.

      Dune only reports what it rebuilds.  A target that failed is retried on
      every check, so errors keep being reported, and under the default ``dev``
      profile that covers warnings too, since Dune promotes them to errors
      there.  A project that turns that off with ``-warn-error -a`` gets its
      warnings reported once, on the check that compiles the file.

      .. defcustom:: flycheck-ocaml-dune-profile

         The build profile to pass to Dune via ``--profile``.  When nil, let
         Dune pick.

      .. defcustom:: flycheck-ocaml-dune-args

         A list of additional arguments passed to ``dune build``.

   .. syntax-checker:: ocaml

      Check a standalone OCaml file with the `OCaml <https://ocaml.org/>`_
      compiler via ``ocamlfind ocamlc``.

      This checker compiles the file on its own, so it only knows about the
      modules named in `flycheck-ocaml-packages`.  It steps aside inside
      a Dune project, where every reference to a sibling module would otherwise
      be reported as an unbound module, and `ocaml-dune` takes
      over.

      .. defcustom:: flycheck-ocaml-packages

         A list of findlib package names passed to ``ocamlfind`` via
         ``-package``.

      .. defcustom:: flycheck-ocaml-args

         A list of additional arguments passed to ``ocamlfind ocamlc``.

.. supported-language:: Opam

   .. syntax-checker:: opam

      Check Opam configuration files with `opam lint`_.

      .. _opam lint: https://opam.ocaml.org/doc/man/opam-lint.html

.. supported-language:: Perl

   Flycheck checks Perl with `perl`, `perl-perlcritic`, and `perl-perlimports`.

   .. syntax-checker:: perl

      Check syntax with the `Perl <https://www.perl.org/>`_ interpreter.

      .. defcustom:: flycheck-perl-include-path

         A list of include directories, relative to the file being checked.

      .. defcustom:: flycheck-perl-module-list

         A list of module names to implicitly use.

   .. syntax-checker:: perl-perlcritic

      Lint and check style with `Perl::Critic`_.

      .. _Perl::Critic: https://metacpan.org/pod/Perl::Critic

      .. defcustom:: flycheck-perlcritic-severity

         The severity level as integer for the ``--severity``.

      .. defcustom:: flycheck-perlcritic-theme

         The theme expression, passed as the ``--theme`` to ``perlcritic``.

      .. syntax-checker-config-file:: flycheck-perlcritic-config

   .. syntax-checker:: perl-perlimports

      Clean up Perl import statements with `perlimports`_.

      .. _perlimports: https://metacpan.org/dist/App-perlimports/view/script/perlimports

.. supported-language:: PHP

   Flycheck checks PHP with `php`, `php-phpmd`, `php-phpcs` and `php-phpcs-changed`.

   .. syntax-checker:: php

      Check syntax with `PHP CLI`_

      .. _PHP CLI: https://www.php.net/manual/en/features.commandline.php

   .. syntax-checker:: php-phpmd

      Lint with `PHP Mess Detector <https://phpmd.org/>`_.

      .. defcustom:: flycheck-phpmd-rulesets

         A list of rule sets.  Each item is either the name of a default rule
         set, or the path to a custom rule set file.

      .. defcustom:: flycheck-phpmd-args

         A list of additional arguments passed to ``phpmd``.

   .. syntax-checker:: php-phpcs

      Check style with `PHP Code Sniffer`_.

      .. note::

         This syntax checker requires PHP Code Sniffer 2.6 or newer.

      .. _PHP Code Sniffer: https://pear.php.net/package/PHP_CodeSniffer

      .. defcustom:: flycheck-phpcs-standard

         The coding standard, either as name of a built-in standard, or as path
         to a standard specification.

      .. defcustom:: flycheck-phpcs-args

         A list of additional arguments passed to ``phpcs``, for options such as
         ``--sniffs``, ``--exclude`` or ``--severity``.

   .. syntax-checker:: php-phpcs-changed

      Check style with `PHPCS Changed`_.

      .. note::

         This syntax checker requires PHP Code Sniffer 2.6 or newer.

      .. _PHPCS Changed: https://github.com/sirbrillig/phpcs-changed

      .. defcustom:: flycheck-phpcs-changed-git-base

         The git base branch to compare against (e.g. "main", "master", "trunk").

      .. defcustom:: flycheck-phpcs-standard

         The coding standard, either as name of a built-in standard, or as path
         to a standard specification.

.. supported-language:: Processing

   .. syntax-checker:: processing

      Check syntax using the `Processing <https://processing.org/>`_ compiler.

.. supported-language:: Protobuf

   .. syntax-checker:: protobuf-protoc

      Check syntax using the protoc_ compiler.

      .. _protoc: https://protobuf.dev

      .. defcustom:: flycheck-protoc-import-path

         A list of directories to resolve import directives.  Relative paths are
         relative to the path of the buffer being checked.

      .. defcustom:: flycheck-protoc-args

         A list of additional arguments passed to ``protoc``.

.. supported-language:: Pug

   .. syntax-checker:: pug

      Check syntax using the `Pug <https://www.pugjs.org>`_ compiler.

.. supported-language:: Puppet

   Flycheck checks Puppet with `puppet-parser` and lints with `puppet-lint`.

   .. syntax-checker:: puppet-parser

      Check syntax with the `Puppet <https://puppet.com/>`_ compiler.

   .. syntax-checker:: puppet-lint

      Lint with `Puppet Lint <https://puppet-lint.com/>`_.

      .. defcustom:: flycheck-puppet-lint-disabled-checks

         A list of checks to disable.

      .. defcustom:: flycheck-puppet-lint-args

         A list of additional arguments passed to ``puppet-lint``.

      .. syntax-checker-config-file:: flycheck-puppet-lint-config

.. supported-language:: Python

   Flycheck checks Python with `python-flake8`, `python-ruff` or
   `python-pylint`, and falls back to `python-pycompile` if none of those
   is available.  Additionally `python-pyright` and `python-mypy` provide
   optional type checking.

   All Python checkers are invoked indirectly using ``python -c ...`` (rather
   than a direct call to ``flake8`` or ``pylint``) to make it easier to switch
   between Python 2 and 3.  For example, you can use ``(setq
   flycheck-python-pylint-executable "python3")`` to run ``pylint`` using Python
   3, or ``(defvaralias 'flycheck-python-flake8-executable
   'python-shell-interpreter)`` to run ``flake8`` through the executable pointed
   to by ``python-shell-interpreter``.

   .. note::

      If Flycheck complains about a missing Python checker, make sure that the
      checker is reachable from ``sys.path``, using e.g. ``python -m pylint``:
      often, the issue is that the checker is installed globally but not in the
      current virtualenv.  Alternatively, you can invoke the checker script
      directly, with ``(setq flycheck-python-pylint-executable "pylint")``.

   .. seealso::

      :gh:`flycheck-pyflakes <Wilfred/flycheck-pyflakes>`
         Flycheck extension which adds a syntax checker using `Pyflakes
         <https://github.com/PyCQA/pyflakes>`_.

      :gh:`msherry/flycheck-pycheckers`
         Flycheck extension which can use multiple checkers simultaneously --
         including pyflakes, pep8, flake8, pylint, and mypy 2/3.

   .. syntax-checker:: python-flake8

      Check syntax and lint with `flake8 <https://flake8.pycqa.org/>`_.

      .. note::

         This syntax checker requires flake8 3.0 or newer.

      .. defcustom:: flycheck-flake8-error-level-alist

         An alist mapping Flake8 error IDs to Flycheck error levels.

      .. defcustom:: flycheck-flake8-maximum-complexity

         The maximum McCabe complexity allowed for methods.

      .. defcustom:: flycheck-flake8-maximum-line-length

         The maximum length of lines.

      .. defcustom:: flycheck-flake8-args

         A list of additional arguments passed to ``flake8``, for options such
         as ``--select`` or ``--extend-ignore``.

      .. syntax-checker-config-file:: flycheck-flake8-config

   .. syntax-checker:: python-ruff

      Lint with `ruff <https://docs.astral.sh/ruff/>`_.

      .. syntax-checker-config-file:: flycheck-python-ruff-config

      .. defcustom:: flycheck-python-ruff-args

         A list of additional arguments passed to ``ruff check``.

      .. defcustom:: flycheck-python-ruff-select

         A list of rule codes to enable, via ``--select``.  Each item is a rule
         code or prefix such as ``E``, ``F401`` or ``I``, or the special value
         ``ALL``.  Replaces the selection Ruff would take from its
         configuration.

      .. defcustom:: flycheck-python-ruff-extend-select

         A list of rule codes to enable on top of Ruff's configuration, via
         ``--extend-select``.

      .. defcustom:: flycheck-python-ruff-ignore

         A list of rule codes to disable, via ``--ignore``.

      .. defcustom:: flycheck-python-ruff-target-version

         The minimum Python version to assume, via ``--target-version``, as a
         string such as ``py312``.

      .. defcustom:: flycheck-python-ruff-preview

         Whether to enable Ruff's preview rules and fixes, via ``--preview``.

   .. syntax-checker:: python-pyright

      Type check Python with `pyright <https://github.com/microsoft/pyright>`_.

      .. note::

         This syntax checker requires pyright.

   .. syntax-checker:: python-mypy

      Type check Python with `mypy <https://www.mypy-lang.org/>`_.

      .. note::

         This syntax checker requires mypy 0.730 or newer.

      .. syntax-checker-config-file:: flycheck-python-mypy-config

      .. defcustom:: flycheck-python-mypy-cache-dir

         Directory used to write ``.mypy_cache`` directories.

         Set to ``null-device`` to disable writing cache directories
         entirely.

      .. defcustom:: flycheck-python-mypy-python-executable

         Python executable to collect the type information from PEP 561
         compliant packages.

      .. defcustom:: flycheck-python-mypy-args

         A list of additional arguments passed to ``mypy``, for options such as
         ``--strict`` or ``--ignore-missing-imports``.

   .. syntax-checker:: python-pylint

      Check syntax and lint with `Pylint <https://pylint.org/>`_.

      .. note::

         This syntax checker requires Pylint 1.0 or newer.

      .. defcustom:: flycheck-pylint-use-symbolic-id

         Whether to report symbolic (e.g. ``no-name-in-module``) or numeric
         (e.g. ``E0611``) message identifiers.

      .. defcustom:: flycheck-pylint-args

         A list of additional arguments passed to ``pylint``, for options such
         as ``--disable`` or ``--load-plugins``.

      .. syntax-checker-config-file:: flycheck-pylint-config

   .. syntax-checker:: python-pycompile

      Check syntax with Python's byte compiler (see :py:mod:`py_compile`).

.. supported-language:: R

   .. syntax-checker:: r-lintr

      Check syntax and lint with `lintr <https://github.com/jimhester/lintr>`_.

      .. defcustom:: flycheck-lintr-caching

         Whether to enable caching in lintr.  On by default; it is not
         recommended to disable caching unless it causes actual problems.

      .. defcustom:: flycheck-lintr-linters

         Linters to use as a string with an R expression which selects the
         linters to use.

   .. syntax-checker:: r

      Check syntax with R's builtin ``parse`` function.

.. supported-language:: Racket

   .. syntax-checker:: racket

      Check syntax with `raco expand`_ from the ``compiler-lib`` package.

      .. note::

         This syntax checker needs the ``compiler-lib`` package.

      .. _raco expand: https://docs.racket-lang.org/raco/expand.html

.. supported-language:: RPM Spec

   .. syntax-checker:: rpm-rpmlint

      Lint with `rpmlint <https://sourceforge.net/projects/rpmlint/>`_.

.. supported-language:: reStructuredText

   Flycheck checks reStructuredText with `rst-sphinx` in Sphinx_ projects and
   with `rst` otherwise.  Both chain to `proselint` for prose linting.

   .. _Sphinx: https://www.sphinx-doc.org/

   .. syntax-checker:: rst-sphinx

      Check documents with Sphinx_.

      .. note::

         This syntax checker requires Sphinx 1.2 or newer.

      .. defcustom:: flycheck-sphinx-warn-on-missing-references

         Whether to emit warnings for all missing references.

   .. syntax-checker:: rst

      Check documents with `docutils <https://docutils.sourceforge.io/>`_.

.. supported-language:: Ruby

   Flycheck checks Ruby with `ruby-rubocop` (or `ruby-standard`) and
   `ruby-reek`, falling back to `ruby` for basic syntax checking if those
   are not available.  There's also `ruby-chef-cookstyle`, which is only
   used for Chef cookbooks.

   .. syntax-checker:: ruby-rubocop

      Check syntax and lint with `RuboCop <https://rubocop.org/>`_.

      .. note::

         This syntax checker requires Rubocop 0.34 or newer.

      .. defcustom:: flycheck-rubocop-lint-only

         Whether to suppress warnings about style issues, via the ``--lint``
         option.

      .. defcustom:: flycheck-rubocop-server

         Whether to run RuboCop in server mode, via ``--server``, keeping a warm
         server process alive between runs to cut startup latency.

      .. defcustom:: flycheck-rubocop-only

         A list of cops or departments to run exclusively, via ``--only``.

      .. defcustom:: flycheck-rubocop-except

         A list of cops or departments to disable, via ``--except``.

      .. defcustom:: flycheck-rubocop-args

         A list of additional arguments passed to ``rubocop``.

      .. syntax-checker-config-file:: flycheck-rubocop-config

   .. syntax-checker:: ruby-standard

      Check syntax and lint with `Ruby Standard <https://github.com/testdouble/standard/>`_.

      .. note::

         This syntax checker and ruby-rubocop are mutually exclusive, since Standard employs an opinionated rubocop config.

      .. defcustom:: flycheck-rubocop-lint-only
         :noindex:

         See `flycheck-rubocop-lint-only`.

      .. syntax-checker-config-file:: flycheck-ruby-standard-config

   .. syntax-checker:: ruby-reek

      Check syntax and lint with reek_.

      .. _Reek: https://github.com/troessner/reek

      .. syntax-checker-config-file:: flycheck-reek-config

      .. note::

         ``flycheck-reek-config`` defaults to ``nil``, because Reek can find its own
         configuration.

   .. syntax-checker:: ruby

      Check syntax with the `Ruby <https://www.ruby-lang.org/>`_ interpreter.

   .. syntax-checker:: ruby-chef-cookstyle

      Check syntax and lint with `Cookstyle <https://github.com/chef/cookstyle>`_.

      .. note::

         Cookstyle is just a wrapper around RuboCop, so this checker is almost
         the same as ``ruby-rubocop``.

      .. defcustom:: flycheck-rubocop-lint-only

         Whether to suppress warnings about style issues, via the ``--lint``
         option.

      .. syntax-checker-config-file:: flycheck-rubocop-config

.. supported-language:: Rust

   Flycheck checks Rust_ with `rust-cargo` in Cargo projects, or `rust`
   otherwise.  For Cargo projects, you can also use the clippy_ linter with
   `rust-clippy`.

   .. _Rust: https://www.rust-lang.org/
   .. _clippy: https://github.com/rust-lang-nursery/rust-clippy

   .. syntax-checker:: rust-cargo
                       rust
                       rust-clippy

      Check syntax and types with the Rust_ compiler.  In a Cargo_ project the
      compiler is invoked through ``cargo check`` to take Cargo dependencies
      into account.

      .. note::

         `rust-cargo` requires Rust 1.17 or newer.
         `rust` requires Rust 1.18 or newer.
         `rust-clippy` requires the nightly version of Rust.

      .. _Cargo: https://doc.crates.io/index.html

      .. seealso::

         :flyc:`flycheck-rust`
            Flycheck extension to configure Rust syntax checkers according to
            the current Cargo_ project.

      .. defcustom:: flycheck-rust-args

         A list of additional arguments that are passed to rustc.  This option
         is ignored by `rust-cargo`.

      .. defcustom:: flycheck-cargo-check-args

         A list of additional arguments passed to the ``cargo check``
         subcommand.

      .. defcustom:: flycheck-rust-check-tests

         Whether to check test code in Rust.

      .. defcustom:: flycheck-rust-crate-root

         A path to the crate root for the current buffer, or nil if the current
         buffer is a crate by itself.

         `rust-cargo` ignores this option as the crate root is given by Cargo.

      .. defcustom:: flycheck-rust-crate-type

         For `rust-cargo`, the target type as a string, one of ``lib``, ``bin``,
         ``example``, ``test`` or ``bench``.  Can also be nil for projects with
         a single target.

         For `rust`, the type of the crate to check, as a string for the
         ``--crate-type`` option.

      .. defcustom:: flycheck-rust-binary-name

         The name of the binary to pass to ``cargo check --TARGET-TYPE``, as a
         string.

         For `rust-cargo`, always required unless `flycheck-rust-crate-type` is
         ``lib`` or nil, in which case it is ignored.

         Ignored by `rust`.

      .. defcustom:: flycheck-rust-features

         List of features to activate during build or check.

         The value of this variable is a list of strings denoting features
         that will be activated to build the target to check. Features will
         be passed to ``cargo check --features=FEATURES`` and, for
         `rust-clippy`, to ``cargo clippy --features=FEATURES``.

         Empty by default.

         Ignored by `rust`.

      .. defcustom:: flycheck-rust-library-path

         A list of additional library directories. Relative paths are relative
         to the buffer being checked.

      .. defcustom:: flycheck-rust-edition

         The Rust edition for the `rust` checker, passed to ``rustc`` as
         ``--edition``, as a string such as ``"2021"`` or ``"2024"``.

         When nil (the default), ``rustc`` falls back to edition 2015, which
         rejects code written for a newer edition.  Set this to check a
         single-file crate that is not part of a Cargo project.

         `rust-cargo` takes the edition from ``Cargo.toml`` and ignores this
         option.

      .. defcustom:: flycheck-rust-clippy-args

         A list of additional arguments passed to the ``cargo clippy``
         subcommand.  To pass options on to Clippy's own lints, separate them
         with ``--``, e.g. ``("--" "-W" "clippy::pedantic")``.

      .. defcustom:: flycheck-rust-clippy-tests

         Whether to lint test code with Clippy, by passing ``--tests`` to
         ``cargo clippy``.  Off by default.

      .. defcustom:: flycheck-rust-clippy-all-targets

         Whether to lint all targets with Clippy, by passing ``--all-targets``
         to ``cargo clippy``.  Off by default.

      .. defcustom:: flycheck-rust-clippy-all-features

         Whether to lint with all Cargo features enabled in Clippy, by passing
         ``--all-features`` to ``cargo clippy``.  Off by default.

.. supported-language:: SaltStack

   .. syntax-checker:: salt-lint

      Flycheck checks SaltStack YAML files with SALT-Lint_.

      .. _SALT-Lint: https://salt-lint.readthedocs.io/en/latest/

.. supported-language:: Sass/SCSS

   Flycheck checks Sass with `sass` and `sass-stylelint`, and SCSS with
   `scss` and `scss-stylelint`.  The compiler runs first and catches what
   a linter alone does not, such as undefined variables and mixins; a
   buffer that compiles with no more than warnings is then handed on to
   stylelint.

   .. syntax-checker:: sass

      Check the indented syntax with the `Dart Sass
      <https://sass-lang.com/dart-sass/>`_ compiler.

      .. note::

         This syntax checker requires Dart Sass 1.74 or newer.  With an
         older release, or with the long-dead Ruby Sass answering to the
         same executable name, the checker disables itself.

   .. syntax-checker:: sass-stylelint

      Syntax-check and lint Sass with stylelint_.

      .. _stylelint: https://stylelint.io

      .. syntax-checker-config-file:: flycheck-stylelint-config

      .. defcustom:: flycheck-stylelint-quiet

         Whether to run stylelint in quiet mode via ``--quiet``.

   .. syntax-checker:: scss

      Check SCSS syntax with the `Dart Sass
      <https://sass-lang.com/dart-sass/>`_ compiler.

      .. note::

         This syntax checker requires Dart Sass 1.74 or newer.  With an
         older release, or with the long-dead Ruby Sass answering to the
         same executable name, the checker disables itself.

   .. syntax-checker:: scss-stylelint

      Syntax-check and lint SCSS with stylelint_.

      .. _stylelint: https://stylelint.io

      .. syntax-checker-config-file:: flycheck-stylelint-config

      .. defcustom:: flycheck-stylelint-quiet

         Whether to run stylelint in quiet mode via ``--quiet``.

.. supported-language:: Scala

   Flycheck checks Scala with `scala` and `scala-scalastyle`.

   .. syntax-checker:: scala

      Check syntax and types with the `Scala <https://www.scala-lang.org/>`_
      compiler.

      .. note::

         This syntax checker is fairly primitive.  For a better Scala experience
         we recommend Ensime_.

         .. _Ensime: https://ensime.github.io/

   .. syntax-checker:: scala-scalastyle

      Check style with `Scalastyle <https://www.scalastyle.org/>`_.

      .. syntax-checker-config-file:: flycheck-scalastyle-config

      .. important::

         A configuration file is mandatory for this syntax checker.  If
         `flycheck-scalastyle-config` is not set or the configuration file not found
         this syntax checker will not be applied.

      .. defcustom:: flycheck-scalastyle-args

         A list of additional arguments passed to ``scalastyle``.

.. supported-language:: Scheme

   Flycheck checks CHICKEN Scheme files with ``csc``.

   .. syntax-checker:: scheme-chicken

      Check syntax with ``csc``, the `CHICKEN Scheme <https://call-cc.org/>`_
      compiler.

      .. defcustom:: flycheck-scheme-chicken-args

     A list of additional options.

   .. important::

      `Geiser <https://www.nongnu.org/geiser/>`_ must be installed and active for
      this checker to work.

.. supported-language:: Shell scripting languages

   Flycheck checks various shell scripting languages:

   * Bash with `sh-bash` and `sh-shellcheck`
   * POSIX shell (i.e. :file:`/bin/sh`) with `sh-posix-dash` or `sh-posix-bash`
   * Zsh with `sh-zsh`

   .. syntax-checker:: sh-bash

      Check Bash_ syntax.

      .. _Bash: https://www.gnu.org/software/bash/

      .. defcustom:: flycheck-sh-bash-args

         A list of additional arguments that are passed to bash.

   .. syntax-checker:: sh-posix-dash

      Check POSIX shell syntax with Dash_.

      .. _Dash: https://gondor.apana.org.au/~herbert/dash/

   .. syntax-checker:: sh-posix-bash

      Check POSIX shell syntax with Bash_.

   .. syntax-checker:: sh-zsh

      Check `Zsh <https://www.zsh.org/>`_ syntax.

   .. syntax-checker:: sh-shellcheck

      Lint Bash and POSIX shell with ShellCheck_.

      .. _ShellCheck: https://github.com/koalaman/shellcheck/

      .. defcustom:: flycheck-shellcheck-excluded-warnings

         A list of excluded warnings.

      .. defcustom:: flycheck-shellcheck-enabled-checks

         A list of enabled optional checks.

      .. defcustom:: flycheck-shellcheck-follow-sources

         Allow shellcheck to read sourced files.

      .. defcustom:: flycheck-shellcheck-infer-shell

         Whether to let ShellCheck infer the shell from the script.

      .. defcustom:: flycheck-shellcheck-args

         A list of additional arguments passed to ShellCheck.

.. supported-language:: Slim

   .. syntax-checker:: slim

      Check Slim using the `Slim <https://slim-lang.com/>`_ compiler.

   .. syntax-checker:: slim-lint

      Check Slim best practices using the `slim-lint
      <https://github.com/sds/slim-lint>`_ linter.

.. supported-language:: Swift

   .. syntax-checker:: swift

      Check Swift syntax with the `Swift <https://www.swift.org/>`_ compiler
      using ``swiftc -parse``.

      This parses the file without type-checking it, which is a deliberate
      limit.  Type-checking one file means telling the compiler about the rest
      of the module, the SDK and the target, and getting any of that wrong
      reports things like ``cannot find X in scope`` for code that builds fine.
      Parsing needs none of it and is right for any file, in a package or not.

      For type errors, run sourcekit-lsp through `global-flycheck-eglot-mode`
      or `flycheck-lsp-mode`: a language server knows how the project is built.

      .. defcustom:: flycheck-swift-args

         A list of additional arguments passed to ``swiftc``.

.. supported-language:: SQL

   .. syntax-checker:: sql-sqlint

      Check SQL syntax with `Sqlint <https://github.com/purcell/sqlint>`_.

.. supported-language:: systemd Unit Configuration

   .. syntax-checker:: systemd-analyze

      Check systemd unit configuration file syntax with `systemd-analyze`_.

      .. _systemd-analyze: https://www.freedesktop.org/software/systemd/man/systemd-analyze.html

.. supported-language:: Tcl

   .. syntax-checker:: tcl-nagelfar

      Check Tcl syntax with `Nagelfar <https://nagelfar.sourceforge.io/>`_.

      .. defcustom:: flycheck-tcl-nagelfar-syntax-databases

         A list of syntax database files, passed with ``-s``.  Nagelfar
         reports commands it has no database for as unknown, so a project
         whose procedures span several files wants the database that
         ``nagelfar -header`` writes for it listed here.

      .. defcustom:: flycheck-tcl-nagelfar-args

         A list of additional arguments passed to ``nagelfar``.

.. supported-language:: Terraform

   .. syntax-checker:: terraform

      Check Terraform syntax with `terraform fmt`_

      .. _terraform fmt: https://www.terraform.io/docs/commands/fmt.html

   .. syntax-checker:: terraform-tflint

      Check Terraform with `tflint <https://github.com/terraform-linters/tflint>`_

      .. defcustom:: flycheck-tflint-variable-files

         A list of files to resolve terraform variables.  Relative paths are
         relative to the path of the buffer being checked.

      .. syntax-checker-config-file:: flycheck-tflint-config

      .. defcustom:: flycheck-tflint-enabled-rules

         A list of tflint rules to enable, via ``--enable-rule``.

      .. defcustom:: flycheck-tflint-disabled-rules

         A list of tflint rules to disable, via ``--disable-rule``.

      .. defcustom:: flycheck-tflint-args

         A list of additional arguments passed to ``tflint``.

.. supported-language:: Text

   .. syntax-checker:: proselint

      Check English prose with `Proselint <https://proselint.com/>`_.

   .. syntax-checker:: textlint

      Check prose with `textlint <https://textlint.github.io/>`_.

      .. syntax-checker-config-file:: flycheck-textlint-config

      .. defcustom:: flycheck-textlint-args

         A list of additional arguments passed to ``textlint``.

      .. defcustom:: flycheck-textlint-plugin-alist

         An alist mapping major modes to textlint plugins.

         Flycheck currently supports the following textlint plugins on NPM:

         * textlint-plugin-rst
         * textlint-plugin-html
         * textlint-plugin-latex
         * textlint-plugin-asciidoctor (as well as other AsciiDoc plugins)

      .. note::

         textlint plugins need to be installed separately.

.. supported-language:: TeX/LaTeX

   Flycheck checks TeX and LaTeX with either `tex-chktex` or `tex-lacheck`.

   .. syntax-checker:: tex-chktex

      Check style with `ChkTeX <https://www.nongnu.org/chktex/>`_.

      .. syntax-checker-config-file:: flycheck-chktex-config

      .. defcustom:: flycheck-chktex-extra-flags

         A list of extra arguments to give to chktex.

   .. syntax-checker:: tex-lacheck

      Check style with `Lacheck <https://www.ctan.org/pkg/lacheck>`_.

.. supported-language:: Texinfo

   .. syntax-checker:: texinfo

      Check syntax with :program:`makeinfo` from Texinfo_.

      .. _Texinfo: https://www.gnu.org/software/texinfo/

.. supported-language:: TypeScript

   .. syntax-checker:: javascript-eslint
      :noindex:

      See `javascript-eslint`.

   .. syntax-checker:: javascript-oxlint
      :noindex:

      See `javascript-oxlint`.

.. supported-language:: Verilog

   .. syntax-checker:: verilog-verilator

      Check syntax with `Verilator <https://www.veripool.org/wiki/verilator>`_.

      .. defcustom:: flycheck-verilator-include-path

         A list of include directories.  Relative paths are relative to the file
         being checked.

.. supported-language:: VHDL

   .. syntax-checker:: vhdl-ghdl

      Check syntax with `GHDL <https://github.com/ghdl/ghdl>`_.

      .. defcustom:: flycheck-ghdl-language-standard

         The language standard to use as string.

      .. defcustom:: flycheck-ghdl-workdir

         The directory to use for the file library.

      .. defcustom:: flycheck-ghdl-ieee-library

         The standard to use for the IEEE library.

.. supported-language:: XML

   Flycheck checks XML with `xml-xmllint`.

   .. syntax-checker:: xml-xmllint

      Check syntax with :program:`xmllint` from Libxml2_.

      .. defcustom:: flycheck-xml-xmllint-xsd-path
                     flycheck-xml-xmllint-relaxng-path

      .. _Libxml2: https://gitlab.gnome.org/GNOME/libxml2/-/wikis/home

.. supported-language:: YAML

   Flycheck checks YAML with `yaml-actionlint`, `yaml-jsyaml` or `yaml-yamllint`.

   .. syntax-checker:: yaml-actionlint

      Check syntax with `actionlint <https://github.com/rhysd/actionlint>`_.

      .. syntax-checker-config-file:: flycheck-yaml-actionlint-config

      .. defcustom:: flycheck-yaml-actionlint-args

         A list of additional arguments passed to ``actionlint``.

   .. syntax-checker:: yaml-jsyaml

      Check syntax with `js-yaml <https://github.com/nodeca/js-yaml>`_.

      .. defcustom:: flycheck-yaml-jsyaml-args

         A list of additional arguments passed to ``js-yaml``.

   .. syntax-checker:: yaml-yamllint

      Check syntax with :program:`yamllint`.

      .. syntax-checker-config-file:: flycheck-yamllint-config

      .. defcustom:: flycheck-yamllint-args

         A list of additional arguments passed to ``yamllint``.
