==========================================
 Flycheck — Syntax checking for GNU Emacs
==========================================

**Flycheck** is a modern on-the-fly syntax checking extension for GNU Emacs,
intended as replacement for the older Flymake extension which is part of GNU
Emacs.  For a detailed comparison to Flymake see :ref:`flycheck-versus-flymake`.

It uses various syntax checking and linting tools to :ref:`automatically check
the contents of buffers <flycheck-syntax-checks>` while you type, and reports
warnings and errors directly in the buffer, or in an optional :ref:`error list
<flycheck-error-list>`:

.. image:: images/flycheck-annotated.png

Out of the box Flycheck supports over :ref:`40 different programming languages
<flycheck-languages>` with more than 80 different syntax checking tools, and
comes with a :ref:`simple interface <flycheck-developers-guide>` to define new
syntax checkers.

Many :ref:`3rd party extensions <flycheck-extensions>` provide new syntax
checkers and other features like alternative error displays or mode line
indicators.

Try out
=======

Flycheck needs GNU Emacs |min-emacs|, and works best on Unix systems.  **Windows
users**, please be aware that Flycheck does not support Windows officially,
although it should mostly work fine on Windows.  See :ref:`Windows support
<flycheck-windows-support>` and watch out for `known Windows issues`_!

To try Flycheck in your Emacs session install some :ref:`syntax checker tools
<flycheck-languages>` and type the following in your ``*scratch*`` buffer and
run ``M-x eval-buffer``:

.. code-block:: cl

   (require 'package)
   (add-to-list 'package-archives
                '("MELPA Stable" . "http://stable.melpa.org/packages/") t)
   (package-initialize)
   (package-refresh-contents)

   (package-install 'flycheck)

   (global-flycheck-mode)

*On macOS* also add the following to :ref:`fix your $PATH environment variable
<flycheck-macos-exec-path-from-shell>`:

.. code-block:: cl

   (package-install 'exec-path-from-shell)
   (exec-path-from-shell-initialize)

For a permanent installation of Flycheck follow the :ref:`Installation
<flycheck-installation>` instructions.  For a gentle introduction into Flycheck
features go through the :ref:`Quickstart <flycheck-quickstart>` guide.

.. important::

   If Flycheck fails to run properly or gives you any error messages please take
   a look at the :ref:`troubleshooting section <flycheck-troubleshooting>` which
   covers some common setup issues and helps you debug and fix problems with
   Flycheck.

.. _`known windows issues`: https://github.com/flycheck/flycheck/labels/arch%3A%20windows%20only

.. _flycheck-user-guide:

The User Guide
==============

The User Guide provides installation and usage help for Flycheck.  It starts
with installation instructions and a quick start tutorial and then focuses on an
in-depth reference to all parts of Flycheck.

.. toctree::

   user/installation
   user/quickstart
   user/troubleshooting
   user/syntax-checks
   user/syntax-checkers
   user/error-reports
   user/error-list
   user/error-interaction
   user/flycheck-versus-flymake

.. _flycheck-community-guide:

The Community Guide
===================

The Community Guide provides information about Flycheck’s ecosystem and
community.

.. toctree::

   community/conduct
   community/extensions
   community/get-help
   community/people

.. _flycheck-developer-guide:

The Developer Guide
===================

The Developer Guide shows how to extend Flycheck and how to write syntax checkers
for Flycheck.

.. toctree::

   developer/developing

.. _flycheck-contributor-guide:

The Contributor Guide
=====================

The Contributor Guide explains how to contribute to Flycheck.

.. toctree::

   contributor/contributing
   contributor/style-guide
   contributor/maintaining

Indices and Tables
==================

* :ref:`flycheck-languages`
* :doc:`glossary`
* :doc:`changes`
* :ref:`genindex`
* :ref:`search`

.. toctree::
   :hidden:

   languages
   glossary
   changes

Licensing
=========

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.

See :ref:`flycheck-gpl` for a copy of the GNU General Public License.

You may copy, distribute and/or modify the Flycheck documentation under the
terms of the Creative Commons Attribution-ShareAlike 4.0 International Public
License.  See :ref:`flycheck-cc-by-sa` for a copy of the license.

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.  See :ref:`flycheck-cc-by-sa` for a copy of the license.

.. toctree::
   :hidden:
   :maxdepth: 2

   licenses
