]> git.bundesbrandschatzamt.de Git - emacsconfig.git/commitdiff
adding flycheck
authorAndreas Gerler <baronNOSPAMbundesbrandschatzamt.de>
Sun, 25 Jan 2015 17:02:46 +0000 (18:02 +0100)
committerAndreas Gerler <baronNOSPAMbundesbrandschatzamt.de>
Sun, 25 Jan 2015 17:02:46 +0000 (18:02 +0100)
Signed-off-by: Andreas Gerler <baronNOSPAMbundesbrandschatzamt.de>
bba.org
elpa/flycheck-20150125.601/dir [new file with mode: 0644]
elpa/flycheck-20150125.601/flycheck-autoloads.el [new file with mode: 0644]
elpa/flycheck-20150125.601/flycheck-ert.el [new file with mode: 0644]
elpa/flycheck-20150125.601/flycheck-pkg.el [new file with mode: 0644]
elpa/flycheck-20150125.601/flycheck.el [new file with mode: 0644]
elpa/flycheck-20150125.601/flycheck.info [new file with mode: 0644]
elpa/flycheck-20150125.601/flycheck.info-1 [new file with mode: 0644]
elpa/flycheck-20150125.601/flycheck.info-2 [new file with mode: 0644]
elpa/flycheck-cask-readme.txt [new file with mode: 0644]
elpa/flycheck-readme.txt [new file with mode: 0644]

diff --git a/bba.org b/bba.org
index 60790fd450d31d3fc9a423d1554cbac4de4c55f9..9c6d63c6c333a240fdaea926b2bfde3e6b56c020 100644 (file)
--- a/bba.org
+++ b/bba.org
@@ -141,6 +141,13 @@ See [[https://github.com/toctan/smartparens][Smartparens on github]].
   (yas-global-mode 1)
 
 #+END_SRC
+*** [[https://github.com/flycheck/flycheck][flycheck]]
+
+#+BEGIN_SRC emacs-lisp
+(add-to-list 'load-path "~/.emacs.d/elpa/flycheck-20150125.601")
+(require 'flycheck)
+(add-hook 'after-init-hook #'global-flycheck-mode)
+#+END_SRC
 
 *** [[https://github.com/kai2nenobu/guide-key][guide-key]]
 #+BEGIN_SRC emacs-lisp
diff --git a/elpa/flycheck-20150125.601/dir b/elpa/flycheck-20150125.601/dir
new file mode 100644 (file)
index 0000000..1443f76
--- /dev/null
@@ -0,0 +1,18 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+\1f
+File: dir,     Node: Top       This is the top of the INFO tree
+
+  This (the Directory node) gives a menu of major topics.
+  Typing "q" exits, "?" lists all Info commands, "d" returns here,
+  "h" gives a primer for first-timers,
+  "mEmacs<Return>" visits the Emacs manual, etc.
+
+  In Emacs, you can click mouse button 2 on a menu item or cross reference
+  to select it.
+
+* Menu:
+
+Emacs
+* flycheck: (flycheck.info).    On the fly syntax checking for GNU Emacs
diff --git a/elpa/flycheck-20150125.601/flycheck-autoloads.el b/elpa/flycheck-20150125.601/flycheck-autoloads.el
new file mode 100644 (file)
index 0000000..dba1324
--- /dev/null
@@ -0,0 +1,227 @@
+;;; flycheck-autoloads.el --- automatically extracted autoloads
+;;
+;;; Code:
+
+\f
+;;;### (autoloads (flycheck-def-option-var flycheck-def-config-file-var
+;;;;;;  flycheck-define-command-checker flycheck-define-error-level
+;;;;;;  global-flycheck-mode flycheck-mode flycheck-info) "flycheck"
+;;;;;;  "flycheck.el" (21701 7957 0 0))
+;;; Generated autoloads from flycheck.el
+
+(autoload 'flycheck-info "flycheck" "\
+Open the Flycheck manual.
+
+\(fn)" t nil)
+
+(autoload 'flycheck-mode "flycheck" "\
+Minor mode for on-the-fly syntax checking.
+
+When called interactively, toggle `flycheck-mode'.  With prefix
+ARG, enable `flycheck-mode' if ARG is positive, otherwise disable
+it.
+
+When called from Lisp, enable `flycheck-mode' if ARG is omitted,
+nil or positive.  If ARG is `toggle', toggle `flycheck-mode'.
+Otherwise behave as if called interactively.
+
+In `flycheck-mode' the buffer is automatically syntax-checked
+using the first suitable syntax checker from `flycheck-checkers'.
+Use `flycheck-select-checker' to select a checker for the current
+buffer manually.
+
+\\{flycheck-mode-map}
+
+\(fn &optional ARG)" t nil)
+
+(defvar global-flycheck-mode nil "\
+Non-nil if Global-Flycheck mode is enabled.
+See the command `global-flycheck-mode' for a description of this minor mode.
+Setting this variable directly does not take effect;
+either customize it (see the info node `Easy Customization')
+or call the function `global-flycheck-mode'.")
+
+(custom-autoload 'global-flycheck-mode "flycheck" nil)
+
+(autoload 'global-flycheck-mode "flycheck" "\
+Toggle Flycheck mode in all buffers.
+With prefix ARG, enable Global-Flycheck mode if ARG is positive;
+otherwise, disable it.  If called from Lisp, enable the mode if
+ARG is omitted or nil.
+
+Flycheck mode is enabled in all buffers where
+`flycheck-mode-on-safe' would do it.
+See `flycheck-mode' for more information on Flycheck mode.
+
+\(fn &optional ARG)" t nil)
+
+(autoload 'flycheck-define-error-level "flycheck" "\
+Define a new error LEVEL with PROPERTIES.
+
+The following PROPERTIES constitute an error level:
+
+`:severity SEVERITY'
+     A number denoting the severity of this level.  The higher
+     the number, the more severe is this level compared to other
+     levels.  Defaults to 0.
+
+     The severity is used by `flycheck-error-level-<' to
+     determine the ordering of errors according to their levels.
+
+`:overlay-category CATEGORY'
+     A symbol denoting the overlay category to use for error
+     highlight overlays for this level.  See Info
+     node `(elisp)Overlay Properties' for more information about
+     overlay categories.
+
+     A category for an error level overlay should at least define
+     the `face' property, for error highlighting.  Other useful
+     properties for error level categories are `priority' to
+     influence the stacking of multiple error level overlays, and
+     `help-echo' to define a default error messages for errors
+     without messages.
+
+`:fringe-bitmap BITMAP'
+     A fringe bitmap symbol denoting the bitmap to use for fringe
+     indicators for this level.  See Info node `(elisp)Fringe
+     Bitmaps' for more information about fringe bitmaps,
+     including a list of built-in fringe bitmaps.
+
+`:fringe-face FACE'
+     A face symbol denoting the face to use for fringe indicators
+     for this level.
+
+`:error-list-face FACE'
+     A face symbol denoting the face to use for messages of this
+     level in the error list.  See `flycheck-list-errors'.
+
+\(fn LEVEL &rest PROPERTIES)" nil nil)
+
+(put 'flycheck-define-error-level 'lisp-indent-function '1)
+
+(autoload 'flycheck-define-command-checker "flycheck" "\
+Define SYMBOL as syntax checker which runs a command.
+
+Define SYMBOL as generic syntax checker via
+`flycheck-define-generic-checker', which uses an external command
+to check the buffer.  SYMBOL and DOCSTRING are the same as for
+`flycheck-define-generic-checker'.
+
+In addition to the properties understood by
+`flycheck-define-generic-checker', the following PROPERTIES
+constitute a command syntax checker.  Unless otherwise noted, all
+properties are mandatory.  Note that the default `:error-filter'
+of command checkers is `flycheck-sanitize-errors'.
+
+`:command COMMAND'
+     The command to run for syntax checking.
+
+     COMMAND is a list of the form `(EXECUTABLE [ARG ...])'.
+
+     EXECUTABLE is a string with the executable of this syntax
+     checker.  It can be overridden with the variable
+     `flycheck-SYMBOL-executable'.  Note that this variable is
+     NOT implicitly defined by this function.  Use
+     `flycheck-def-executable-var' to define this variable.
+
+     Each ARG is an argument to the executable, either as string,
+     or as special symbol or form for
+     `flycheck-substitute-argument', which see.
+
+`:error-patterns PATTERNS'
+     A list of patterns to parse the output of the `:command'.
+
+     Each ITEM in PATTERNS is a list `(LEVEL SEXP ...)', where
+     LEVEL is a Flycheck error level (see
+     `flycheck-define-error-level'), followed by one or more RX
+     `SEXP's which parse an error of that level and extract line,
+     column, file name and the message.
+
+     See `rx' for general information about RX, and
+     `flycheck-rx-to-string' for some special RX forms provided
+     by Flycheck.
+
+     All patterns are applied in the order of declaration to the
+     whole output of the syntax checker.  Output already matched
+     by a pattern will not be matched by subsequent patterns.  In
+     other words, the first pattern wins.
+
+     This property is optional.  If omitted, however, an
+     `:error-parser' is mandatory.
+
+`:error-parser FUNCTION'
+     A function to parse errors with.
+
+     The function shall accept three arguments OUTPUT CHECKER
+     BUFFER.  OUTPUT is the syntax checker output as string,
+     CHECKER the syntax checker that was used, and BUFFER a
+     buffer object representing the checked buffer.  The function
+     must return a list of `flycheck-error' objects parsed from
+     OUTPUT.
+
+     This property is optional.  If omitted, it defaults to
+     `flycheck-parse-with-patterns'.  In this case,
+     `:error-patterns' is mandatory.
+
+Note that you may not give `:start', `:interrupt', and
+`:print-doc' for a command checker.  You can give a custom
+`:verify' function, but you should take care to call
+`flycheck-verify-command-checker' in a custom `:verify'
+function.
+
+\(fn SYMBOL DOCSTRING &rest PROPERTIES)" nil nil)
+
+(put 'flycheck-define-command-checker 'lisp-indent-function '1)
+
+(put 'flycheck-define-command-checker 'doc-string-elt '2)
+
+(autoload 'flycheck-def-config-file-var "flycheck" "\
+Define SYMBOL as config file variable for CHECKER, with default FILE-NAME.
+
+SYMBOL is declared as customizable variable using `defcustom', to
+provide a configuration file for the given syntax CHECKER.
+CUSTOM-ARGS are forwarded to `defcustom'.
+
+FILE-NAME is the initial value of the new variable.  If omitted,
+the default value is nil.
+
+Use this together with the `config-file' form in the `:command'
+argument to `flycheck-define-checker'.
+
+\(fn SYMBOL CHECKER &optional FILE-NAME &rest CUSTOM-ARGS)" nil t)
+
+(put 'flycheck-def-config-file-var 'lisp-indent-function '3)
+
+(autoload 'flycheck-def-option-var "flycheck" "\
+Define SYMBOL as option variable with INIT-VALUE for CHECKER.
+
+SYMBOL is declared as customizable variable using `defcustom', to
+provide an option for the given syntax CHECKER.  INIT-VALUE is
+the initial value of the variable, and DOCSTRING is its
+docstring.  CUSTOM-ARGS are forwarded to `defcustom'.
+
+Use this together with the `option', `option-list' and
+`option-flag' forms in the `:command' argument to
+`flycheck-define-checker'.
+
+\(fn SYMBOL INIT-VALUE CHECKER DOCSTRING &rest CUSTOM-ARGS)" nil t)
+
+(put 'flycheck-def-option-var 'lisp-indent-function '3)
+
+(put 'flycheck-def-option-var 'doc-string-elt '4)
+
+;;;***
+\f
+;;;### (autoloads nil nil ("flycheck-ert.el" "flycheck-pkg.el") (21701
+;;;;;;  7957 765828 0))
+
+;;;***
+\f
+(provide 'flycheck-autoloads)
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; coding: utf-8
+;; End:
+;;; flycheck-autoloads.el ends here
diff --git a/elpa/flycheck-20150125.601/flycheck-ert.el b/elpa/flycheck-20150125.601/flycheck-ert.el
new file mode 100644 (file)
index 0000000..120fc6e
--- /dev/null
@@ -0,0 +1,469 @@
+;;; flycheck-ert.el --- Flycheck: ERT extensions  -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2013-2015  Sebastian Wiesner <swiesnerNOSPAMlunaryorn.com>
+
+;; Author: Sebastian Wiesner <swiesnerNOSPAMlunaryorn.com>
+;; URL: https://github.com/flycheck/flycheck
+
+;; This file is not part of GNU Emacs.
+
+;; This program 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.
+
+;; This program 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.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Unit testing library for Flycheck, the modern on-the-fly syntax checking
+;; extension for GNU Emacs.
+
+;; Provide various utility functions and unit test helpers to test Flycheck and
+;; Flycheck extensions.
+
+;;; Code:
+
+(require 'flycheck)
+(require 'ert)
+(require 'macroexp)                     ; For macro utilities
+
+\f
+;;; Compatibility
+
+(eval-and-compile
+  ;; Provide `ert-skip' and friends for Emacs 24.3
+  (defconst flycheck-ert-ert-can-skip (fboundp 'ert-skip)
+    "Whether ERT supports test skipping.")
+
+  (unless flycheck-ert-ert-can-skip
+    ;; Fake skipping
+
+    (put 'flycheck-ert-skipped 'error-message "Test skipped")
+    (put 'flycheck-ert-skipped 'error-conditions '(error))
+
+    (defun ert-skip (data)
+      (signal 'flycheck-ert-skipped data))
+
+    (defmacro skip-unless (form)
+      `(unless (ignore-errors ,form)
+         (signal 'flycheck-ert-skipped ',form)))
+
+    (defun ert-test-skipped-p (result)
+      (and (ert-test-failed-p result)
+           (eq (car (ert-test-failed-condition result))
+               'flycheck-ert-skipped)))))
+
+\f
+;;; Internal variables
+
+(defvar flycheck-ert--resource-directory nil
+  "The directory to get resources from in this test suite.")
+
+\f
+;;; Resource management macros
+
+(defmacro flycheck-ert-with-temp-buffer (&rest body)
+  "Eval BODY within a temporary buffer.
+
+Like `with-temp-buffer', but resets the modification state of the
+temporary buffer to make sure that it is properly killed even if
+it has a backing file and is modified."
+  (declare (indent 0))
+  `(with-temp-buffer
+     (unwind-protect
+         ,(macroexp-progn body)
+       ;; Reset modification state of the buffer, and unlink it from its backing
+       ;; file, if any, because Emacs refuses to kill modified buffers with
+       ;; backing files, even if they are temporary.
+       (set-buffer-modified-p nil)
+       (set-visited-file-name nil 'no-query))))
+
+(defmacro flycheck-ert-with-file-buffer (file-name &rest body)
+  "Create a buffer from FILE-NAME and eval BODY.
+
+BODY is evaluated with `current-buffer' being a buffer with the
+contents FILE-NAME."
+  (declare (indent 1))
+  `(let ((file-name ,file-name))
+     (unless (file-exists-p file-name)
+       (error "%s does not exist" file-name))
+     (flycheck-ert-with-temp-buffer
+       (insert-file-contents file-name 'visit)
+       (set-visited-file-name file-name 'no-query)
+       (cd (file-name-directory file-name))
+       ;; Mark the buffer as not modified, because we just loaded the file up to
+       ;; now.
+       (set-buffer-modified-p nil)
+       ,@body)))
+
+(defmacro flycheck-ert-with-help-buffer (&rest body)
+  "Execute BODY and kill the help buffer afterwards.
+
+Use this macro to test functions that create a Help buffer."
+  (declare (indent 0))
+  `(unwind-protect
+       ,(macroexp-progn body)
+     (when (buffer-live-p (get-buffer (help-buffer)))
+       (kill-buffer (help-buffer)))))
+
+(defmacro flycheck-ert-with-global-mode (&rest body)
+  "Execute BODY with Global Flycheck Mode enabled.
+
+After BODY, restore the old state of Global Flycheck Mode."
+  (declare (indent 0))
+  `(let ((old-state global-flycheck-mode))
+     (unwind-protect
+         (progn
+           (global-flycheck-mode 1)
+           ,@body)
+       (global-flycheck-mode old-state))))
+
+(defmacro flycheck-ert-with-env (env &rest body)
+  "Add ENV to `process-environment' in BODY.
+
+Execute BODY with a `process-environment' with contains all
+variables from ENV added.
+
+ENV is an alist, where each cons cell `(VAR . VALUE)' is a
+environment variable VAR to be added to `process-environment'
+with VALUE."
+  (declare (indent 1))
+  `(let ((process-environment (copy-sequence process-environment)))
+     (pcase-dolist (`(,var . ,value) ,env)
+       (setenv var value))
+     ,@body))
+
+\f
+;;; Test resources
+(defun flycheck-ert-resource-filename (resource-file)
+  "Determine the absolute file name of a RESOURCE-FILE.
+
+Relative file names are expanded against
+`flycheck-ert-resources-directory'."
+  (expand-file-name resource-file flycheck-ert--resource-directory))
+
+(defmacro flycheck-ert-with-resource-buffer (resource-file &rest body)
+  "Create a temp buffer from a RESOURCE-FILE and execute BODY.
+
+The absolute file name of RESOURCE-FILE is determined with
+`flycheck-ert-resource-filename'."
+  (declare (indent 1))
+  `(flycheck-ert-with-file-buffer
+       (flycheck-ert-resource-filename ,resource-file)
+     ,@body))
+
+(defun flycheck-ert-locate-config-file (filename _checker)
+  "Find a configuration FILENAME within unit tests.
+
+_CHECKER is ignored."
+  (let* ((directory (flycheck-ert-resource-filename "config-files"))
+         (filepath (expand-file-name filename directory)))
+    (when (file-exists-p filepath)
+      filepath)))
+
+\f
+;;; Test suite initialization
+
+(defun flycheck-ert-initialize (resource-dir)
+  "Initialize a test suite with RESOURCE-DIR.
+
+RESOURCE-DIR is the directory, `flycheck-ert-resource-filename'
+should use to lookup resource files."
+  (when flycheck-ert--resource-directory
+    (error "Test suite already initialized"))
+  (let ((tests (ert-select-tests t t)))
+    ;; Select all tests
+    (unless tests
+      (error "No tests defined.  Call `flycheck-ert-initialize' after defining all tests!"))
+
+    (setq flycheck-ert--resource-directory resource-dir)
+
+    ;; Emacs 24.3 don't support skipped tests, so we add poor man's test
+    ;; skipping: We mark skipped tests as expected failures by adjusting the
+    ;; expected result of all test cases. Not particularly pretty, but works :)
+    (unless flycheck-ert-ert-can-skip
+      (dolist (test tests)
+        (let ((result (ert-test-expected-result-type test)))
+          (setf (ert-test-expected-result-type test)
+                `(or ,result (satisfies ert-test-skipped-p))))))))
+
+\f
+;;; Environment and version information
+
+(defconst flycheck-ert-user-error-type
+  (if (version< emacs-version "24.2")
+      'error
+    'user-error)
+  "The `user-error' type used by Flycheck.")
+
+(defun flycheck-ert-travis-ci-p ()
+  "Determine whether we are running on Travis CI."
+  (string= (getenv "TRAVIS") "true"))
+
+(defun flycheck-ert-check-gpg ()
+  "Check whether GPG is available."
+  (or (epg-check-configuration (epg-configuration)) t))
+
+(defun flycheck-ert-extract-version-command (re executable &rest args)
+  "Use RE to extract the version from EXECUTABLE with ARGS.
+
+Run EXECUTABLE with ARGS, catch the output, and apply RE to find
+the version number.  Return the text captured by the first group
+in RE, or nil, if EXECUTABLE is missing, or if RE failed to
+match."
+  (-when-let (executable (executable-find executable))
+    (with-temp-buffer
+      (apply #'call-process executable nil t nil args)
+      (goto-char (point-min))
+      (when (re-search-forward re nil 'no-error)
+        (match-string 1)))))
+
+\f
+;;; Test case definitions
+(defmacro flycheck-ert-def-checker-test (checker language name
+                                                 &rest keys-and-body)
+  "Define a test case for a syntax CHECKER for LANGUAGE.
+
+CHECKER is a symbol or a list of symbols denoting syntax checkers
+being tested by the test.  The test case is skipped, if any of
+these checkers cannot be used.  LANGUAGE is a symbol or a list of
+symbols denoting the programming languages supported by the
+syntax checkers.  This is currently only used for tagging the
+test appropriately.
+
+NAME is a symbol denoting the local name of the test.  The test
+itself is ultimately named
+`flycheck-define-checker/CHECKER/NAME'.  If CHECKER is a list,
+the first checker in the list is used for naming the test.
+
+Optionally, the keyword arguments `:tags' and `:expected-result'
+may be given.  They have the same meaning as in `ert-deftest.',
+and are added to the tags and result expectations set up by this
+macro.
+
+The remaining forms denote the body of the test case, including
+assertions and setup code."
+  (declare (indent 3))
+  (unless checker
+    (error "No syntax checkers specified."))
+  (unless language
+    (error "No languages specified"))
+  (let* ((checkers (if (symbolp checker) (list checker) checker))
+         (checker (car checkers))
+         (languages (if (symbolp language) (list language) language))
+         (language-tags (mapcar (lambda (l) (intern (format "language-%s" l)))
+                                languages))
+         (checker-tags (mapcar (lambda (c) (intern (format "checker-%s" c)))
+                               checkers))
+         (local-name (or name 'default))
+         (full-name (intern (format "flycheck-define-checker/%s/%s"
+                                    checker local-name)))
+         (keys-and-body (ert--parse-keys-and-body keys-and-body))
+         (body (cadr keys-and-body))
+         (keys (car keys-and-body))
+         (default-tags '(syntax-checker external-tool)))
+    `(ert-deftest ,full-name ()
+       :expected-result
+       (list 'or
+             '(satisfies flycheck-ert-syntax-check-timed-out-p)
+             ,(or (plist-get keys :expected-result) :passed))
+       :tags (append ',(append default-tags language-tags checker-tags)
+                     ,(plist-get keys :tags))
+       ,@(mapcar (lambda (c) `(skip-unless
+                               ;; Ignore non-command checkers
+                               (or (not (get ',c 'flycheck-command))
+                                   (executable-find (flycheck-checker-executable ',c)))))
+                 checkers)
+       ,@body)))
+
+\f
+;;; Test case results
+
+(defun flycheck-ert-syntax-check-timed-out-p (result)
+  "Whether RESULT denotes a timed-out test.
+
+RESULT is an ERT test result object."
+  (and (ert-test-failed-p result)
+       (eq (car (ert-test-failed-condition result))
+           'flycheck-ert-syntax-check-timed-out)))
+
+\f
+;;; Syntax checking in tests
+
+(defvar-local flycheck-ert-syntax-checker-finished nil
+  "Non-nil if the current checker has finished.")
+
+(add-hook 'flycheck-after-syntax-check-hook
+          (lambda () (setq flycheck-ert-syntax-checker-finished t)))
+
+(defconst flycheck-ert-checker-wait-time 10
+  "Time to wait until a checker is finished in seconds.
+
+After this time has elapsed, the checker is considered to have
+failed, and the test aborted with failure.")
+
+(put 'flycheck-ert-syntax-check-timed-out 'error-message
+     "Syntax check timed out.")
+(put 'flycheck-ert-syntax-check-timed-out 'error-conditions '(error))
+
+(defun flycheck-ert-wait-for-syntax-checker ()
+  "Wait until the syntax check in the current buffer is finished."
+  (let ((starttime (float-time)))
+    (while (and (not flycheck-ert-syntax-checker-finished)
+                (< (- (float-time) starttime) flycheck-ert-checker-wait-time))
+      (sleep-for 1))
+    (unless (< (- (float-time) starttime) flycheck-ert-checker-wait-time)
+      (flycheck-stop)
+      (signal 'flycheck-ert-syntax-check-timed-out nil)))
+  (setq flycheck-ert-syntax-checker-finished nil))
+
+(defun flycheck-ert-buffer-sync ()
+  "Like `flycheck-buffer', but synchronously."
+  (setq flycheck-ert-syntax-checker-finished nil)
+  (should (not (flycheck-running-p)))
+  (flycheck-mode)                       ; This will only start a deferred check,
+  (flycheck-buffer)                     ; so we need an explicit manual check
+  ;; After starting the check, the checker should either be running now, or
+  ;; already be finished (if it was fast).
+  (should (or flycheck-current-syntax-check
+              flycheck-ert-syntax-checker-finished))
+  ;; Also there should be no deferred check pending anymore
+  (should-not (flycheck-deferred-check-p))
+  (flycheck-ert-wait-for-syntax-checker))
+
+(defun flycheck-ert-ensure-clear ()
+  "Clear the current buffer.
+
+Raise an assertion error if the buffer is not clear afterwards."
+  (flycheck-clear)
+  (should (not flycheck-current-errors))
+  (should (not (-any? (lambda (ov) (overlay-get ov 'flycheck-overlay))
+                      (overlays-in (point-min) (point-max))))))
+
+\f
+;;; Test assertions
+
+(defun flycheck-ert-should-overlay (error)
+  "Test that ERROR has a proper overlay in the current buffer.
+
+ERROR is a Flycheck error object."
+  (let* ((overlay (-first (lambda (ov) (equal (overlay-get ov 'flycheck-error)
+                                              error))
+                          (flycheck-overlays-in 0 (+ 1 (buffer-size)))))
+         (region (flycheck-error-region-for-mode error 'symbols))
+         (message (flycheck-error-message error))
+         (level (flycheck-error-level error))
+         (category (flycheck-error-level-overlay-category level))
+         (face (get category 'face))
+         (fringe-bitmap (flycheck-error-level-fringe-bitmap level))
+         (fringe-face (flycheck-error-level-fringe-face level))
+         (fringe-icon (list 'left-fringe fringe-bitmap fringe-face)))
+    (should overlay)
+    (should (overlay-get overlay 'flycheck-overlay))
+    (should (= (overlay-start overlay) (car region)))
+    (should (= (overlay-end overlay) (cdr region)))
+    (should (eq (overlay-get overlay 'face) face))
+    (should (equal (get-char-property 0 'display
+                                      (overlay-get overlay 'before-string))
+                   fringe-icon))
+    (should (eq (overlay-get overlay 'category) category))
+    (should (equal (overlay-get overlay 'flycheck-error) error))
+    (should (string= (overlay-get overlay 'help-echo) message))))
+
+(defun flycheck-ert-should-errors (&rest errors)
+  "Test that the current buffers has ERRORS.
+
+ERRORS is a list of errors expected to be present in the current
+buffer.  Each error is given as a list of arguments to
+`flycheck-error-new-at'.
+
+If ERRORS are omitted, test that there are no errors at all in
+the current buffer.
+
+With ERRORS, test that each error in ERRORS is present in the
+current buffer, and that the number of errors in the current
+buffer is equal to the number of given ERRORS.  In other words,
+check that the buffer has all ERRORS, and no other errors."
+  (let ((expected (mapcar (apply-partially #'apply #'flycheck-error-new-at)
+                          errors)))
+    (should (equal expected flycheck-current-errors))
+    (mapc #'flycheck-ert-should-overlay expected))
+  (should (= (length errors)
+             (length (flycheck-overlays-in (point-min) (point-max))))))
+
+(defun flycheck-ert-should-syntax-check (resource-file modes &rest errors)
+  "Test a syntax check in RESOURCE-FILE with MODES.
+
+RESOURCE-FILE is the file to check.  MODES is a single major mode
+symbol or a list thereof, specifying the major modes to syntax
+check with.  If more than one major mode is specified, the test
+is run for each mode separately, so if you give three major
+modes, the entire test will run three times.  ERRORS is the list
+of expected errors, as in `flycheck-ert-should-errors'.  If
+omitted, the syntax check must not emit any errors.  The errors
+are cleared after each test.
+
+The syntax checker is selected via standard syntax checker
+selection.  To test a specific checker, you need to set
+`flycheck-checker' or `flycheck-disabled-checkers' accordingly
+before using this predicate, depending on whether you want to use
+manual or automatic checker selection.
+
+During the syntax check, configuration files of syntax checkers
+are also searched in the `config-files' sub-directory of the
+resource directory."
+  (when (symbolp modes)
+    (setq modes (list modes)))
+  (dolist (mode modes)
+    (unless (fboundp mode)
+      (ert-skip (format "%S missing" mode)))
+    (flycheck-ert-with-resource-buffer resource-file
+      (funcall mode)
+      ;; Configure config file locating for unit tests
+      (dolist (fn '(flycheck-locate-config-file-absolute-path
+                    flycheck-ert-locate-config-file))
+        (add-hook 'flycheck-locate-config-file-functions fn 'append 'local))
+      (let ((process-hook-called 0))
+        (add-hook 'flycheck-process-error-functions
+                  (lambda (_err)
+                    (setq process-hook-called (1+ process-hook-called))
+                    nil)
+                  nil :local)
+        (flycheck-ert-buffer-sync)
+        (apply #'flycheck-ert-should-errors errors)
+        (should (= process-hook-called (length errors))))
+      (flycheck-ert-ensure-clear))))
+
+(defun flycheck-ert-at-nth-error (n)
+  "Determine whether point is at the N'th Flycheck error.
+
+Return non-nil if the point is at the N'th Flycheck error in the
+current buffer.  Otherwise return nil."
+  (let* ((error (nth (1- n) flycheck-current-errors))
+         (mode flycheck-highlighting-mode)
+         (region (flycheck-error-region-for-mode error mode)))
+    (and (member error (flycheck-overlay-errors-at (point)))
+         (= (point) (car region)))))
+
+(defun flycheck-ert-explain--at-nth-error (n)
+  (let ((errors (flycheck-overlay-errors-at (point))))
+    (if (null errors)
+        (format "Expected to be at error %s, but no error at point %s"
+                n (point))
+      (let ((pos (cl-position (car errors) flycheck-current-errors)))
+        (format "Expected to be at error %s, but point %s is at error %s"
+                n (point) (1+ pos))))))
+
+(put 'flycheck-ert-at-nth-error 'ert-explainer
+     'flycheck-ert-explain--at-nth-error)
+
+(provide 'flycheck-ert)
+
+;;; flycheck-ert.el ends here
diff --git a/elpa/flycheck-20150125.601/flycheck-pkg.el b/elpa/flycheck-20150125.601/flycheck-pkg.el
new file mode 100644 (file)
index 0000000..709a8f1
--- /dev/null
@@ -0,0 +1,11 @@
+(define-package "flycheck" "20150125.601" "Modern on-the-fly syntax checking for GNU Emacs"
+  '((dash "2.4.0")
+    (pkg-info "0.4")
+    (let-alist "1.0.1")
+    (cl-lib "0.3")
+    (emacs "24.1"))
+  :url "https://www.flycheck.org" :keywords
+  '("convenience" "languages" "tools"))
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
diff --git a/elpa/flycheck-20150125.601/flycheck.el b/elpa/flycheck-20150125.601/flycheck.el
new file mode 100644 (file)
index 0000000..12224f6
--- /dev/null
@@ -0,0 +1,7259 @@
+;;; flycheck.el --- Modern on-the-fly syntax checking for GNU Emacs -*- lexical-binding: t; -*-
+
+;; Copyright (c) 2012-2015 Sebastian Wiesner <swiesnerNOSPAMlunaryorn.com>
+;; Copyright (C) 2013, 2014 Free Software Foundation, Inc.
+;;
+;; Author: Sebastian Wiesner <swiesnerNOSPAMlunaryorn.com>
+;; URL: https://www.flycheck.org
+;; Keywords: convenience languages tools
+;; Version: 0.23-cvs
+;; Package-Requires: ((dash "2.4.0") (pkg-info "0.4") (let-alist "1.0.1") (cl-lib "0.3") (emacs "24.1"))
+
+;; This file is not part of GNU Emacs.
+
+;; This program 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.
+
+;; This program 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.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Modern on-the-fly syntax checking for GNU Emacs.
+
+;; Provide `flycheck-mode' which enables on-the-fly syntax checking for a large
+;; number of different modes and languages (see `flycheck-checkers' for a
+;; complete list).
+;;
+;; Support for new modes and languages can be added by defining a new syntax
+;; checker (see `flycheck-define-checker').
+
+;;; Code:
+
+(eval-when-compile
+  (require 'let-alist)      ; `let-alist'
+  (require 'cl-lib)         ; `cl-defstruct'
+  (require 'compile)        ; Compile Mode integration
+  (require 'package)        ; Tell Emacs about package-user-dir
+  (require 'sh-script)      ; `sh-shell' for sh checker predicates
+  (require 'jka-compr)      ; For JKA workarounds in `flycheck-temp-file-system'
+  (require 'pcase)          ; `pcase-dolist' (`pcase' itself is autoloaded)
+  )
+
+(require 'dash)
+
+(require 'subr-x nil 'no-error)  ; Additional utilities, Emacs 24.4 and upwards
+(require 'tabulated-list)        ; To list errors
+(require 'easymenu)              ; Flycheck Mode menu definition
+(require 'rx)                    ; Regexp fanciness in `flycheck-define-checker'
+(require 'help-mode)             ; `define-button-type'
+(require 'find-func)             ; `find-function-regexp-alist'
+
+;; Tell the byte compiler about autoloaded functions from packages
+(declare-function pkg-info-version-info "pkg-info" (package))
+
+\f
+;;; Compatibility
+(eval-and-compile
+  ;; `defvar-local' Emacs 24.2 and below
+  (unless (fboundp 'defvar-local)
+    (defmacro defvar-local (var val &optional docstring)
+      "Define VAR as a buffer-local variable with default value VAL.
+Like `defvar' but additionally marks the variable as being automatically
+buffer-local wherever it is set."
+      (declare (debug defvar) (doc-string 3))
+      `(progn
+         (defvar ,var ,val ,docstring)
+         (make-variable-buffer-local ',var))))
+
+  (unless (fboundp 'setq-local)
+    ;; `setq-local' for Emacs 24.2 and below
+    (defmacro setq-local (var val)
+      "Set variable VAR to value VAL in current buffer."
+      `(set (make-local-variable ',var) ,val)))
+
+  (unless (fboundp 'user-error)
+    ;; `user-error' for Emacs 24.2 and below
+    (defalias 'user-error 'error)
+
+    (add-to-list 'debug-ignored-errors
+                 (rx string-start "No more Flycheck errors" string-end))
+    (add-to-list 'debug-ignored-errors
+                 (rx string-start "Flycheck mode disabled" string-end))
+    (add-to-list 'debug-ignored-errors
+                 (rx string-start "Configured syntax checker "
+                     symbol-start (one-or-more not-newline) symbol-end
+                     " cannot be used" string-end)))
+
+  (unless (fboundp 'string-suffix-p)
+    ;; `string-suffix-p' for Emacs 24.3 and below
+    (defun string-suffix-p (suffix string  &optional ignore-case)
+      "Return non-nil if SUFFIX is a suffix of STRING.
+If IGNORE-CASE is non-nil, the comparison is done without paying
+attention to case differences."
+      (let ((start-pos (- (length string) (length suffix))))
+        (and (>= start-pos 0)
+             (eq t (compare-strings suffix nil nil
+                                    string start-pos nil ignore-case))))))
+
+  (unless (featurep 'subr-x)
+    ;; `subr-x' function for Emacs 24.3 and below
+    (defsubst string-join (strings &optional separator)
+      "Join all STRINGS using SEPARATOR."
+      (mapconcat 'identity strings separator))
+
+    (defsubst string-trim-left (string)
+      "Remove leading whitespace from STRING."
+      (if (string-match "\\`[ \t\n\r]+" string)
+          (replace-match "" t t string)
+        string))
+
+    (defsubst string-trim-right (string)
+      "Remove trailing whitespace from STRING."
+      (if (string-match "[ \t\n\r]+\\'" string)
+          (replace-match "" t t string)
+        string))
+
+    (defsubst string-trim (string)
+      "Remove leading and trailing whitespace from STRING."
+      (string-trim-left (string-trim-right string)))
+
+    (defsubst string-empty-p (string)
+      "Check whether STRING is empty."
+      (string= string ""))))
+
+(when (and (not (get 'exclamation-mark 'fringe))
+           (fboundp 'define-fringe-bitmap))
+  ;; Provide `exclamation-mark' bitmap for Emacs 24.2 and below.  We also check,
+  ;; whether `define-fringe-bitmap' is defined, because this function is not
+  ;; available if Emacs is built without GUI support.  See
+  ;; https://github.com/flycheck/flycheck/issues/57
+  (define-fringe-bitmap 'exclamation-mark
+    [24 60 60 24 24 0 0 24 24] nil nil 'center))
+
+\f
+;;; Customization
+(defgroup flycheck nil
+  "Modern on-the-fly syntax checking for GNU Emacs."
+  :prefix "flycheck-"
+  :group 'tools
+  :link '(url-link :tag "Online manual" "http://flycheck.readthedocs.org")
+  :link '(url-link :tag "Github" "https://github.com/flycheck/flycheck")
+  :link '(custom-manual "(flycheck)Top")
+  :link '(info-link "(flycheck)Usage"))
+
+(defgroup flycheck-config-files nil
+  "Configuration files for on-the-fly syntax checkers."
+  :prefix "flycheck-"
+  :group 'flycheck
+  :link '(custom-manual "(flycheck)Syntax checker configuration files"))
+
+(defgroup flycheck-options nil
+  "Options for on-the-fly syntax checkers."
+  :prefix "flycheck-"
+  :group 'flycheck
+  :link '(custom-manual "(flycheck)Syntax checker options"))
+
+(defgroup flycheck-executables nil
+  "Executables of syntax checkers."
+  :prefix "flycheck-"
+  :group 'flycheck
+  :link '(custom-manual "(flycheck)Syntax checker executables"))
+
+(defgroup flycheck-faces nil
+  "Faces used by on-the-fly syntax checking."
+  :prefix "flycheck-"
+  :group 'flycheck
+  :link '(info-link "(flycheck)Error reporting"))
+
+(defcustom flycheck-checkers
+  '(ada-gnat
+    asciidoc
+    c/c++-clang
+    c/c++-gcc
+    c/c++-cppcheck
+    cfengine
+    chef-foodcritic
+    coffee
+    coffee-coffeelint
+    coq
+    css-csslint
+    d-dmd
+    elixir
+    emacs-lisp
+    emacs-lisp-checkdoc
+    erlang
+    eruby-erubis
+    fortran-gfortran
+    go-gofmt
+    go-golint
+    go-vet
+    go-build
+    go-test
+    go-errcheck
+    haml
+    handlebars
+    haskell-ghc
+    haskell-hlint
+    html-tidy
+    javascript-jshint
+    javascript-eslint
+    javascript-gjslint
+    json-jsonlint
+    less
+    lua
+    perl
+    perl-perlcritic
+    php
+    php-phpmd
+    php-phpcs
+    puppet-parser
+    puppet-lint
+    python-flake8
+    python-pylint
+    python-pycompile
+    r-lintr
+    racket
+    rpm-rpmlint
+    rst
+    rst-sphinx
+    ruby-rubocop
+    ruby-rubylint
+    ruby
+    ruby-jruby
+    rust
+    sass
+    scala
+    scala-scalastyle
+    scss
+    sh-bash
+    sh-posix-dash
+    sh-posix-bash
+    sh-zsh
+    sh-shellcheck
+    slim
+    tex-chktex
+    tex-lacheck
+    texinfo
+    verilog-verilator
+    xml-xmlstarlet
+    xml-xmllint
+    yaml-jsyaml
+    yaml-ruby)
+  "Syntax checkers available for automatic selection.
+
+A list of Flycheck syntax checkers to choose from when syntax
+checking a buffer.  Flycheck will automatically select a suitable
+syntax checker from this list, unless `flycheck-checker' is set,
+either directly or with `flycheck-select-checker'.
+
+You should not need to change this variable normally.  In order
+to disable syntax checkers, please use
+`flycheck-disabled-checkers'.  This variable is intended for 3rd
+party extensions to tell Flycheck about new syntax checkers.
+
+Syntax checkers in this list must be defined with
+`flycheck-define-checker'."
+  :group 'flycheck
+  :type '(repeat (symbol :tag "Checker"))
+  :risky t)
+
+(defcustom flycheck-disabled-checkers nil
+  "Syntax checkers excluded from automatic selection.
+
+A list of Flycheck syntax checkers to exclude from automatic
+selection.  Flycheck will never automatically select a syntax
+checker in this list, regardless of the value of
+`flycheck-checkers'.
+
+However, syntax checkers in this list are still available for
+manual selection with `flycheck-select-checker'.
+
+Use this variable to disable syntax checkers, instead of removing
+the syntax checkers from `flycheck-checkers'.  You may also use
+this option as a file or directory local variable to disable
+specific checkers in individual files and directories
+respectively."
+  :group 'flycheck
+  :type '(repeat (symbol :tag "Checker"))
+  :package-version '(flycheck . "0.16")
+  :safe #'flycheck-symbol-list-p)
+(make-variable-buffer-local 'flycheck-disabled-checkers)
+
+(defvar-local flycheck-checker nil
+  "Syntax checker to use for the current buffer.
+
+If unset or nil, automatically select a suitable syntax checker
+from `flycheck-checkers' on every syntax check.
+
+If set to a syntax checker only use this syntax checker and never
+select one from `flycheck-checkers' automatically.  The syntax
+checker is used regardless of whether it is contained in
+`flycheck-checkers' or `flycheck-disabled-checkers'.  If the
+syntax checker is unusable in the current buffer an error is
+signaled.
+
+A syntax checker assigned to this variable must be defined with
+`flycheck-define-checker'.
+
+Use the command `flycheck-select-checker' to select a syntax
+checker for the current buffer, or set this variable as file
+local variable to always use a specific syntax checker for a
+file.  See Info Node `(emacs)Specifying File Variables' for more
+information about file variables.")
+(put 'flycheck-checker 'safe-local-variable 'flycheck-registered-checker-p)
+
+(defcustom flycheck-locate-config-file-functions
+  '(flycheck-locate-config-file-absolute-path
+    flycheck-locate-config-file-ancestor-directories
+    flycheck-locate-config-file-home)
+  "Functions to locate syntax checker configuration files.
+
+Each function in this hook must accept two arguments: The value
+of the configuration file variable, and the syntax checker
+symbol.  It must return either a string with an absolute path to
+the configuration file, or nil, if it cannot locate the
+configuration file.
+
+The functions in this hook are called in order of appearance, until a
+function returns non-nil.  The configuration file returned by that
+function is then given to the syntax checker if it exists.
+
+This variable is an abnormal hook.  See Info
+node `(elisp)Hooks'."
+  :group 'flycheck
+  :type 'hook
+  :risky t)
+
+(defcustom flycheck-checker-error-threshold 400
+  "Maximum errors allowed per syntax checker.
+
+The value of this variable is either an integer denoting the
+maximum number of errors per syntax checker and buffer, or nil to
+not limit the errors reported from a syntax checker.
+
+If this variable is a number and a syntax checker reports more
+errors than the value of this variable, its errors are not
+discarded, and not highlighted in the buffer or available in the
+error list.  The affected syntax checker is also disabled for
+future syntax checks of the buffer."
+  :group 'flycheck
+  :type '(choice (const :tag "Do not limit reported errors" nil)
+                 (integer :tag "Maximum number of errors"))
+  :risky t
+  :package-version '(flycheck . "0.22"))
+
+(defcustom flycheck-process-error-functions '(flycheck-add-overlay)
+  "Functions to process errors.
+
+Each function in this hook must accept a single argument: A
+Flycheck error to process.
+
+All functions in this hook are called in order of appearance,
+until a function returns non-nil.  Thus, a function in this hook
+may return nil, to allow for further processing of the error, or
+any non-nil value, to indicate that the error was fully processed
+and inhibit any further processing.
+
+The functions are called for each newly parsed error immediately
+after the corresponding syntax checker finished.  At this stage,
+the overlays from the previous syntax checks are still present,
+and there may be further syntax checkers in the chain.
+
+This variable is an abnormal hook.  See Info
+node `(elisp)Hooks'."
+  :group 'flycheck
+  :type 'hook
+  :package-version '(flycheck . "0.13")
+  :risky t)
+
+(defcustom flycheck-display-errors-delay 0.9
+  "Delay in seconds before displaying errors at point.
+
+Use floating point numbers to express fractions of seconds."
+  :group 'flycheck
+  :type 'number
+  :package-version '(flycheck . "0.15")
+  :safe #'numberp)
+
+(defcustom flycheck-display-errors-function #'flycheck-display-error-messages
+  "Function to display error messages.
+
+If set to a function, call the function with the list of errors
+to display as single argument.  Each error is an instance of the
+`flycheck-error' struct.
+
+If set to nil, do not display errors at all."
+  :group 'flycheck
+  :type '(choice (const :tag "Display error messages"
+                        flycheck-display-error-messages)
+                 (const :tag "Display error messages only if no error list"
+                        flycheck-display-error-messages-unless-error-list)
+                 (function :tag "Error display function"))
+  :package-version '(flycheck . "0.13")
+  :risky t)
+
+(defcustom flycheck-indication-mode 'left-fringe
+  "The indication mode for Flycheck errors and warnings.
+
+This variable controls how Flycheck indicates errors in buffers.
+May either be `left-fringe', `right-fringe', or nil.
+
+If set to `left-fringe' or `right-fringe', indicate errors and
+warnings via icons in the left and right fringe respectively.
+
+If set to nil, do not indicate errors and warnings, but just
+highlight them according to `flycheck-highlighting-mode'."
+  :group 'flycheck
+  :type '(choice (const :tag "Indicate in the left fringe" left-fringe)
+                 (const :tag "Indicate in the right fringe" right-fringe)
+                 (const :tag "Do not indicate" nil))
+  :safe #'symbolp)
+
+(defcustom flycheck-highlighting-mode 'symbols
+  "The highlighting mode for Flycheck errors and warnings.
+
+The highlighting mode controls how Flycheck highlights errors in
+buffers.  The following modes are known:
+
+`columns'
+     Highlight the error column.  If the error does not have a column,
+     highlight the whole line.
+
+`symbols'
+     Highlight the symbol at the error column, if there is any,
+     otherwise behave like `columns'.  This is the default.
+
+`sexps'
+     Highlight the expression at the error column, if there is
+     any, otherwise behave like `columns'.  Note that this mode
+     can be *very* slow in some major modes.
+
+`lines'
+     Highlight the whole line.
+
+nil
+     Do not highlight errors at all.  However, errors will still
+     be reported in the mode line and in error message popups,
+     and indicated according to `flycheck-indication-mode'."
+  :group 'flycheck
+  :type '(choice (const :tag "Highlight columns only" columns)
+                 (const :tag "Highlight symbols" symbols)
+                 (const :tag "Highlight expressions" sexps)
+                 (const :tag "Highlight whole lines" lines)
+                 (const :tag "Do not highlight errors" nil))
+  :package-version '(flycheck . "0.14")
+  :safe #'symbolp)
+
+(defcustom flycheck-check-syntax-automatically '(save
+                                                 idle-change
+                                                 new-line
+                                                 mode-enabled)
+  "When Flycheck should check syntax automatically.
+
+This variable is a list of events that may trigger syntax checks.
+The following events are known:
+
+`save'
+     Check syntax immediately after the buffer was saved.
+
+`idle-change'
+     Check syntax a short time (see `flycheck-idle-change-delay')
+     after the last change to the buffer.
+
+`new-line'
+     Check syntax immediately after a new line was inserted into
+     the buffer.
+
+`mode-enabled'
+     Check syntax immediately when `flycheck-mode' is enabled.
+
+Flycheck performs a syntax checks only on events, which are
+contained in this list.  For instance, if the value of this
+variable is `(mode-enabled save)', Flycheck will only check if
+the mode is enabled or the buffer was saved, but never after
+changes to the buffer contents.
+
+If nil, never check syntax automatically.  In this case, use
+`flycheck-buffer' to start a syntax check manually."
+  :group 'flycheck
+  :type '(set (const :tag "After the buffer was saved" save)
+              (const :tag "After the buffer was changed and idle" idle-change)
+              (const :tag "After a new line was inserted" new-line)
+              (const :tag "After `flycheck-mode' was enabled" mode-enabled))
+  :package-version '(flycheck . "0.12")
+  :safe #'symbolp)
+
+(defcustom flycheck-idle-change-delay 0.5
+  "How many seconds to wait before checking syntax automatically.
+
+After the buffer was changed, Flycheck will wait as many seconds
+as the value of this variable before starting a syntax check.  If
+the buffer is modified during this time, Flycheck will wait
+again.
+
+This variable has no effect, if `idle-change' is not contained in
+`flycheck-check-syntax-automatically'."
+  :group 'flycheck
+  :type 'number
+  :package-version '(flycheck . "0.13")
+  :safe #'numberp)
+
+(defcustom flycheck-standard-error-navigation t
+  "Whether to support error navigation with `next-error'.
+
+If non-nil, enable navigation of Flycheck errors with
+`next-error', `previous-error' and `first-error'.  Otherwise,
+these functions just navigate errors from compilation modes.
+
+Flycheck error navigation with `flycheck-next-error',
+`flycheck-previous-error' and `flycheck-first-error' is always
+enabled, regardless of the value of this variable.
+
+Note that this setting only takes effect when `flycheck-mode' is
+enabled.  Changing it will not affect buffers which already have
+`flycheck-mode' enabled."
+  :group 'flycheck
+  :type 'boolean
+  :package-version '(flycheck . "0.15")
+  :safe #'booleanp)
+
+(defcustom flycheck-navigation-minimum-level nil
+  "The minimum level of errors to navigate.
+
+If set to an error level, only navigate errors whose error level
+is at least as severe as this one.  If nil, navigate all errors."
+  :group 'flycheck
+  :type '(radio (const :tag "All locations" nil)
+                (const :tag "Informational messages" info)
+                (const :tag "Warnings" warning)
+                (const :tag "Errors" error)
+                (symbol :tag "Custom error level"))
+  :safe #'flycheck-error-level-p
+  :package-version '(flycheck . "0.21"))
+
+(defcustom flycheck-completion-system nil
+  "The completion system to use.
+
+`ido'
+     Use IDO.
+
+     IDO is a built-in alternative completion system, without
+     good flex matching and a powerful UI.  You may want to
+     install flx-ido (see URL `https://github.com/lewang/flx') to
+     improve the flex matching in IDO.
+
+`grizzl'
+     Use Grizzl.
+
+     Grizzl is an alternative completion system with powerful
+     flex matching, but a very limited UI.  See URL
+     `https://github.com/d11wtq/grizzl'.
+
+nil
+     Use the standard unfancy `completing-read'.
+
+     `completing-read' has a very simple and primitive UI, and
+     does not offer flex matching.  This is the default setting,
+     though, to match Emacs' defaults.  With this system, you may
+     want enable option `icomplete-mode' to improve the display
+     of completion candidates at least."
+  :group 'flycheck
+  :type '(choice (const :tag "IDO" ido)
+                 (const :tag "Grizzl" grizzl)
+                 (const :tag "Completing read" nil))
+  :package-version '(flycheck . "0.17"))
+
+(defcustom flycheck-temp-prefix "flycheck"
+  "Prefix for temporary files created by Flycheck."
+  :group 'flycheck
+  :type 'string
+  :package-version '(flycheck . "0.19")
+  :risky t)
+
+(defcustom flycheck-mode-hook nil
+  "Hooks to run after `flycheck-mode'."
+  :group 'flycheck
+  :type 'hook
+  :risky t)
+
+(defcustom flycheck-after-syntax-check-hook nil
+  "Functions to run after each syntax check.
+
+This hook is run after a syntax check was finished.
+
+At this point, *all* chained checkers were run, and all errors
+were parsed, highlighted and reported.  The variable
+`flycheck-current-errors' contains all errors from all syntax
+checkers run during the syntax check, so you can apply any error
+analysis functions.
+
+Note that this hook does *not* run after each individual syntax
+checker in the syntax checker chain, but only after the *last
+checker*.
+
+This variable is a normal hook.  See Info node `(elisp)Hooks'."
+  :group 'flycheck
+  :type 'hook
+  :risky t)
+
+(defcustom flycheck-before-syntax-check-hook nil
+  "Functions to run before each syntax check.
+
+This hook is run right before a syntax check starts.
+
+Error information from the previous syntax check is *not*
+cleared before this hook runs.
+
+Note that this hook does *not* run before each individual syntax
+checker in the syntax checker chain, but only before the *first
+checker*.
+
+This variable is a normal hook.  See Info node `(elisp)Hooks'."
+  :group 'flycheck
+  :type 'hook
+  :risky t)
+
+(defcustom flycheck-syntax-check-failed-hook nil
+  "Functions to run if a syntax check failed.
+
+This hook is run whenever an error occurs during Flycheck's
+internal processing.  No information about the error is given to
+this hook.
+
+You should use this hook to conduct additional cleanup actions
+when Flycheck failed.
+
+This variable is a normal hook.  See Info node `(elisp)Hooks'."
+  :group 'flycheck
+  :type 'hook
+  :risky t)
+
+(defcustom flycheck-status-changed-functions nil
+  "Functions to run if the Flycheck status changed.
+
+This hook is run whenever the status of Flycheck changes.  Each
+hook function takes the status symbol as sinlge argument, as
+given to `flycheck-report-status', which see.
+
+This variable is a abnormal hook.  See Info
+node `(elisp)Hooks'."
+  :group 'flycheck
+  :type 'hook
+  :risky t
+  :package-version '(flycheck . "0.20"))
+
+(defcustom flycheck-error-list-after-refresh-hook nil
+  "Functions to run after the error list was refreshed.
+
+This hook is run whenever the error list is refreshed.
+
+This variable is a normal hook.  See Info node `(elisp)Hooks'."
+  :group 'flycheck
+  :type 'hook
+  :risky t
+  :package-version '(flycheck . "0.21"))
+
+(defface flycheck-error
+  '((((supports :underline (:style wave)))
+     :underline (:style wave :color "Red1"))
+    (t
+     :underline t :inherit error))
+  "Flycheck face for errors."
+  :package-version '(flycheck . "0.13")
+  :group 'flycheck-faces)
+
+(defface flycheck-warning
+  '((((supports :underline (:style wave)))
+     :underline (:style wave :color "DarkOrange"))
+    (t
+     :underline t :inherit warning))
+  "Flycheck face for warnings."
+  :package-version '(flycheck . "0.13")
+  :group 'flycheck-faces)
+
+(defface flycheck-info
+  '((((supports :underline (:style wave)))
+     :underline (:style wave :color "ForestGreen"))
+    (t
+     :underline t :inherit success))
+  "Flycheck face for informational messages."
+  :package-version '(flycheck . "0.15")
+  :group 'flycheck-faces)
+
+(defface flycheck-fringe-error
+  '((t :inherit error))
+  "Flycheck face for fringe error indicators."
+  :package-version '(flycheck . "0.13")
+  :group 'flycheck-faces)
+
+(defface flycheck-fringe-warning
+  '((t :inherit warning))
+  "Flycheck face for fringe warning indicators."
+  :package-version '(flycheck . "0.13")
+  :group 'flycheck-faces)
+
+(defface flycheck-fringe-info
+  ;; Semantically `success' is probably not the right face, but it looks nice as
+  ;; a base face
+  '((t :inherit success))
+  "Flycheck face for fringe info indicators."
+  :package-version '(flycheck . "0.15")
+  :group 'flycheck-faces)
+
+(defface flycheck-error-list-error
+  '((t :inherit error))
+  "Flycheck face for error messages in the error list."
+  :package-version '(flycheck . "0.16")
+  :group 'flycheck-faces)
+
+(defface flycheck-error-list-warning
+  '((t :inherit warning))
+  "Flycheck face for warning messages in the error list."
+  :package-version '(flycheck . "0.16")
+  :group 'flycheck-faces)
+
+(defface flycheck-error-list-info
+  '((t :inherit success))
+  "Flycheck face for info messages in the error list."
+  :package-version '(flycheck . "0.16")
+  :group 'flycheck-faces)
+
+;; The base faces for the following two faces are inspired by Compilation Mode
+(defface flycheck-error-list-line-number
+  '((t :inherit font-lock-constant-face))
+  "Face for line numbers in the error list."
+  :group 'flycheck-faces
+  :package-version '(flycheck . "0.16"))
+
+(defface flycheck-error-list-column-number
+  '((t :inherit font-lock-constant-face))
+  "Face for line numbers in the error list."
+  :group 'flycheck-faces
+  :package-version '(flycheck . "0.16"))
+
+(defface flycheck-error-list-id
+  '((t :inherit font-lock-type-face))
+  "Face for the error ID in the error list."
+  :group 'flycheck-faces
+  :package-version '(flycheck . "0.22"))
+
+(defface flycheck-error-list-checker-name
+  '((t :inherit font-lock-function-name-face))
+  "Face for the syntax checker name in the error list."
+  :group 'flycheck-faces
+  :package-version '(flycheck . "0.21"))
+
+(defface flycheck-error-list-highlight
+  '((t :inherit highlight))
+  "Flycheck face to highlight errors in the error list."
+  :package-version '(flycheck . "0.15")
+  :group 'flycheck-faces)
+
+(defvar flycheck-command-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map "c"         #'flycheck-buffer)
+    (define-key map "C"         #'flycheck-clear)
+    (define-key map (kbd "C-c") #'flycheck-compile)
+    (define-key map "n"         #'flycheck-next-error)
+    (define-key map "p"         #'flycheck-previous-error)
+    (define-key map "l"         #'flycheck-list-errors)
+    (define-key map (kbd "C-w") #'flycheck-copy-errors-as-kill)
+    (define-key map "s"         #'flycheck-select-checker)
+    (define-key map "e"         #'flycheck-set-checker-executable)
+    (define-key map "?"         #'flycheck-describe-checker)
+    (define-key map "i"         #'flycheck-info)
+    (define-key map "V"         #'flycheck-version)
+    (define-key map "v"         #'flycheck-verify-setup)
+    (define-key map "x"         #'flycheck-disable-checker)
+    map)
+  "Keymap of Flycheck interactive commands.")
+
+(defcustom flycheck-keymap-prefix (kbd "C-c !")
+  "Prefix for key bindings of Flycheck.
+
+Changing this variable outside Customize does not have any
+effect.  To change the keymap prefix from Lisp, you need to
+explicitly re-define the prefix key:
+
+    (define-key flycheck-mode-map flycheck-keymap-prefix nil)
+    (setq flycheck-keymap-prefix (kbd \"C-c f\"))
+    (define-key flycheck-mode-map flycheck-keymap-prefix
+                flycheck-command-map)
+
+Please note that Flycheck's manual documents the default
+keybindings.  Changing this variable is at your own risk."
+  :group 'flycheck
+  :package-version '(flycheck . "0.19")
+  :type 'string
+  :risky t
+  :set
+  (lambda (variable key)
+    (when (and (boundp variable) (boundp 'flycheck-mode-map))
+      (define-key flycheck-mode-map (symbol-value variable) nil)
+      (define-key flycheck-mode-map key flycheck-command-map))
+    (set-default variable key)))
+
+(defcustom flycheck-mode-line '(:eval (flycheck-mode-line-status-text))
+  "Mode line lighter for Flycheck.
+
+The value of this variable is a mode line template as in
+`mode-line-format'.  See Info Node `(elisp)Mode Line Format' for
+more information.  Note that it should contain a _single_ mode
+line construct only.
+
+Customize this variable to change how Flycheck reports its status
+in the mode line.  You may use `flycheck-mode-line-status-text'
+to obtain a human-readable status text, including an
+error/warning count.
+
+You may also assemble your own status text.  The current status
+of Flycheck is available in `flycheck-last-status-change'.  The
+errors in the current buffer are stored in
+`flycheck-current-errors', and the function
+`flycheck-count-errors' may be used to obtain the number of
+errors grouped by error level.
+
+Set this variable to nil to disable the mode line completely."
+  :group 'flycheck
+  :type 'sexp
+  :risky t
+  :package-version '(flycheck . "0.20"))
+
+(defcustom flycheck-error-list-mode-line
+  `(,(propertized-buffer-identification "%12b")
+    " for buffer "
+    (:eval (flycheck-error-list-propertized-source-name)))
+  "Mode line construct for Flycheck error list.
+
+The value of this variable is a mode line template as in
+`mode-line-format', to be used as
+`mode-line-buffer-identification' in `flycheck-error-list-mode'.
+See Info Node `(elisp)Mode Line Format' for more information.
+
+Customize this variable to change how the error list appears in
+the mode line.  The default shows the name of the buffer and the
+name of the source buffer, i.e. the buffer whose errors are
+currently listed."
+  :group 'flycheck
+  :type 'sexp
+  :risky t
+  :package-version '(flycheck . "0.20"))
+
+(defcustom flycheck-global-modes t
+  "Modes for which `flycheck-mode' is turned on by `global-flycheck-mode'.
+
+If t, Flycheck Mode is turned on for all major modes.  If a list,
+Flycheck Mode is turned on for all `major-mode' symbols in that
+list.  If the `car' of the list is `not', Flycheck Mode is turned
+on for all `major-mode' symbols _not_ in that list.  If nil,
+Flycheck Mode is never turned on by `global-flycheck-mode'.
+
+Note that Flycheck is never turned on for modes whose
+`mode-class' property is `special' (see Info node `(elisp)Major
+Mode Conventions'), regardless of the value of this option."
+  :group 'flycheck
+  :type '(choice (const :tag "none" nil)
+                 (const :tag "all" t)
+                 (set :menu-tag "mode specific" :tag "modes"
+                      :value (not)
+                      (const :tag "Except" not)
+                      (repeat :inline t (symbol :tag "mode"))))
+  :risky t
+  :package-version '(flycheck . "0.23"))
+
+\f
+;;; Global Flycheck menu
+(defvar flycheck-mode-menu-map
+  (easy-menu-create-menu
+   "Syntax Checking"
+   '(["Enable on-the-fly syntax checking" flycheck-mode
+      :style toggle :selected flycheck-mode
+      ;; Don't let users toggle the mode if there is no syntax checker for this
+      ;; buffer
+      :enable (or flycheck-mode (flycheck-get-checker-for-buffer))]
+     ["Check current buffer" flycheck-buffer flycheck-mode]
+     ["Clear errors in buffer" flycheck-clear t]
+     "---"
+     ["Go to next error" flycheck-next-error flycheck-mode]
+     ["Go to previous error" flycheck-previous-error flycheck-mode]
+     ["Show all errors" flycheck-list-errors flycheck-mode]
+     "---"
+     ["Copy messages at point" flycheck-copy-errors-as-kill
+      (flycheck-overlays-at (point))]
+     "---"
+     ["Select syntax checker" flycheck-select-checker flycheck-mode]
+     ["Disable syntax checker" flycheck-disable-checker flycheck-mode]
+     ["Set executable of syntax checker" flycheck-set-checker-executable
+      flycheck-mode]
+     "---"
+     ["Describe syntax checker" flycheck-describe-checker t]
+     ["Show Flycheck version" flycheck-version t]
+     ["Read the Flycheck manual" flycheck-info t]))
+  "Menu of `flycheck-mode'.")
+
+(easy-menu-add-item nil '("Tools") flycheck-mode-menu-map "Spell Checking")
+
+\f
+;;; Version information, manual and loading of Flycheck
+(defun flycheck-version (&optional show-version)
+  "Get the Flycheck version as string.
+
+If called interactively or if SHOW-VERSION is non-nil, show the
+version in the echo area and the messages buffer.
+
+The returned string includes both, the version from package.el
+and the library version, if both a present and different.
+
+If the version number could not be determined, signal an error,
+if called interactively, or if SHOW-VERSION is non-nil, otherwise
+just return nil."
+  (interactive (list t))
+  (let ((version (pkg-info-version-info 'flycheck)))
+    (when show-version
+      (message "Flycheck version: %s" version))
+    version))
+
+(defun flycheck-unload-function ()
+  "Unload function for Flycheck."
+  (global-flycheck-mode -1)
+  (easy-menu-remove-item nil '("Tools") (cadr flycheck-mode-menu-map))
+  (remove-hook 'kill-emacs-hook #'flycheck-global-teardown)
+  (setq find-function-regexp-alist
+        (assq-delete-all 'flycheck-checker find-function-regexp-alist)))
+
+;;;###autoload
+(defun flycheck-info ()
+  "Open the Flycheck manual."
+  (interactive)
+  (info "flycheck"))
+
+\f
+;;; Utility functions
+(defun flycheck-sexp-to-string (sexp)
+  "Convert SEXP to a string.
+
+Like `prin1-to-string' but ensure that the returned string
+is loadable."
+  (let ((print-quoted t)
+        (print-length nil)
+        (print-level nil))
+    (prin1-to-string sexp)))
+
+(defun flycheck-string-to-number-safe (string)
+  "Safely convert STRING to a number.
+
+If STRING is of string type and a numeric string, convert STRING
+to a number and return it.  Otherwise return nil."
+  (let ((number-re (rx string-start (one-or-more (any digit)) string-end)))
+    (when (and (stringp string) (string-match-p number-re string))
+      (string-to-number string))))
+
+(defun flycheck-string-list-p (obj)
+  "Determine if OBJ is a list of strings."
+  (and (listp obj) (-all? #'stringp obj)))
+
+(defun flycheck-symbol-list-p (obj)
+  "Determine if OBJ is a list of symbols."
+  (and (listp obj) (-all? #'symbolp obj)))
+
+(defun flycheck-same-files-p (file-a file-b)
+  "Determine whether FILE-A and FILE-B refer to the same file."
+  (string= (directory-file-name (expand-file-name file-a))
+           (directory-file-name (expand-file-name file-b))))
+
+(defvar-local flycheck-temporaries nil
+  "Temporary files and directories created by Flycheck.")
+
+(defun flycheck-temp-dir-system ()
+  "Create a unique temporary directory.
+
+Use `flycheck-temp-prefix' as prefix, and add the directory to
+`flycheck-temporaries'.
+
+Return the path of the directory"
+  (let* ((tempdir (make-temp-file flycheck-temp-prefix 'directory)))
+    (push tempdir flycheck-temporaries)
+    tempdir))
+
+(defun flycheck-temp-file-system (filename)
+  "Create a temporary file named after FILENAME.
+
+If FILENAME is non-nil, this function creates a temporary
+directory with `flycheck-temp-dir-system', and creates a file
+with the same name as FILENAME in this directory.
+
+Otherwise this function creates a temporary file with
+`flycheck-temp-prefix' and a random suffix.  The path of the file
+is added to `flycheck-temporaries'.
+
+Add the path of the file to `flycheck-temporaries'.
+
+Return the path of the file."
+  (let (tempfile)
+    (if filename
+        (let ((directory (flycheck-temp-dir-system)))
+          (setq tempfile (expand-file-name (file-name-nondirectory filename)
+                                           directory)))
+      (setq tempfile (make-temp-file flycheck-temp-prefix)))
+    (push tempfile flycheck-temporaries)
+    tempfile))
+
+(defun flycheck-temp-file-inplace (filename)
+  "Create an in-place copy of FILENAME.
+
+Prefix the file with `flycheck-temp-prefix' and add the path of
+the file to `flycheck-temporaries'.
+
+If FILENAME is nil, fall back to `flycheck-temp-file-system'.
+
+Return the path of the file."
+  (if filename
+      (let* ((tempname (format "%s_%s"
+                               flycheck-temp-prefix
+                               (file-name-nondirectory filename)))
+             (tempfile (expand-file-name tempname
+                                         (file-name-directory filename))))
+        (push tempfile flycheck-temporaries)
+        tempfile)
+    (flycheck-temp-file-system filename)))
+
+(defun flycheck-save-buffer-to-file (file-name)
+  "Save the contents of the current buffer to FILE-NAME."
+  (make-directory (file-name-directory file-name) t)
+  (let ((jka-compr-inhibit t))
+    (write-region nil nil file-name nil 0)))
+
+(defun flycheck-save-buffer-to-temp (temp-file-fn)
+  "Save buffer to temp file returned by TEMP-FILE-FN.
+
+Return the name of the temporary file."
+  (let ((filename (funcall temp-file-fn (buffer-file-name))))
+    ;; Do not flush short-lived temporary files onto disk
+    (let ((write-region-inhibit-fsync t))
+      (flycheck-save-buffer-to-file filename))
+    filename))
+
+(defun flycheck-prepend-with-option (option items &optional prepend-fn)
+  "Prepend OPTION to each item in ITEMS, using PREPEND-FN.
+
+Prepend OPTION to each item in ITEMS.
+
+ITEMS is a list of strings to pass to the syntax checker.  OPTION
+is the option, as string.  PREPEND-FN is a function called to
+prepend OPTION to each item in ITEMS.  It receives the option and
+a single item from ITEMS as argument, and must return a string or
+a list of strings with OPTION prepended to the item.  If
+PREPEND-FN is nil or omitted, use `list'.
+
+Return a list of strings where OPTION is prepended to each item
+in ITEMS using PREPEND-FN.  If PREPEND-FN returns a list, it is
+spliced into the resulting list."
+  (unless (stringp option)
+    (error "Option %S is not a string" option))
+  (unless prepend-fn
+    (setq prepend-fn #'list))
+  (let ((prepend
+         (lambda (item)
+           (let ((result (funcall prepend-fn option item)))
+             (cond
+              ((and (listp result) (-all? #'stringp result)) result)
+              ((stringp result) (list result))
+              (t (error "Invalid result type for option: %S" result)))))))
+    (apply #'append (mapcar prepend items))))
+
+(defun flycheck-find-in-buffer (pattern)
+  "Find PATTERN in the current buffer.
+
+Return the result of the first matching group of PATTERN, or nil,
+if PATTERN did not match."
+  (save-restriction
+    (widen)
+    (save-excursion
+      (goto-char (point-min))
+      (when (re-search-forward pattern nil 'no-error)
+        (match-string-no-properties 1)))))
+
+(defun flycheck-ephemeral-buffer-p ()
+  "Determine whether the current buffer is an ephemeral buffer.
+
+See Info node `(elisp)Buffer Names' for information about
+ephemeral buffers."
+  (string-prefix-p " " (buffer-name)))
+
+(defun flycheck-encrypted-buffer-p ()
+  "Determine whether the current buffer is an encrypted file.
+
+See Info node `(epa)Top' for Emacs' interface to encrypted
+files."
+  ;; The EPA file handler sets this variable locally to remember the recipients
+  ;; of the encrypted file for re-encryption.  Hence, a local binding of this
+  ;; variable is a good indication that the buffer is encrypted.  I haven't
+  ;; found any better indicator anyway.
+  (local-variable-p 'epa-file-encrypt-to))
+
+(defun flycheck-autoloads-file-p ()
+  "Determine whether the current buffer is a autoloads file.
+
+Autoloads are generated by package.el during installation."
+  (string-suffix-p "-autoloads.el" (buffer-name)))
+
+(defun flycheck-in-user-emacs-directory-p (filename)
+  "Whether FILENAME is in `user-emacs-directory'."
+  (string-prefix-p (file-name-as-directory (file-truename user-emacs-directory))
+                   (file-truename filename)))
+
+(defun flycheck-safe-delete (file-or-dir)
+  "Safely delete FILE-OR-DIR."
+  (ignore-errors
+    (if (file-directory-p file-or-dir)
+        (delete-directory file-or-dir 'recursive)
+      (delete-file file-or-dir))))
+
+(defun flycheck-safe-delete-temporaries ()
+  "Safely delete all temp files and directories of Flycheck.
+
+Safely delete all files and directories listed in
+`flycheck-temporaries' and set the variable's value to nil."
+  (mapc #'flycheck-safe-delete flycheck-temporaries)
+  (setq flycheck-temporaries nil))
+
+(eval-and-compile
+  (defun flycheck-rx-file-name (form)
+    "Translate the `(file-name)' FORM into a regular expression."
+    (let ((body (or (cdr form) '((minimal-match
+                                  (one-or-more not-newline))))))
+      (rx-submatch-n `(group-n 1 ,@body))))
+
+  (defun flycheck-rx-message (form)
+    "Translate the `(message)' FORM into a regular expression."
+    (let ((body (or (cdr form) '((one-or-more not-newline)))))
+      (rx-submatch-n `(group-n 4 ,@body))))
+
+  (defun flycheck-rx-id (form)
+    "Translate the `(id)' FORM into a regular expression."
+    (rx-submatch-n `(group-n 5 ,@(cdr form))))
+
+  (defun flycheck-rx-to-string (form &optional no-group)
+    "Like `rx-to-string' for FORM, but with special keywords:
+
+`line'
+     matches the line number.
+
+`column'
+     matches the column number.
+
+`(file-name SEXP ...)'
+     matches the file name.  SEXP describes the file name.  If no
+     SEXP is given, use a default body of `(minimal-match
+     (one-or-more not-newline))'.
+
+`(message SEXP ...)'
+     matches the message. SEXP constitutes the body of the message.  If no SEXP
+     is given, use a default body of `(one-or-more not-newline)'.
+
+`(id SEXP ...)'
+     matches an error ID.  SEXP describes the ID.
+
+NO-GROUP is passed to `rx-to-string'."
+    (let ((rx-constituents
+           (append
+            `((line . ,(rx (group-n 2 (one-or-more digit))))
+              (column . ,(rx (group-n 3 (one-or-more digit))))
+              (file-name flycheck-rx-file-name 0 nil)
+              (message flycheck-rx-message 0 nil)
+              (id flycheck-rx-id 0 nil))
+            rx-constituents nil)))
+      (rx-to-string form no-group))))
+
+(defun flycheck-current-load-file ()
+  "Get the source file currently being loaded.
+
+Always return the name of the corresponding source file, never
+any byte-compiled file.
+
+Return nil, if the currently loaded file cannot be determined."
+  (-when-let* ((this-file (cond
+                           (load-in-progress load-file-name)
+                           ((bound-and-true-p byte-compile-current-file))
+                           (t (buffer-file-name))))
+               ;; A best guess for the source file of a compiled library. Works
+               ;; well in most cases, and especially for ELPA packages
+               (source-file (concat (file-name-sans-extension this-file)
+                                    ".el")))
+    (when (file-exists-p source-file)
+      source-file)))
+
+(defun flycheck-module-root-directory (module &optional file-name)
+  "Get the root directory for a MODULE in FILE-NAME.
+
+MODULE is a qualified module name, either a string with
+components separated by a dot, or as list of components.
+FILE-NAME is the name of the file or directory containing the
+module as string.  When nil or omitted, defaults to the return
+value of function `buffer-file-name'.
+
+Return the root directory of the module, that is, the directory,
+from which FILE-NAME can be reached by descending directories
+along each part of MODULE.
+
+If the MODULE name does not match the directory hierarchy upwards
+from FILE-NAME, return the directory containing FILE-NAME.  When
+FILE-NAME is nil, return `default-directory'."
+  (let ((file-name (or file-name (buffer-file-name)))
+        (module-components (if (stringp module)
+                               (split-string module (rx "."))
+                             (copy-sequence module))))
+    (if (and module-components file-name)
+        (let ((parts (nreverse module-components))
+              (base-directory (directory-file-name
+                               (file-name-sans-extension file-name))))
+          (while (and parts
+                      (string= (file-name-nondirectory base-directory)
+                               (car parts)))
+            (pop parts)
+            (setq base-directory (directory-file-name
+                                  (file-name-directory base-directory))))
+          (file-name-as-directory base-directory))
+      (if file-name
+          (file-name-directory file-name)
+        (expand-file-name default-directory)))))
+
+\f
+;;; Minibuffer tools
+(defvar read-flycheck-checker-history nil
+  "`completing-read' history of `read-flycheck-checker'.")
+
+(defun read-flycheck-checker (prompt &optional default property candidates)
+  "Read a flycheck checker from minibuffer with PROMPT and DEFAULT.
+
+PROMPT is a string to show in the minibuffer as prompt.  It
+should end with a single space.  DEFAULT is a symbol denoting the
+default checker to use, if the user did not select any checker.
+PROPERTY is a symbol denoting a syntax checker property.  If
+non-nil, only complete syntax checkers which have a non-nil value
+for PROPERTY.  CANDIDATES is an optional list of all syntax
+checkers available for completion, defaulting to all defined
+checkers.  If given, PROPERTY is ignored.
+
+Return the checker as symbol, or DEFAULT if no checker was
+chosen.  If DEFAULT is nil and no checker was chosen, signal a
+`user-error' if the underlying completion system does not provide
+a default on its own."
+  (when (and default (not (flycheck-valid-checker-p default)))
+    (error "%S is no valid Flycheck checker" default))
+  (let* ((candidates (mapcar #'symbol-name
+                             (or candidates
+                                 (flycheck-defined-checkers property))))
+         (default (and default (symbol-name default)))
+         (input (pcase flycheck-completion-system
+                  (`ido (ido-completing-read prompt candidates nil
+                                             'require-match nil
+                                             'read-flycheck-checker-history
+                                             default))
+                  (`grizzl (if (and (fboundp 'grizzl-make-index)
+                                    (fboundp 'grizzl-completing-read))
+                               (grizzl-completing-read
+                                prompt (grizzl-make-index candidates))
+                             (user-error "Please install Grizzl from \
+https://github.com/d11wtq/grizzl")))
+                  (_ (completing-read prompt candidates nil 'require-match
+                                      nil 'read-flycheck-checker-history
+                                      default)))))
+    (when (string-empty-p input)
+      (unless default
+        (user-error "No syntax checker selected"))
+      (setq input default))
+    (let ((checker (intern input)))
+      (unless (flycheck-valid-checker-p checker)
+        (error "%S is no Flycheck syntax checker" checker))
+      checker)))
+
+\f
+;;; Checker API
+(defun flycheck-defined-checkers (&optional property)
+  "Find all defined syntax checkers, optionally with PROPERTY.
+
+PROPERTY is a symbol.  If given, only return syntax checkers with
+a non-nil value for PROPERTY.
+
+The returned list is sorted alphapetically by the symbol name of
+the syntax checkers."
+  (let (defined-checkers)
+    (mapatoms (lambda (symbol)
+                (when (and (flycheck-valid-checker-p symbol)
+                           (or (null property) (get symbol property)))
+                  (push symbol defined-checkers))))
+    (sort defined-checkers #'string<)))
+
+(defun flycheck-registered-checker-p (checker)
+  "Determine whether CHECKER is registered.
+
+A checker is registered if it is contained in
+`flycheck-checkers'."
+  (and (flycheck-valid-checker-p checker)
+       (memq checker flycheck-checkers)))
+
+(defun flycheck-disabled-checker-p (checker)
+  "Determine whether CHECKER is disabled.
+
+A checker is disabled if it is contained in
+`flycheck-disabled-checkers'."
+  (memq checker flycheck-disabled-checkers))
+
+(defun flycheck-possibly-suitable-checkers ()
+  "Find possibly suitable checkers for the current buffer.
+
+Return a list of all syntax checkers which could possibly be
+suitable for the current buffer, if any problems in their setup
+were fixed.
+
+Currently this function collects all registered syntax checkers
+whose `:modes' contain the current major mode or which do not
+have any `:modes', but a `:predicate' that returns non-nil for
+the current buffer."
+  (let (checkers)
+    (dolist (checker flycheck-checkers)
+      (let ((modes (flycheck-checker-modes checker))
+            (predicate (flycheck-checker-predicate checker)))
+        (when (or (memq major-mode modes)
+                  (and (not modes)
+                       (functionp predicate)
+                       (funcall predicate)))
+          (push checker checkers))))
+    (nreverse checkers)))
+
+\f
+;;; Generic syntax checkers
+(defconst flycheck-generic-checker-version 2
+  "The internal version of generic syntax checker declarations.
+
+Flycheck will not use syntax checkers whose generic version is
+less than this constant.")
+
+(defun flycheck-validate-next-checker (next &optional strict)
+  "Validate NEXT checker.
+
+With STRICT non-nil, also check whether the syntax checker and
+the error level in NEXT are valid.  Otherwise just check whether
+these are symbols.
+
+Signal an error if NEXT is not a valid entry for
+`:next-checkers'."
+  (when (symbolp next)
+    (setq next (cons t next)))
+  (pcase next
+    (`(,level . ,checker)
+     (if strict
+         (progn
+           (unless (or (eq level t) (flycheck-error-level-p level))
+             (error "%S is not a valid Flycheck error level" level))
+           (unless (flycheck-valid-checker-p checker)
+             (error "%s is not a valid Flycheck syntax checker" checker)))
+       (unless (symbolp level)
+         (error "Error level %S must be a symbol" level))
+       (unless (symbolp checker)
+         (error "Checker %S must be a symbol" checker))))
+    (_ (error "%S must be a symbol or cons cell" next)))
+  t)
+
+(defun flycheck-define-generic-checker (symbol docstring &rest properties)
+  "Define SYMBOL as generic syntax checker.
+
+Any syntax checker defined with this macro is eligible for manual
+syntax checker selection with `flycheck-select-checker'.  To make
+the new syntax checker available for automatic selection, it must
+be registered in `flycheck-checkers'.
+
+DOCSTRING is the documentation of the syntax checker, for
+`flycheck-describe-checker'.  The following PROPERTIES constitute
+a generic syntax checker.  Unless otherwise noted, all properties
+are mandatory.
+
+`:start FUNCTION'
+     A function to start the syntax checker.
+
+     FUNCTION shall take two arguments and return a context
+     object if the checker is started successfully.  Otherwise it
+     shall signal an error.
+
+     The first argument is the syntax checker being started.  The
+     second is a callback function to report state changes to
+     Flycheck.  The callback takes two arguments STATUS DATA,
+     where STATUS is a symbol denoting the syntax checker status
+     and DATA an optional argument with additional data for the
+     status report.  See `flycheck-report-buffer-checker-status'
+     for more information about STATUS and DATA.
+
+     FUNCTION may be synchronous or asynchronous, i.e. it may
+     call the given callback either immediately, or at some later
+     point (e.g. from a process sentinel).
+
+     A syntax checker _must_ call CALLBACK at least once with a
+     STATUS that finishes the current syntax checker.  Otherwise
+     Flycheck gets stuck at the current syntax check with this
+     syntax checker.
+
+     The context object returned by FUNCTION is passed to
+     `:interrupt'.
+
+`:interrupt FUNCTION'
+     A function to interrupt the syntax check.
+
+     FUNCTION is called with the syntax checker and the context
+     object returned by the `:start' function and shall try to
+     interrupt the syntax check.  The context may be nil, if the
+     syntax check is interrupted before actually started.
+     FUNCTION should handle this situation.
+
+     If it cannot interrupt the syntax check, it may either
+     signal an error or silently ignore the attempt to interrupt
+     the syntax checker, depending on the severity of the
+     situation.
+
+     If interrupting the syntax check failed, Flycheck will let
+     the syntax check continue, but ignore any status reports.
+     Notably, it won't highlight any errors reported by the
+     syntax check in the buffer.
+
+     This property is optional.  If omitted, Flycheck won't
+     attempt to interrupt syntax checks wit this syntax checker,
+     and simply ignore their results.
+
+`:print-doc FUNCTION'
+     A function to print additional documentation into the Help
+     buffer of this checker.
+
+     FUNCTION is called when creating the Help buffer for the
+     syntax checker, with the syntax checker as single argument,
+     after printing the name of the syntax checker and its modes
+     and predicate, but before printing DOCSTRING.  It may insert
+     additional documentation into the current buffer.
+
+     The call occurs within `with-help-window'.  Hence
+     `standard-output' points to the current buffer, so you may
+     use `princ' and friends to add content.  Also, the current
+     buffer is put into Help mode afterwards, which automatically
+     turns symbols into references, if possible.
+
+     This property is optional.  If omitted, no additional
+     documentation is printed for this syntax checker.
+
+:verify FUNCTION
+     A function to verify the checker for the current buffer.
+
+     FUNCTION is called with the syntax checker as single
+     argument, and shall return a list of
+     `flycheck-verification-result' objects indicating whether
+     the syntax checker could be used in the current buffer, and
+     highlighting potential setup problems.
+
+     This property is optional.  If omitted, no additional
+     verification occurs for this syntax checker.  It is however
+     absolutely recommended that you add a `:verify' function to
+     your syntax checker, because it will help users to spot
+     potential setup problems.
+
+`:modes MODES'
+     A major mode symbol or a list thereof, denoting major modes
+     to use this syntax checker in.
+
+     If given this syntax checker is only used in buffers whose
+     `major-mode' is `eq' to any mode in MODES.
+
+     If `:predicate' is also given, the syntax checker will only
+     be used in buffers for which the `:predicate' returns
+     non-nil.
+
+     This property is optional, however at least one of `:modes'
+     or `:predicate' must be given.
+
+`:predicate FUNCTION'
+     A function to determine whether to use the syntax checker in
+     the current buffer.
+
+     FUNCTION is called without arguments and shall return
+     non-nil if this syntax checker shall be used to check the
+     current buffer.  Otherwise it shall return nil.
+
+     If `:modes' is also given, FUNCTION is only called in
+     matching major modes.
+
+     This property is optional, however at least one of `:modes'
+     or `:predicate' must be given.
+
+`:error-filter FUNCTION'
+     A function to filter the errors returned by this checker.
+
+     FUNCTION is called with the list of `flycheck-error' objects
+     returned by the syntax checker and shall return another list
+     of `flycheck-error' objects, which is considered the final
+     result of this syntax checker.
+
+     FUNCTION is free to add, remove or modify errors, whether in
+     place or by copying.
+
+     This property is optional.  The default filter is
+     `identity'.
+
+`:next-checkers NEXT-CHECKERS'
+     A list denoting syntax checkers to apply after this syntax
+     checker, in what we call \"chaining\" of syntax checkers.
+
+     Each ITEM is a cons cell `(LEVEL . CHECKER)'.  CHECKER is a
+     syntax checker to run after this syntax checker.  LEVEL is
+     an error level.  CHECKER will only be used if there are no
+     current errors of at least LEVEL.  LEVEL may also be t, in
+     which case CHECKER is used regardless of the current errors.
+
+     ITEM may also be a syntax checker symbol, which is
+     equivalent to `(t . ITEM)'.
+
+     Flycheck tries all items in order of declaration, and uses
+     the first whose LEVEL matches and whose CHECKER is
+     registered and can be used for the current buffer.
+
+     This feature is typically used to apply more than one syntax
+     checker to a buffer.  For instance, you might first use a
+     compiler to check a buffer for syntax and type errors, and
+     then run a linting tool that checks for insecure code, or
+     questionable style.
+
+     This property is optional.  If omitted, it defaults to the
+     nil, i.e. no other syntax checkers are applied after this
+     syntax checker.
+
+Signal an error, if any property has an invalid value."
+  (declare (indent 1)
+           (doc-string 2))
+  (let ((start (plist-get properties :start))
+        (interrupt (plist-get properties :interrupt))
+        (print-doc (plist-get properties :print-doc))
+        (modes (plist-get properties :modes))
+        (predicate (plist-get properties :predicate))
+        (verify (plist-get properties :verify))
+        (filter (or (plist-get properties :error-filter) #'identity))
+        (next-checkers (plist-get properties :next-checkers))
+        (file (flycheck-current-load-file)))
+
+    (unless (listp modes)
+      (setq modes (list modes)))
+
+    (unless (functionp start)
+      (error ":start %S of syntax checker %s is not a function" symbol start))
+    (unless (or (null interrupt) (functionp interrupt))
+      (error ":interrupt %S of syntax checker %s is not a function"
+             symbol interrupt))
+    (unless (or (null print-doc) (functionp print-doc))
+      (error ":print-doc %S of syntax checker %s is not a function"
+             symbol print-doc))
+    (unless (or (null verify) (functionp verify))
+      (error ":verify %S of syntax checker %S is not a function"
+             symbol verify))
+    (unless (or modes predicate)
+      (error "Missing :modes or :predicate in syntax checker %s" symbol))
+    (dolist (mode modes)
+      (unless (symbolp mode)
+        (error "Invalid :modes %s in syntax checker %s, %s must be a symbol"
+               modes symbol mode)))
+    (unless (or (null predicate) (functionp predicate))
+      (error ":predicate %S of syntax checker %s  is not a function"
+             symbol predicate))
+    (unless (functionp filter)
+      (error ":error-filter %S of syntax checker %s is not a function"
+             symbol filter))
+    (dolist (checker next-checkers)
+      (flycheck-validate-next-checker checker))
+
+    (let ((real-predicate (lambda ()
+                            (if (flycheck-valid-checker-p symbol)
+                                (or (null predicate) (funcall predicate))
+                              (lwarn 'flycheck :warning "%S is no valid Flycheck syntax checker.
+Try to reinstall the package defining this syntax checker." symbol)
+                              nil))))
+      (pcase-dolist (`(,prop . ,value)
+                     `((flycheck-start         . ,start)
+                       (flycheck-interrupt     . ,interrupt)
+                       (flycheck-print-doc     . ,print-doc)
+                       (flycheck-modes         . ,modes)
+                       (flycheck-predicate     . ,real-predicate)
+                       (flycheck-verify        . ,verify)
+                       (flycheck-error-filter  . ,filter)
+                       (flycheck-next-checkers . ,next-checkers)
+                       (flycheck-documentation . ,docstring)
+                       (flycheck-file          . ,file)))
+        (put symbol prop value)))
+
+    ;; Track the version, to avoid breakage if the internal format changes
+    (put symbol 'flycheck-generic-checker-version
+         flycheck-generic-checker-version)))
+
+(defun flycheck-valid-checker-p (checker)
+  "Check whether a CHECKER is valid.
+
+A valid checker is a symbol defined as syntax checker with
+`flycheck-define-checker'."
+  (and (symbolp checker)
+       (= (or (get checker 'flycheck-generic-checker-version) 0)
+          flycheck-generic-checker-version)))
+
+(defun flycheck-checker-modes (checker)
+  "Get the modes of CHECKER."
+  (get checker 'flycheck-modes))
+
+(defun flycheck-checker-predicate (checker)
+  "Get the predicate function of CHECKER."
+  (get checker 'flycheck-predicate))
+
+(defun flycheck-checker-next-checkers (checker)
+  "Get the next checkers for CHECKER."
+  (get checker 'flycheck-next-checkers))
+
+(defun flycheck-checker-error-filter (checker)
+  "Get the error filter of CHECKER."
+  (get checker 'flycheck-error-filter))
+
+(defun flycheck-checker-documentation (checker)
+  "Get the documentation of CHECKER."
+  (documentation-property checker 'flycheck-documentation))
+
+(defun flycheck-checker-file (checker)
+  "Get the file CHECKER was defined in.
+
+Return nil if the file cannot be determined."
+  (get checker 'flycheck-file))
+
+(defun flycheck-may-use-checker (checker)
+  "Whether a generic CHECKER may be used.
+
+Return non-nil if CHECKER may be used for the current buffer, and
+nil otherwise."
+  (let ((modes (flycheck-checker-modes checker))
+        (predicate (flycheck-checker-predicate checker)))
+    (and (flycheck-valid-checker-p checker)
+         (or (not modes) (memq major-mode modes))
+         (funcall predicate)
+         (not (flycheck-disabled-checker-p checker)))))
+
+(defun flycheck-may-use-next-checker (next-checker)
+  "Determine whether NEXT-CHECKER may be used."
+  (when (symbolp next-checker)
+    (push t next-checker))
+  (let ((level (car next-checker))
+        (next-checker (cdr next-checker)))
+    (and (or (eq level t)
+             (flycheck-has-max-current-errors-p level))
+         (flycheck-registered-checker-p next-checker)
+         (flycheck-may-use-checker next-checker))))
+
+\f
+;;; Help for generic syntax checkers
+(define-button-type 'help-flycheck-checker-def
+  :supertype 'help-xref
+  'help-function #'flycheck-goto-checker-definition
+  'help-echo "mouse-2, RET: find Flycheck checker definition")
+
+(defconst flycheck-find-checker-regexp
+  (rx line-start (zero-or-more (syntax whitespace))
+      "(" symbol-start "flycheck-define-checker" symbol-end
+      (eval (list 'regexp find-function-space-re))
+      symbol-start
+      "%s"
+      symbol-end
+      (or (syntax whitespace) line-end))
+  "Regular expression to find a checker definition.")
+
+(add-to-list 'find-function-regexp-alist
+             '(flycheck-checker . flycheck-find-checker-regexp))
+
+(defun flycheck-goto-checker-definition (checker file)
+  "Go to to the definition of CHECKER in FILE."
+  (let ((location (find-function-search-for-symbol
+                   checker 'flycheck-checker file)))
+    (pop-to-buffer (car location))
+    (if (cdr location)
+        (goto-char (cdr location))
+      (message "Unable to find checker location in file"))))
+
+(defun flycheck-checker-at-point ()
+  "Return the Flycheck checker found at or before point.
+
+Return 0 if there is no checker."
+  (let ((symbol (variable-at-point 'any-symbol)))
+    (if (and (symbolp symbol) (flycheck-valid-checker-p symbol))
+        symbol
+      0)))
+
+(defun flycheck-describe-checker (checker)
+  "Display the documentation of CHECKER.
+
+CHECKER is a checker symbol.
+
+Pop up a help buffer with the documentation of CHECKER."
+  (interactive
+   (let* ((checker (flycheck-checker-at-point))
+          (enable-recursive-minibuffers t)
+          (prompt (if (symbolp checker)
+                      (format "Describe syntax checker (default %s): " checker)
+                    "Describe syntax checker: "))
+          (reply (read-flycheck-checker prompt)))
+     (list (or reply checker))))
+  (if (or (null checker) (not (flycheck-valid-checker-p checker)))
+      (message "You didn't specify a Flycheck syntax checker.")
+    (help-setup-xref (list #'flycheck-describe-checker checker)
+                     (called-interactively-p 'interactive))
+    (save-excursion
+      (with-help-window (help-buffer)
+        (let ((filename (flycheck-checker-file checker))
+              (modes (flycheck-checker-modes checker))
+              (predicate (flycheck-checker-predicate checker))
+              (print-doc (get checker 'flycheck-print-doc)))
+          (princ (format "%s is a Flycheck syntax checker" checker))
+          (when filename
+            (princ (format " in `%s'" (file-name-nondirectory filename)))
+            (with-current-buffer standard-output
+              (save-excursion
+                (re-search-backward "`\\([^`']+\\)'" nil t)
+                (help-xref-button 1 'help-flycheck-checker-def checker filename))))
+          (princ ".\n\n")
+
+          (let ((modes-start (with-current-buffer standard-output (point-max))))
+            ;; Track the start of the modes documentation, to properly re-fill
+            ;; it later
+            (if (not modes)
+                ;; Syntax checkers without modes must have a predicate
+                (princ "  This syntax checker checks syntax if a custom predicate holds")
+              (princ "  This syntax checker checks syntax in the major mode(s) ")
+              (princ (string-join
+                      (mapcar (apply-partially #'format "`%s'") modes)
+                      ", "))
+              (when predicate
+                (princ ", and uses a custom predicate")))
+            (princ ".")
+            (with-current-buffer standard-output
+              (save-excursion
+                (fill-region-as-paragraph modes-start (point-max)))))
+          (princ "\n")
+          ;; Call the custom print-doc function of the checker, if present
+          (when print-doc
+            (funcall print-doc checker))
+          ;; Ultimately, print the docstring
+          (princ "\nDocumentation:\n")
+          (princ (flycheck-checker-documentation checker)))))))
+
+\f
+;;; Syntax checker verification
+(cl-defstruct (flycheck-verification-result
+               (:constructor flycheck-verification-result-new))
+  "Structure for storing a single verification result.
+
+Slots:
+
+`label'
+     A label for this result, as string
+
+`message'
+     A message for this result, as string
+
+`face'
+     The face to use for the `message'.
+
+     You can either use a face symbol, or a list of face symbols."
+  label message face)
+
+(defun flycheck-verify-generic-checker (checker)
+  "Verify a generic CHECKER in the current buffer.
+
+Return a list of `flycheck-verification-result' objects."
+  (let (results
+        (predicate (flycheck-checker-predicate checker))
+        (verify (get checker 'flycheck-verify)))
+    (when predicate
+      (let ((result (funcall predicate)))
+        (push (flycheck-verification-result-new
+               :label "predicate"
+               :message (prin1-to-string (not (null result)))
+               :face (if result 'success '(bold warning)))
+              results)))
+    (append (nreverse results)
+            (and verify (funcall verify checker)))))
+
+(define-button-type 'help-flycheck-checker-doc
+  :supertype 'help-xref
+  'help-function #'flycheck-describe-checker
+  'help-echo "mouse-2, RET: describe Flycheck checker")
+
+(defun flycheck-verify-setup ()
+  "Check whether Flycheck can be used in this buffer.
+
+Display a new buffer listing all syntax checkers that could be
+applicable in the current buffer.  For each syntax checkers,
+possible problems are shown."
+  (interactive)
+  (when (and (buffer-file-name) (buffer-modified-p))
+    ;; Save the buffer
+    (save-buffer))
+
+  (let ((buffer (current-buffer))
+        (checkers (flycheck-possibly-suitable-checkers)))
+
+    ;; Now print all applicable checkers
+    (with-help-window (get-buffer-create " *Flycheck checkers*")
+      (with-current-buffer standard-output
+        (princ "Syntax checkers for buffer ")
+        (insert (propertize (buffer-name buffer) 'face 'bold))
+        (princ " in ")
+        (let ((mode (buffer-local-value 'major-mode buffer)))
+          (insert-button (symbol-name mode)
+                         'type 'help-function
+                         'help-args (list mode)))
+        (princ ":\n\n")
+        (unless checkers
+          (insert (propertize "There are no syntax checkers for this buffer!\n\n"
+                              'face '(bold error))))
+        (dolist (checker checkers)
+          (princ "  ")
+          (insert-button (symbol-name checker)
+                         'type 'help-flycheck-checker-doc
+                         'help-args (list checker))
+          (princ "\n")
+          (let* ((results (with-current-buffer buffer
+                            (flycheck-verify-generic-checker checker)))
+                 (label-length
+                  (-max (mapcar
+                         (lambda (res)
+                           (length (flycheck-verification-result-label res)))
+                         results)))
+                 (message-column (+ 8 label-length)))
+            (dolist (result results)
+              (princ "    - ")
+              (princ (flycheck-verification-result-label result))
+              (princ ": ")
+              (princ (make-string (- message-column (current-column)) ?\ ))
+              (let ((message (flycheck-verification-result-message result))
+                    (face (flycheck-verification-result-face result)))
+                (insert (propertize message 'face face)))
+              (princ "\n")))
+          (princ "\n"))
+        (princ "Flycheck Mode is ")
+        (let ((enabled (buffer-local-value 'flycheck-mode buffer)))
+          (insert (propertize (if enabled "enabled" "disabled")
+                              'face (if enabled 'success '(warning bold)))))
+        (princ ".\n")
+
+        (let ((unregistered-checkers (-difference (flycheck-defined-checkers)
+                                                  flycheck-checkers)))
+          (when unregistered-checkers
+            (insert (propertize "\nThe following syntax checkers are not registered:\n\n"
+                                'face '(bold warning)))
+            (dolist (checker unregistered-checkers)
+              (princ "  - ")
+              (princ checker)
+              (princ "\n"))
+            (princ "\nTry adding these syntax checkers to `flycheck-checkers'.")))))))
+
+\f
+;;; Predicates for generic syntax checkers
+(defun flycheck-buffer-saved-p (&optional buffer)
+  "Determine whether BUFFER is saved to a file.
+
+BUFFER is the buffer to check.  If omitted or nil, use the
+current buffer as BUFFER.
+
+Return non-nil if the BUFFER is backed by a file, and not
+modified, or nil otherwise."
+  (and (buffer-file-name buffer) (not (buffer-modified-p buffer))))
+
+\f
+;;; Extending generic checkers
+(defun flycheck-add-next-checker (checker next &optional append)
+  "Add a NEXT checker after CHECKER.
+
+CHECKER is a syntax checker symbol, to which to add NEXT checker.
+
+NEXT is a cons cell `(LEVEL . NEXT-CHECKER)'.  NEXT-CHECKER is a
+symbol denoting the syntax checker to run after CHECKER.  LEVEL
+is an error level.  NEXT-CHECKER will only be used if there is no
+current error whose level is more severe than LEVEL.  LEVEL may
+also be t, in which case NEXT-CHECKER is used regardless of the
+current errors.
+
+NEXT can also be a syntax checker symbol only, which is
+equivalent to `(t . NEXT)'.
+
+NEXT-CHECKER is prepended before other next checkers, unless
+APPEND is non-nil."
+  (unless (flycheck-valid-checker-p checker)
+    (error "%s is not a valid syntax checker" checker))
+  (flycheck-validate-next-checker next 'strict)
+  (if append
+      (put checker 'flycheck-next-checkers
+           (append (get checker 'flycheck-next-checkers) (list next)))
+    (push next (get checker 'flycheck-next-checkers))))
+
+(defun flycheck-add-mode (checker mode)
+  "Add a new major MODE to CHECKER.
+
+CHECKER and MODE are symbols denoting a syntax checker and a
+major mode respectively.
+
+Add MODE to the `:modes' property of CHECKER, so that CHECKER
+will be used in buffers with MODE."
+  (unless (flycheck-valid-checker-p checker)
+    (error "%s is not a valid syntax checker" checker))
+  (unless (symbolp mode)
+    (error "%s is not a symbol" mode))
+  (push mode (get checker 'flycheck-modes)))
+
+\f
+;;; Generic syntax checks
+(cl-defstruct (flycheck-syntax-check
+               (:constructor flycheck-syntax-check-new))
+  "Structure for storing syntax check state.
+
+Slots:
+
+`buffer'
+     The buffer being checked
+
+`checker'
+     The syntax checker being used
+
+`context'
+     The context object."
+  buffer checker context)
+
+(defun flycheck-syntax-check-start (syntax-check callback)
+  "Start a SYNTAX-CHECK with CALLBACK."
+  (let ((checker (flycheck-syntax-check-checker syntax-check)))
+    (setf (flycheck-syntax-check-context syntax-check)
+          (funcall (get checker 'flycheck-start) checker callback))))
+
+(defun flycheck-syntax-check-interrupt (syntax-check)
+  "Interrupt a SYNTAX-CHECK."
+  (let* ((checker (flycheck-syntax-check-checker syntax-check))
+         (interrupt-fn (get checker 'flycheck-interrupt))
+         (context (flycheck-syntax-check-context syntax-check)))
+    (when interrupt-fn
+      (funcall interrupt-fn checker context))))
+
+\f
+;;; Syntax checking mode
+
+(defvar flycheck-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map flycheck-keymap-prefix flycheck-command-map)
+    ;; We place the menu under a custom menu key.  Since this menu key is not
+    ;; present in the menu of the global map, no top-level menu entry is added
+    ;; to the global menu bar.  However, it still appears on the mode line
+    ;; lighter.
+    (define-key map [menu-bar flycheck] flycheck-mode-menu-map)
+    map)
+  "Keymap of `flycheck-mode'.")
+
+(defvar-local flycheck-old-next-error-function nil
+  "Remember the old `next-error-function'.")
+
+(defconst flycheck-hooks-alist
+  '(
+    ;; Handle events that may start automatic syntax checks
+    (after-save-hook                  . flycheck-handle-save)
+    (after-change-functions           . flycheck-handle-change)
+    ;; Handle events that may triggered pending deferred checks
+    (window-configuration-change-hook . flycheck-perform-deferred-syntax-check)
+    (post-command-hook                . flycheck-perform-deferred-syntax-check)
+    ;; Teardown Flycheck whenever the buffer state is about to get lost, to
+    ;; clean up temporary files and directories.
+    (kill-buffer-hook                 . flycheck-teardown)
+    (change-major-mode-hook           . flycheck-teardown)
+    (before-revert-hook               . flycheck-teardown)
+    ;; Update the error list if necessary
+    (post-command-hook                . flycheck-error-list-update-source)
+    (post-command-hook                . flycheck-error-list-highlight-errors)
+    ;; Show or hide error popups after commands
+    (post-command-hook                . flycheck-display-error-at-point-soon)
+    (post-command-hook                . flycheck-hide-error-buffer)
+    ;; Immediately show error popups when navigating to an error
+    (next-error-hook                  . flycheck-display-error-at-point))
+  "Hooks which Flycheck needs to hook in.
+
+The `car' of each pair is a hook variable, the `cdr' a function
+to be added or removed from the hook variable if Flycheck mode is
+enabled and disabled respectively.")
+
+;;;###autoload
+(define-minor-mode flycheck-mode
+  "Minor mode for on-the-fly syntax checking.
+
+When called interactively, toggle `flycheck-mode'.  With prefix
+ARG, enable `flycheck-mode' if ARG is positive, otherwise disable
+it.
+
+When called from Lisp, enable `flycheck-mode' if ARG is omitted,
+nil or positive.  If ARG is `toggle', toggle `flycheck-mode'.
+Otherwise behave as if called interactively.
+
+In `flycheck-mode' the buffer is automatically syntax-checked
+using the first suitable syntax checker from `flycheck-checkers'.
+Use `flycheck-select-checker' to select a checker for the current
+buffer manually.
+
+\\{flycheck-mode-map}"
+  :init-value nil
+  :keymap flycheck-mode-map
+  :lighter flycheck-mode-line
+  :group 'flycheck
+  :require 'flycheck
+  :after-hook (flycheck-buffer-automatically 'mode-enabled 'force-deferred)
+  (cond
+   (flycheck-mode
+    (flycheck-clear)
+
+    (pcase-dolist (`(,hook . ,fn) flycheck-hooks-alist)
+      (add-hook hook fn nil 'local))
+
+    (setq flycheck-old-next-error-function (if flycheck-standard-error-navigation
+                                               next-error-function
+                                             :unset))
+    (when flycheck-standard-error-navigation
+      (setq next-error-function #'flycheck-next-error-function)))
+   (t
+    (unless (eq flycheck-old-next-error-function :unset)
+      (setq next-error-function flycheck-old-next-error-function))
+
+    (pcase-dolist (`(,hook . ,fn) flycheck-hooks-alist)
+      (remove-hook hook fn 'local))
+
+    (flycheck-teardown))))
+
+\f
+;;; Syntax checker selection for the current buffer
+(defvar-local flycheck-last-checker nil
+  "The last checker used for the current buffer.")
+
+(defun flycheck-clear-checker ()
+  "Clear configured and remembered checkers in the current buffer."
+  (setq flycheck-last-checker nil))
+
+(defun flycheck-try-last-checker-for-buffer ()
+  "Try the last checker for the current buffer.
+
+Return the checker if it may be used, or nil otherwise."
+  ;; We should not use the last checker if it was removed from the list of
+  ;; allowed checkers in the meantime
+  (when (and (flycheck-registered-checker-p flycheck-last-checker)
+             (flycheck-may-use-checker flycheck-last-checker))
+    flycheck-last-checker))
+
+(defun flycheck-get-new-checker-for-buffer ()
+  "Find a new checker for the current buffer.
+
+Return the checker if there is any, or nil otherwise."
+  (let ((checkers flycheck-checkers))
+    (while (and checkers (not (flycheck-may-use-checker (car checkers))))
+      (setq checkers (cdr checkers)))
+    (car checkers)))
+
+(defun flycheck-get-checker-for-buffer ()
+  "Find the checker for the current buffer.
+
+Return checker if there is a checker for the current buffer, or
+nil otherwise."
+  (if flycheck-checker
+      (if (flycheck-may-use-checker flycheck-checker)
+          flycheck-checker
+        (user-error "Selected syntax checker %s cannot be used"
+                    flycheck-checker))
+    (or (flycheck-try-last-checker-for-buffer)
+        (flycheck-get-new-checker-for-buffer))))
+
+(defun flycheck-get-next-checker-for-buffer (checker)
+  "Get the checker to run after CHECKER for the current buffer."
+  (let ((next-checkers (flycheck-checker-next-checkers checker)))
+    (while (and next-checkers
+                (not (flycheck-may-use-next-checker (car next-checkers))))
+      (setq next-checkers (cdr next-checkers)))
+    (when next-checkers
+      (if (symbolp (car next-checkers))
+          (car next-checkers)
+        (cdar next-checkers)))))
+
+(defun flycheck-select-checker (checker)
+  "Select CHECKER for the current buffer.
+
+CHECKER is a syntax checker symbol (see `flycheck-checkers') or
+nil.  In the former case, use CHECKER for the current buffer,
+otherwise deselect the current syntax checker (if any) and use
+automatic checker selection via `flycheck-checkers'.
+
+If called interactively prompt for CHECKER.  With prefix arg
+deselect the current syntax checker and enable automatic
+selection again.
+
+Set `flycheck-checker' to CHECKER and automatically start a new
+syntax check if the syntax checker changed.
+
+CHECKER will be used, even if it is not contained in
+`flycheck-checkers', or if it is disabled via
+`flycheck-disabled-checkers'."
+  (interactive
+   (if current-prefix-arg
+       (list nil)
+     (list (read-flycheck-checker "Select checker: " flycheck-last-checker))))
+  (when (not (eq checker flycheck-checker))
+    (unless (or (not checker) (flycheck-may-use-checker checker))
+      (user-error "Can't use syntax checker %S in this buffer" checker))
+    (setq flycheck-checker checker
+          ;; Clear cached checker to make sure that automatic selection restarts
+          ;; if necessary
+          flycheck-last-checker nil)
+    (when flycheck-mode
+      (flycheck-buffer))))
+
+(defun flycheck-disable-checker (checker &optional enable)
+  "Interactively disable CHECKER for the current buffer.
+
+Interactively, prompt for a syntax checker to disable, and add
+the syntax checker to the buffer-local value of
+`flycheck-disabled-checkers'.  With prefix arg, prompt for a
+disabled syntax checker and re-enable it by removing it from the
+buffer-local value of `flycheck-disabled-checkers'."
+  (interactive
+   (let* ((enable current-prefix-arg)
+          (candidates (if enable flycheck-disabled-checkers flycheck-checkers))
+          (prompt (if enable "Enable syntax checker: "
+                    "Disable syntax checker: ")))
+     (when (and enable (not candidates))
+       (user-error "No syntax checkers disabled in this buffer"))
+     (list (read-flycheck-checker prompt nil nil candidates) enable)))
+  (unless checker
+    (user-error "No syntax checker given"))
+  (if enable
+      ;; We must use `remq' instead of `delq', because we must _not_ modify the
+      ;; list.  Otherwise we could potentially modify the global default value,
+      ;; in case the list is the global default.
+      (setq flycheck-disabled-checkers (remq checker flycheck-disabled-checkers))
+    (unless (memq checker flycheck-disabled-checkers)
+      (push checker flycheck-disabled-checkers))))
+(put 'flycheck-disable-checker 'interactive-only
+     "Directly set `flycheck-disabled-checkers' instead")
+
+\f
+;;; Syntax checks for the current buffer
+(defvar-local flycheck-current-syntax-check nil
+  "The current syntax check in the this buffer.")
+(put 'flycheck-current-syntax-check 'permanent-local t)
+
+(defun flycheck-start-current-syntax-check (checker)
+  "Start a syntax check in the current buffer with CHECKER.
+
+Set `flycheck-current-syntax-check' accordingly."
+  ;; Allocate the current syntax check *before* starting it.  This allows for
+  ;; synchronous checks, which call the status callback immediately in there
+  ;; start function.
+  (let* ((check (flycheck-syntax-check-new :buffer (current-buffer)
+                                           :checker checker
+                                           :context nil))
+         (callback (flycheck-buffer-status-callback check)))
+    (setq flycheck-current-syntax-check check)
+    (flycheck-report-status 'running)
+    (flycheck-syntax-check-start check callback)))
+
+(defun flycheck-running-p ()
+  "Determine whether a syntax check is running in the current buffer."
+  (not (null flycheck-current-syntax-check)))
+
+(defun flycheck-stop ()
+  "Stop any ongoing syntax check in the current buffer."
+  (when (flycheck-running-p)
+    (flycheck-syntax-check-interrupt flycheck-current-syntax-check)
+    ;; Remove the current syntax check, to reset Flycheck into a non-running
+    ;; state, and to make `flycheck-report-buffer-checker-status' ignore any
+    ;; status reports from the current syntax check.
+    (setq flycheck-current-syntax-check nil)
+    (flycheck-report-status 'interrupted)))
+
+(defun flycheck-buffer-status-callback (syntax-check)
+  "Create a status callback for SYNTAX-CHECK in the current buffer."
+  (lambda (&rest args)
+    (apply #'flycheck-report-buffer-checker-status
+           syntax-check args)))
+
+(defun flycheck-buffer ()
+  "Check syntax in the current buffer.
+
+The syntax checker used for the syntax check is cached in
+`flycheck-last-checker' and re-used for the next check, if
+possible."
+  (interactive)
+  (flycheck-clean-deferred-check)
+  (if flycheck-mode
+      (unless (flycheck-running-p)
+        ;; Clear error list and mark all overlays for deletion.  We do not
+        ;; delete all overlays immediately to avoid excessive re-displays and
+        ;; flickering, if the same errors gets highlighted again after the check
+        ;; completed.
+        (run-hooks 'flycheck-before-syntax-check-hook)
+        (flycheck-clear-errors)
+        (flycheck-mark-all-overlays-for-deletion)
+        (condition-case err
+            (let* ((checker (flycheck-get-checker-for-buffer)))
+              (if checker
+                  (progn
+                    ;; Remember the last syntax checker to speed up checker
+                    ;; selection
+                    (setq flycheck-last-checker checker)
+                    (flycheck-start-current-syntax-check checker))
+                (flycheck-clear)
+                (flycheck-report-status 'no-checker)))
+          (error
+           (flycheck-report-failed-syntax-check)
+           (signal (car err) (cdr err)))))
+    (user-error "Flycheck mode disabled")))
+
+(defun flycheck-report-buffer-checker-status
+    (syntax-check status &optional data)
+  "In BUFFER, report a SYNTAX-CHECK STATUS with DATA.
+
+SYNTAX-CHECK is the `flycheck-syntax-check' which reported
+STATUS.  STATUS denotes the status of CHECKER, with an optional
+DATA.  STATUS may be one of the following symbols:
+
+`errored'
+     The syntax checker has errored.  DATA is an optional error
+     message.
+
+     This report finishes the current syntax check.
+
+`interrupted'
+     The syntax checker was interrupted.  DATA is ignored.
+
+     This report finishes the current syntax check.
+
+`finished'
+     The syntax checker has finished with a proper error report
+     for the current buffer.  DATA is the (potentially empty)
+     list of `flycheck-error' objects reported by the syntax
+     check.
+
+     This report finishes the current syntax check.
+
+`suspicious'
+     The syntax checker encountered a suspicious state, which the
+     user needs to be informed about.  DATA is an optional
+     message.
+
+A syntax checker _must_ report a status at least once with any
+symbol that finishes the current syntax checker.  Otherwise
+Flycheck gets stuck with the current syntax check.
+
+If CHECKER is not the currently used syntax checker in
+`flycheck-current-syntax-check', the status report is largely
+ignored.  Notably, any errors reported by the checker are
+discarded."
+  (let ((buffer (flycheck-syntax-check-buffer syntax-check)))
+    ;; Ignore the status report if the buffer is gone, or if this syntax check
+    ;; isn't the current one in buffer (which can happen if this is an old
+    ;; report of an interrupted syntax check, and a new syntax check was started
+    ;; since this check was interrupted)
+    (when (and (buffer-live-p buffer)
+               (eq syntax-check
+                   (buffer-local-value 'flycheck-current-syntax-check buffer)))
+      (with-current-buffer buffer
+        (let ((checker (flycheck-syntax-check-checker syntax-check)))
+          (pcase status
+            ((or `errored `interrupted)
+             (flycheck-report-failed-syntax-check status)
+             (when (eq status 'errored)
+               ;; In case of error, show the error message
+               (message "Error from syntax checker %s: %s"
+                        checker (or data "UNKNOWN!"))))
+            (`suspicious
+             (when flycheck-mode
+               (message "Suspicious state from syntax checker %s: %s"
+                        checker (or data "UNKNOWN!")))
+             (flycheck-report-status 'suspicious))
+            (`finished
+             (when flycheck-mode
+               ;; Only report errors from the checker if Flycheck Mode is
+               ;; still enabled.
+               (flycheck-finish-current-syntax-check data)))
+            (_
+             (error "Unknown status %s from syntax checker %s"
+                    status checker))))))))
+
+(defun flycheck-finish-current-syntax-check (errors)
+  "Finish the current syntax-check in the current buffer with ERRORS.
+
+ERRORS is a list of `flycheck-error' objects reported by the
+current syntax check in `flycheck-current-syntax-check'.
+
+Report all ERRORS and potentially start any next syntax checkers.
+
+If the current syntax checker reported excessive errors, it is disabled
+via `flycheck-disable-excessive-checker' for subsequent syntax
+checks."
+  (let* ((syntax-check flycheck-current-syntax-check)
+         (checker (flycheck-syntax-check-checker syntax-check))
+         (errors (flycheck-relevant-errors
+                  (flycheck-filter-errors
+                   (flycheck-assert-error-list-p errors) checker))))
+    (unless (flycheck-disable-excessive-checker checker errors)
+      (flycheck-report-current-errors errors))
+    (let ((next-checker (flycheck-get-next-checker-for-buffer checker)))
+      (if next-checker
+          (flycheck-start-current-syntax-check next-checker)
+        (setq flycheck-current-syntax-check nil)
+        (flycheck-report-status 'finished)
+        ;; Delete overlays only after the very last checker has run, to avoid
+        ;; flickering on intermediate re-displays
+        (flycheck-delete-marked-overlays)
+        (flycheck-error-list-refresh)
+        (run-hooks 'flycheck-after-syntax-check-hook)
+        (when (eq (current-buffer) (window-buffer))
+          (flycheck-display-error-at-point))
+        ;; Immediately try to run any pending deferred syntax check, which
+        ;; were triggered by intermediate automatic check event, to make sure
+        ;; that we quickly refine outdated error information
+        (flycheck-perform-deferred-syntax-check)))))
+
+(defun flycheck-disable-excessive-checker (checker errors)
+  "Disable CHECKER if it reported excessive ERRORS.
+
+If ERRORS has more items than `flycheck-checker-error-threshold',
+add CHECKER to `flycheck-disabled-checkers', and show a warning.
+
+Return t when CHECKER was disabled, or nil otherwise."
+  (when (and flycheck-checker-error-threshold
+             (> (length errors) flycheck-checker-error-threshold))
+    ;; Disable CHECKER for this buffer (`flycheck-disabled-checkers' is a local
+    ;; variable).
+    (lwarn '(flycheck syntax-checker) :warning
+           "Syntax checker %s reported too many errors (%s) and is disabled."
+           checker (length errors))
+    (push checker flycheck-disabled-checkers)
+    t))
+
+(defun flycheck-clear (&optional shall-interrupt)
+  "Clear all errors in the current buffer.
+
+With prefix arg or SHALL-INTERRUPT non-nil, also interrupt the
+current syntax check."
+  (interactive "P")
+  (when shall-interrupt
+    (flycheck-stop))
+  (flycheck-delete-all-overlays)
+  (flycheck-clear-errors)
+  (flycheck-error-list-refresh)
+  (flycheck-hide-error-buffer))
+
+(defun flycheck-teardown ()
+  "Teardown Flycheck in the current buffer..
+
+Completely clear the whole Flycheck state.  Remove overlays, kill
+running checks, and empty all variables used by Flycheck."
+  (flycheck-safe-delete-temporaries)
+  (flycheck-stop)
+  (flycheck-clean-deferred-check)
+  (flycheck-clear)
+  (flycheck-cancel-error-display-error-at-point-timer)
+  (flycheck-clear-checker))
+
+\f
+;;; Automatic syntax checking in a buffer
+(defun flycheck-may-check-automatically (&optional condition)
+  "Determine whether the buffer may be checked under CONDITION.
+
+Read-only buffers may never be checked automatically.
+
+If CONDITION is non-nil, determine whether syntax may checked
+automatically according to
+`flycheck-check-syntax-automatically'."
+  (and (not (or buffer-read-only (flycheck-ephemeral-buffer-p)))
+       (or (not condition)
+           (memq condition flycheck-check-syntax-automatically))))
+
+(defun flycheck-buffer-automatically (&optional condition force-deferred)
+  "Automatically check syntax at CONDITION.
+
+Syntax is not checked if `flycheck-may-check-automatically'
+returns nil for CONDITION.
+
+The syntax check is deferred if FORCE-DEFERRED is non-nil, or if
+`flycheck-must-defer-check' returns t."
+  (when (and flycheck-mode (flycheck-may-check-automatically condition))
+    (if (or force-deferred (flycheck-must-defer-check))
+        (flycheck-buffer-deferred)
+      (with-demoted-errors "Error while checking syntax automatically: %S"
+        (flycheck-buffer)))))
+
+(defvar-local flycheck-idle-change-timer nil
+  "Timer to mark the idle time since the last change.")
+
+(defun flycheck-clear-idle-change-timer ()
+  "Clear the idle change timer."
+  (when flycheck-idle-change-timer
+    (cancel-timer flycheck-idle-change-timer)
+    (setq flycheck-idle-change-timer nil)))
+
+(defun flycheck-handle-change (beg end _len)
+  "Handle a buffer change between BEG and END.
+
+BEG and END mark the beginning and end of the change text.  _LEN
+is ignored.
+
+Start a syntax check if a new line has been inserted into the
+buffer."
+  ;; Save and restore the match data, as recommended in (elisp)Change Hooks
+  (save-match-data
+    (when flycheck-mode
+      ;; The buffer was changed, thus clear the idle timer
+      (flycheck-clear-idle-change-timer)
+      (if (string-match-p (rx "\n") (buffer-substring beg end))
+          (flycheck-buffer-automatically 'new-line 'force-deferred)
+        (setq flycheck-idle-change-timer
+              (run-at-time flycheck-idle-change-delay nil
+                           #'flycheck-handle-idle-change))))))
+
+(defun flycheck-handle-idle-change ()
+  "Handle an expired idle time since the last change."
+  (flycheck-clear-idle-change-timer)
+  (flycheck-buffer-automatically 'idle-change))
+
+(defun flycheck-handle-save ()
+  "Handle a save of the buffer."
+  (flycheck-buffer-automatically 'save))
+
+\f
+;;; Deferred syntax checking
+(defvar-local flycheck-deferred-syntax-check nil
+  "If non-nil, a deferred syntax check is pending.")
+
+(defun flycheck-must-defer-check ()
+  "Determine whether the syntax check has to be deferred.
+
+A check has to be deferred if the buffer is not visible, or if the buffer is
+currently being reverted.
+
+Return t if the check is to be deferred, or nil otherwise."
+  (or (not (get-buffer-window))
+      ;; We defer the syntax check if Flycheck is already running, to
+      ;; immediately start a new syntax check after the current one finished,
+      ;; because the result of the current check will most likely be outdated by
+      ;; the time it is finished.
+      (flycheck-running-p)
+      ;; We must defer checks while a buffer is being reverted, to avoid race
+      ;; conditions while the buffer contents are being restored.
+      revert-buffer-in-progress-p))
+
+(defun flycheck-deferred-check-p ()
+  "Determine whether the current buffer has a deferred check.
+
+Return t if so, or nil otherwise."
+  flycheck-deferred-syntax-check)
+
+(defun flycheck-buffer-deferred ()
+  "Defer syntax check for the current buffer."
+  (setq flycheck-deferred-syntax-check t))
+
+(defun flycheck-clean-deferred-check ()
+  "Clean an deferred syntax checking state."
+  (setq flycheck-deferred-syntax-check nil))
+
+(defun flycheck-perform-deferred-syntax-check ()
+  "Perform any deferred syntax checks."
+  (when (flycheck-deferred-check-p)
+    (flycheck-clean-deferred-check)
+    (flycheck-buffer-automatically)))
+
+\f
+;;; Syntax checking in all buffers
+(defun flycheck-may-enable-mode ()
+  "Determine whether Flycheck mode may be enabled.
+
+Flycheck mode is not enabled for
+
+- the minibuffer,
+- major modes whose `mode-class' property is `special',
+- ephemeral buffers (see `flycheck-ephemeral-buffer-p'),
+- encrypted buffers (see `flycheck-encrypted-buffer-p'),
+- remote files (see `file-remote-p'),
+- and major modes excluded by `flycheck-global-modes'.
+
+Return non-nil if Flycheck mode may be enabled, and nil
+otherwise."
+  (and (pcase flycheck-global-modes
+         ;; Whether `major-mode' is disallowed by `flycheck-global-modes'
+         (`t t)
+         (`(not . ,modes) (not (memq major-mode modes)))
+         (modes (memq major-mode modes)))
+       (not (or (minibufferp)
+                (eq (get major-mode 'mode-class) 'special)
+                (flycheck-ephemeral-buffer-p)
+                (flycheck-encrypted-buffer-p)
+                (and (buffer-file-name)
+                     (file-remote-p (buffer-file-name) 'method))))))
+
+(defun flycheck-mode-on-safe ()
+  "Enable `flycheck-mode' if it is safe to do so.
+
+`flycheck-mode' is only enabled if `flycheck-may-enable-mode'
+returns t."
+  (when (flycheck-may-enable-mode)
+    (flycheck-mode)))
+
+;;;###autoload
+(define-globalized-minor-mode global-flycheck-mode flycheck-mode
+  flycheck-mode-on-safe
+  :init-value nil
+  :group 'flycheck
+  :require 'flycheck)
+
+(defun flycheck-global-teardown ()
+  "Teardown Flycheck in all buffers.
+
+Completely clear the whole Flycheck state in all buffers, stop
+all running checks, remove all temporary files, and empty all
+variables of Flycheck."
+  (dolist (buffer (buffer-list))
+    (with-current-buffer buffer
+      (when flycheck-mode
+        (flycheck-teardown)))))
+
+;; Clean up the entire state of Flycheck when Emacs is killed, to get rid of any
+;; pending temporary files.
+(add-hook 'kill-emacs-hook #'flycheck-global-teardown)
+
+\f
+;;; Errors from syntax checks
+(cl-defstruct (flycheck-error
+               (:constructor flycheck-error-new)
+               (:constructor flycheck-error-new-at (line column
+                                                         &optional level message
+                                                         &key checker id
+                                                         (filename (buffer-file-name))
+                                                         (buffer (current-buffer)))))
+  "Structure representing an error reported by a syntax checker.
+Slots:
+
+`buffer'
+     The buffer the reported was reported for, as buffer object.
+
+`checker'
+     The syntax checker which reported this error, as symbol.
+
+`filename'
+     The file name the error refers to, as string.
+
+`line'
+     The line number the error refers to, as number.
+
+`column' (optional)
+     The column number the error refers to, as number.
+
+     For compatibility with external tools and unlike Emacs
+     itself (e.g. in Compile Mode) Flycheck uses _1-based_
+     columns: The first character on a line is column 1.
+
+     Occasionally some tools try to proactively adapt to Emacs
+     and emit 0-based columns automatically.  In these cases, the
+     columns must be adjusted for Flycheck, see
+     `flycheck-increment-error-columns'.
+
+`level'
+     The error level, as either `warning' or `error'.
+
+`id' (optional)
+     An ID identifying the kind of error."
+  buffer checker filename line column message level id)
+
+(defmacro flycheck-error-with-buffer (err &rest forms)
+  "Switch to the buffer of ERR and evaluate FORMS.
+
+If the buffer of ERR is not live, FORMS are not evaluated."
+  (declare (indent 1) (debug t))
+  `(when (buffer-live-p (flycheck-error-buffer ,err))
+     (with-current-buffer (flycheck-error-buffer ,err)
+       ,@forms)))
+
+(defun flycheck-error-line-region (err)
+  "Get the line region of ERR.
+
+ERR is a Flycheck error whose region to get.
+
+Return a cons cell `(BEG . END)' where BEG is the first
+non-whitespace character on the line ERR refers to, and END the
+end of the line."
+  (flycheck-error-with-buffer err
+    (save-restriction
+      (save-excursion
+        (widen)
+        (goto-char (point-min))
+        (forward-line (- (flycheck-error-line err) 1))
+        ;; We are at the beginning of the line now, so move to the beginning of
+        ;; its indentation, similar to `back-to-indentation'
+        (let ((end (line-end-position)))
+          (skip-syntax-forward " " end)
+          (backward-prefix-chars)
+          ;; If the current line is empty, include the previous line break
+          ;; character(s) to have any region at all.  When called with 0,
+          ;; `line-end-position' gives us the end of the previous line
+          (cons (if (eolp) (line-end-position 0) (point)) end))))))
+
+(defun flycheck-error-column-region (err)
+  "Get the error column region of ERR.
+
+ERR is a Flycheck error whose region to get.
+
+Return a cons cell `(BEG . END)' where BEG is the character
+before the error column, and END the actual error column, or nil
+if ERR has no column."
+  (flycheck-error-with-buffer err
+    (save-restriction
+      (save-excursion
+        (-when-let (column (flycheck-error-column err))
+          (widen)
+          (goto-char (point-min))
+          (forward-line (- (flycheck-error-line err) 1))
+          (cond
+           ((eobp)                    ; Line beyond EOF
+            ;; If we are at the end of the file (i.e. the line was beyond the
+            ;; end of the file), use the very last column in the file.
+            (cons (- (point-max) 1) (point-max)))
+           ((eolp)                    ; Empty line
+            ;; If the target line is empty, there's no column to highlight on
+            ;; this line, so return the last column of the previous line.
+            (cons (line-end-position 0) (point)))
+           (t
+            ;; The end is either the column offset of the line, or the end of
+            ;; the line, if the column offset points beyond the end of the
+            ;; line.
+            (let ((end (min (+ (point) column)
+                            (+ (line-end-position) 1))))
+              (cons (- end 1) end)))))))))
+
+(defun flycheck-error-thing-region (thing err)
+  "Get the region of THING at the column of ERR.
+
+ERR is a Flycheck error whose region to get.  THING is a
+understood by `thing-at-point'.
+
+Return a cons cell `(BEG . END)' where BEG is the beginning of
+the THING at the error column, and END the end of the symbol.  If
+ERR has no error column, or if there is no THING at this column,
+return nil."
+  (-when-let (column (car (flycheck-error-column-region err)))
+    (flycheck-error-with-buffer err
+      (save-excursion
+        (save-restriction
+          (widen)
+          (goto-char column)
+          (bounds-of-thing-at-point thing))))))
+
+(defun flycheck-error-region-for-mode (err mode)
+  "Get the region of ERR for the highlighting MODE.
+
+ERR is a Flycheck error.  MODE may be one of the following symbols:
+
+`columns'
+     Get the column region of ERR, or the line region if ERR
+     has no column.
+
+`symbols'
+     Get the symbol region of ERR, or the result of `columns', if
+     there is no sexp at the error column.
+
+`sexps'
+     Get the sexp region of ERR, or the result of `columns', if
+     there is no sexp at the error column.
+
+`lines'
+     Return the line region.
+
+Otherwise signal an error."
+  (pcase mode
+    (`columns (or (flycheck-error-column-region err)
+                  (flycheck-error-line-region err)))
+    (`symbols (or (flycheck-error-thing-region 'symbol err)
+                  (flycheck-error-region-for-mode err 'columns)))
+    (`sexps (or (flycheck-error-thing-region 'sexp err)
+                (flycheck-error-region-for-mode err 'columns)))
+    (`lines (flycheck-error-line-region err))
+    (_ (error "Invalid mode %S" mode))))
+
+(defun flycheck-error-pos (err)
+  "Get the buffer position of ERR.
+
+ERR is a Flycheck error whose position to get.
+
+The error position is the error column, or the first
+non-whitespace character of the error line, if ERR has no error column."
+  (car (or (flycheck-error-column-region err)
+           (flycheck-error-line-region err))))
+
+(defun flycheck-error-format-message-and-id (err)
+  "Format the message and id of ERR as human-readable string."
+  (let ((id (flycheck-error-id err))
+        (message (flycheck-error-message err)))
+    (if id (format "%s [%s]" message id) message)))
+
+(defun flycheck-error-format (err)
+  "Format ERR as human-readable string.
+
+Return a string that represents the given ERR.  This string does
+_not_ include the file name."
+  (let* ((line (flycheck-error-line err))
+         (column (flycheck-error-column err))
+         (level (symbol-name (flycheck-error-level err)))
+         (checker (symbol-name (flycheck-error-checker err)))
+         (format `(,(number-to-string line) ":"
+                   ,@(when column (list (number-to-string column) ":"))
+                   ,level ": "
+                   ,(flycheck-error-format-message-and-id err)
+                   " (" ,checker ")")))
+    (apply #'concat format)))
+
+(defun flycheck-error-< (err1 err2)
+  "Determine whether ERR1 goes before ERR2 by location.
+
+Compare by line numbers and then by column numbers."
+  (let ((line1 (flycheck-error-line err1))
+        (line2 (flycheck-error-line err2)))
+    (if (= line1 line2)
+        (let ((col1 (flycheck-error-column err1))
+              (col2 (flycheck-error-column err2)))
+          (and col2
+               ;; Sort errors for the whole line first
+               (or (not col1) (< col1 col2))))
+      (< line1 line2))))
+
+(defun flycheck-error-level-< (err1 err2)
+  "Determine whether ERR1 goes before ERR2 by error level.
+
+Like `flycheck-error-<', but compares by error level severity
+first.  Levels of the same severity are compared by name."
+  (let* ((level1 (flycheck-error-level err1))
+         (level2 (flycheck-error-level err2))
+         (severity1 (flycheck-error-level-severity level1))
+         (severity2 (flycheck-error-level-severity level2)))
+    (cond
+     ((= severity1 severity2)
+      (if (string= level1 level2)
+          (flycheck-error-< err1 err2)
+        (string< level1 level2)))
+     (t (< severity1 severity2)))))
+
+(defun flycheck-assert-error-list-p (errors)
+  "Assert that all items in ERRORS are of `flycheck-error' type.
+
+Signal an error if any item in ERRORS is not a `flycheck-error'
+object, as by `flycheck-error-p'.  Otherwise return ERRORS
+again."
+  (unless (listp errors)
+    (signal 'wrong-type-argument (list 'listp errors)))
+  (dolist (err errors)
+    (unless (flycheck-error-p err)
+      (signal 'wrong-type-argument (list 'flycheck-error-p err))))
+  errors)
+
+\f
+;;; Errors in the current buffer
+(defvar-local flycheck-current-errors nil
+  "A list of all errors and warnings in the current buffer.")
+
+(defun flycheck-report-current-errors (errors)
+  "Report ERRORS in the current buffer.
+
+Add ERRORS to `flycheck-current-errors' and process each error
+with `flycheck-process-error-functions'."
+  (setq flycheck-current-errors (sort (append errors flycheck-current-errors)
+                                      #'flycheck-error-<))
+  (mapc (lambda (err)
+          (run-hook-with-args-until-success 'flycheck-process-error-functions
+                                            err))
+        errors))
+
+(defun flycheck-clear-errors ()
+  "Remove all error information from the current buffer."
+  (setq flycheck-current-errors nil)
+  (flycheck-report-status 'not-checked))
+
+(defun flycheck-relevant-error-p (err)
+  "Determine whether ERR is relevant for the current buffer.
+
+Return t if ERR may be shown for the current buffer, or nil
+otherwise."
+  (flycheck-error-with-buffer err
+    (let ((file-name (flycheck-error-filename err))
+          (message (flycheck-error-message err)))
+      (and
+       (or (not file-name) (flycheck-same-files-p file-name (buffer-file-name)))
+       message
+       (not (string-empty-p message))
+       (flycheck-error-line err)))))
+
+(defun flycheck-relevant-errors (errors)
+  "Filter the relevant errors from ERRORS.
+
+Return a list of all errors that are relevant for their
+corresponding buffer."
+  (-filter #'flycheck-relevant-error-p errors))
+
+\f
+;;; Status reporting for the current buffer
+(defvar-local flycheck-last-status-change 'not-checked
+  "The last status change in the current buffer.")
+
+(defun flycheck-report-failed-syntax-check (&optional status)
+  "Report a failed Flycheck syntax check with STATUS.
+
+STATUS is a status symbol for `flycheck-report-status',
+defaulting to `errored'.
+
+Clear Flycheck state, run `flycheck-syntax-check-failed-hook' and
+report an error STATUS."
+  (flycheck-clear)
+  (setq flycheck-current-syntax-check nil)
+  (run-hooks 'flycheck-syntax-check-failed-hook)
+  (flycheck-report-status (or status 'errored)))
+
+(defun flycheck-report-status (status)
+  "Report Flycheck STATUS.
+
+STATUS is one of the following symbols:
+
+`not-checked'
+     The current buffer was not checked.
+
+`no-checker'
+     Automatic syntax checker selection did not find a suitable
+     syntax checker.
+
+`running'
+     A syntax check is now running in the current buffer.
+
+`errored'
+     The current syntax check has errored.
+
+`finished'
+     The current syntax check was finished normally.
+
+`interrupted'
+     The current syntax check was interrupted.
+
+`suspicious'
+     The last syntax check had a suspicious result.
+
+Set `flycheck-last-status-change' and call
+`flycheck-status-changed-functions' with STATUS.  Afterwards
+refresh the mode line."
+  (setq flycheck-last-status-change status)
+  (run-hook-with-args 'flycheck-status-changed-functions status)
+  (force-mode-line-update))
+
+(defun flycheck-mode-line-status-text (&optional status)
+  "Get a text describing STATUS for use in the mode line.
+
+STATUS defaults to `flycheck-last-status-change' if omitted or
+nil."
+  (let ((text (pcase (or status flycheck-last-status-change)
+                (`not-checked "")
+                (`no-checker "-")
+                (`running "*")
+                (`errored "!")
+                (`finished
+                 (if flycheck-current-errors
+                     (let-alist (flycheck-count-errors flycheck-current-errors)
+                       (format ":%s/%s" (or .error 0) (or .warning 0)))
+                   ""))
+                (`interrupted "-")
+                (`suspicious "?"))))
+    (concat " FlyC" text)))
+
+\f
+;;; Error levels
+;;;###autoload
+(defun flycheck-define-error-level (level &rest properties)
+  "Define a new error LEVEL with PROPERTIES.
+
+The following PROPERTIES constitute an error level:
+
+`:severity SEVERITY'
+     A number denoting the severity of this level.  The higher
+     the number, the more severe is this level compared to other
+     levels.  Defaults to 0.
+
+     The severity is used by `flycheck-error-level-<' to
+     determine the ordering of errors according to their levels.
+
+`:overlay-category CATEGORY'
+     A symbol denoting the overlay category to use for error
+     highlight overlays for this level.  See Info
+     node `(elisp)Overlay Properties' for more information about
+     overlay categories.
+
+     A category for an error level overlay should at least define
+     the `face' property, for error highlighting.  Other useful
+     properties for error level categories are `priority' to
+     influence the stacking of multiple error level overlays, and
+     `help-echo' to define a default error messages for errors
+     without messages.
+
+`:fringe-bitmap BITMAP'
+     A fringe bitmap symbol denoting the bitmap to use for fringe
+     indicators for this level.  See Info node `(elisp)Fringe
+     Bitmaps' for more information about fringe bitmaps,
+     including a list of built-in fringe bitmaps.
+
+`:fringe-face FACE'
+     A face symbol denoting the face to use for fringe indicators
+     for this level.
+
+`:error-list-face FACE'
+     A face symbol denoting the face to use for messages of this
+     level in the error list.  See `flycheck-list-errors'."
+  (declare (indent 1))
+  (put level 'flycheck-error-level t)
+  (put level 'flycheck-error-severity
+       (or (plist-get properties :severity) 0))
+  (put level 'flycheck-overlay-category
+       (plist-get properties :overlay-category))
+  (put level 'flycheck-fringe-bitmap
+       (plist-get properties :fringe-bitmap))
+  (put level 'flycheck-fringe-face
+       (plist-get properties :fringe-face))
+  (put level 'flycheck-error-list-face
+       (plist-get properties :error-list-face)))
+
+(defun flycheck-error-level-p (level)
+  "Determine whether LEVEL is a Flycheck error level."
+  (get level 'flycheck-error-level))
+
+(defun flycheck-error-level-severity (level)
+  "Get the numeric severity of LEVEL."
+  (or (get level 'flycheck-error-severity) 0))
+
+(defun flycheck-error-level-overlay-category (level)
+  "Get the overlay category for LEVEL."
+  (get level 'flycheck-overlay-category))
+
+(defun flycheck-error-level-fringe-bitmap (level)
+  "Get the fringe bitmap for LEVEL."
+  (get level 'flycheck-fringe-bitmap))
+
+(defun flycheck-error-level-fringe-face (level)
+  "Get the fringe face for LEVEL."
+  (get level 'flycheck-fringe-face))
+
+(defun flycheck-error-level-error-list-face (level)
+  "Get the error list face for LEVEL."
+  (get level 'flycheck-error-list-face))
+
+(defun flycheck-error-level-make-fringe-icon (level side)
+  "Create the fringe icon for LEVEL at SIDE.
+
+Return a propertized string that shows a fringe bitmap according
+to LEVEL and the given fringe SIDE.
+
+LEVEL is a Flycheck error level defined with
+`flycheck-define-error-level', and SIDE is either `left-fringe'
+or `right-fringe'.
+
+Return a propertized string representing the fringe icon,
+intended for use as `before-string' of an overlay to actually
+show the icon."
+  (unless (memq side '(left-fringe right-fringe))
+    (error "Invalid fringe side: %S" side))
+  (propertize "!" 'display
+              (list side
+                    (flycheck-error-level-fringe-bitmap level)
+                    (flycheck-error-level-fringe-face level))))
+
+\f
+;;; Built-in error levels
+(put 'flycheck-error-overlay 'face 'flycheck-error)
+(put 'flycheck-error-overlay 'priority 110)
+(put 'flycheck-error-overlay 'help-echo "Unknown error.")
+
+(flycheck-define-error-level 'error
+  :severity 100
+  :overlay-category 'flycheck-error-overlay
+  :fringe-bitmap 'exclamation-mark
+  :fringe-face 'flycheck-fringe-error
+  :error-list-face 'flycheck-error-list-error)
+
+(put 'flycheck-warning-overlay 'face 'flycheck-warning)
+(put 'flycheck-warning-overlay 'priority 100)
+(put 'flycheck-warning-overlay 'help-echo "Unknown warning.")
+
+(flycheck-define-error-level 'warning
+  :severity 10
+  :overlay-category 'flycheck-warning-overlay
+  :fringe-bitmap 'question-mark
+  :fringe-face 'flycheck-fringe-warning
+  :error-list-face 'flycheck-error-list-warning)
+
+(put 'flycheck-info-overlay 'face 'flycheck-info)
+(put 'flycheck-info-overlay 'priority 90)
+(put 'flycheck-info-overlay 'help-echo "Unknown info.")
+
+(flycheck-define-error-level 'info
+  :severity -1
+  :overlay-category 'flycheck-info-overlay
+  ;; Not exactly the right indicator, but looks pretty, and I prefer to use
+  ;; built-in bitmaps over diving into the hassle of messing around with custom
+  ;; fringe bitmaps
+  :fringe-bitmap 'empty-line
+  :fringe-face 'flycheck-fringe-info
+  :error-list-face 'flycheck-error-list-info)
+
+\f
+;;; Error filtering
+(defun flycheck-filter-errors (errors checker)
+  "Filter ERRORS from CHECKER.
+
+Apply the error filter of CHECKER to ERRORs and return the
+result.  If CHECKER has no error filter, fall back to
+`flycheck-sanitize-errors'."
+  (let ((filter (or (flycheck-checker-error-filter checker)
+                    #'flycheck-sanitize-errors)))
+    (funcall filter errors)))
+
+(defun flycheck-sanitize-errors (errors)
+  "Sanitize ERRORS.
+
+Sanitize ERRORS by trimming leading and trailing whitespace in
+all error messages, and by replacing 0 columns and empty error
+messages with nil.
+
+Returns sanitized ERRORS."
+  (dolist (err errors)
+    (flycheck-error-with-buffer err
+      (let ((message (flycheck-error-message err))
+            (column (flycheck-error-column err)))
+        (when message
+          (setq message (string-trim message))
+          (setf (flycheck-error-message err)
+                (if (string-empty-p message) nil message)))
+        (when (eq column 0)
+          (setf (flycheck-error-column err) nil)))))
+  errors)
+
+(defun flycheck-increment-error-columns (errors &optional offset)
+  "Increment all columns of ERRORS by OFFSET.
+
+Use this as `:error-filter' if a syntax checker outputs 0-based
+columns."
+  (mapc (lambda (err)
+          (let ((column (flycheck-error-column err)))
+            (when column
+              (setf (flycheck-error-column err)
+                    (+ column (or offset 1))))))
+        errors)
+  errors)
+
+(defun flycheck-collapse-error-message-whitespace (errors)
+  "Collapse whitespace in all messages of ERRORS.
+
+Return ERRORS."
+  (dolist (err errors)
+    (-when-let (message (flycheck-error-message err))
+      (setf (flycheck-error-message err)
+            (replace-regexp-in-string (rx (one-or-more (any space "\n" "\r")))
+                                      " " message 'fixed-case 'literal))))
+  errors)
+
+(defun flycheck-dedent-error-messages (errors)
+  "Dedent all messages of ERRORS.
+
+For each error in ERRORS, determine the indentation offset from
+the leading whitespace of the first line, and dedent all further
+lines accordingly.
+
+Return ERRORS, with in-place modifications."
+  (dolist (err errors)
+    (-when-let (message (flycheck-error-message err))
+      (with-temp-buffer
+        (insert message)
+        ;; Determine the indentation offset
+        (goto-char (point-min))
+        (back-to-indentation)
+        (let* ((indent-offset (- (point) (point-min))))
+          ;; Now iterate over all lines and dedent each according to
+          ;; `indent-offset'
+          (while (not (eobp))
+            (back-to-indentation)
+            ;; If the current line starts with sufficient whitespace, delete the
+            ;; indendation offset.  Otherwise keep the line intact, as we might
+            ;; loose valuable information
+            (when (>= (- (point) (line-beginning-position)) indent-offset)
+              (delete-char (- indent-offset)))
+            (forward-line 1)))
+        (delete-trailing-whitespace (point-min) (point-max))
+        (setf (flycheck-error-message err)
+              (buffer-substring-no-properties (point-min) (point-max))))))
+  errors)
+
+(defun flycheck-fold-include-levels (errors sentinel-message)
+  "Fold levels of ERRORS from included files.
+
+ERRORS is a list of `flycheck-error' objects.  SENTINEL-MESSAGE
+is a regular expression matched against the error message to
+determine whether the errror denotes errors from an included
+file.  Alternatively, it is a function that is given an error and
+shall return non-nil, if the error denotes errors from an
+included file."
+  (unless (or (stringp sentinel-message) (functionp sentinel-message))
+    (error "Sentinel must be string or function: %S" sentinel-message))
+  (let ((sentinel (if (functionp sentinel-message)
+                      sentinel-message
+                    (lambda (err)
+                      (string-match-p sentinel-message
+                                      (flycheck-error-message err)))))
+        (remaining-errors errors))
+    (while remaining-errors
+      (let* ((current-error (pop remaining-errors)))
+        (when (funcall sentinel current-error)
+          ;; We found an error denoting errors in the included file, so process
+          ;; all subsequent errors until an error has the current file name
+          ;; again, and find the most severe error level
+          (let ((current-filename (flycheck-error-filename current-error))
+                (current-level nil)
+                (faulty-include-filename (flycheck-error-filename
+                                          (car remaining-errors))))
+            (while (and remaining-errors
+                        (not (string= (flycheck-error-filename
+                                       (car remaining-errors))
+                                      current-filename)))
+              (let* ((error-in-include (pop remaining-errors))
+                     (in-include-level (flycheck-error-level error-in-include)))
+                (unless (funcall sentinel error-in-include)
+                  ;; Ignore nested "included file" errors, we are only
+                  ;; interested in real errors because these define our level
+                  (when (or (not current-level)
+                            (> (flycheck-error-level-severity in-include-level)
+                               (flycheck-error-level-severity current-level)))
+                    (setq current-level in-include-level)))))
+            (setf (flycheck-error-level current-error) current-level
+                  (flycheck-error-message current-error)
+                  (format "In include %s" faulty-include-filename))))))
+    errors))
+
+(defun flycheck-dequalify-error-ids (errors)
+  "De-qualify error ids in ERRORS.
+
+Remove all qualifications from error ids in ERRORS, by stripping
+all leading dotted components from error IDs.  For instance, if
+the error ID is com.foo.E100, replace it with E100.
+
+This error filter is mainly useful to simplify error IDs obtained
+from parsing Checkstyle XML, which frequently has very verbose
+IDs, that include the name of the tool."
+  (mapc (lambda (err)
+          (let ((id (flycheck-error-id err)))
+            (when id
+              (setf (flycheck-error-id err)
+                    (replace-regexp-in-string
+                     (rx string-start
+                         (group
+                          (optional (zero-or-more not-newline) "."))
+                         (one-or-more (not (any ".")))
+                         string-end)
+                     "" id 'fixedcase 'literal 1)))))
+        errors)
+  errors)
+
+(defun flycheck-remove-error-ids (errors)
+  "Remove all error ids from ERRORS."
+  (mapc (lambda (err) (setf (flycheck-error-id err) nil)) errors)
+  errors)
+
+\f
+;;; Error analysis
+(defun flycheck-count-errors (errors)
+  "Count the number of ERRORS, grouped by level..
+
+Return an alist, where each ITEM is a cons cell whose `car' is an
+error level, and whose `cdr' is the number of errors of that
+level."
+  (let (counts-by-level)
+    (dolist (err errors)
+      (let* ((level (flycheck-error-level err))
+             (item (assq level counts-by-level)))
+        (if item
+            (setcdr item (1+ (cdr item)))
+          (push (cons level 1) counts-by-level))))
+    counts-by-level))
+
+(defun flycheck-has-max-errors-p (errors level)
+  "Check if there is no error in ERRORS more severe than LEVEL."
+  (let ((severity (flycheck-error-level-severity level))
+        found)
+    (while (and errors (not found))
+      (setq found (< severity (flycheck-error-level-severity
+                               (flycheck-error-level (pop errors))))))
+    (not found)))
+
+(defun flycheck-has-max-current-errors-p (level)
+  "Check if there is no current error more severe than LEVEL."
+  (flycheck-has-max-errors-p flycheck-current-errors level))
+
+(defun flycheck-has-errors-p (errors level)
+  "Determine if there are any ERRORS with LEVEL."
+  (let (found)
+    (while (and errors (not found))
+      (setq found (eq (flycheck-error-level (pop errors)) level)))
+    found))
+
+(defun flycheck-has-current-errors-p (&optional level)
+  "Determine if the current buffer has errors with LEVEL.
+
+If LEVEL is omitted if the current buffer has any errors at all."
+  (if level
+      (flycheck-has-errors-p flycheck-current-errors level)
+    (and flycheck-current-errors t)))
+
+\f
+;;; Error overlays in the current buffer
+(defun flycheck-add-overlay (err)
+  "Add overlay for ERR.
+
+Return the created overlay."
+  ;; We must have a proper error region for the sake of fringe indication,
+  ;; error display and error navigation, even if the highlighting is disabled.
+  ;; We erase the highlighting later on in this case
+  (pcase-let* ((`(,beg . ,end) (flycheck-error-region-for-mode
+                                err (or flycheck-highlighting-mode 'lines)))
+               (overlay (make-overlay beg end))
+               (level (flycheck-error-level err))
+               (category (flycheck-error-level-overlay-category level)))
+    (unless (flycheck-error-level-p level)
+      (error "Undefined error level: %S" level))
+    (overlay-put overlay 'flycheck-overlay t)
+    (overlay-put overlay 'flycheck-error err)
+    ;; TODO: Consider hooks to re-check if overlay contents change
+    (overlay-put overlay 'category category)
+    (unless flycheck-highlighting-mode
+      ;; Erase the highlighting from the overlay if requested by the user
+      (overlay-put overlay 'face nil))
+    (when flycheck-indication-mode
+      (overlay-put overlay 'before-string
+                   (flycheck-error-level-make-fringe-icon
+                    level flycheck-indication-mode)))
+    (overlay-put overlay 'help-echo (flycheck-error-message err))
+    overlay))
+
+(defun flycheck-filter-overlays (overlays)
+  "Get all Flycheck overlays from OVERLAYS."
+  (-filter (lambda (o) (overlay-get o 'flycheck-overlay)) overlays))
+
+(defun flycheck-overlays-at (pos)
+  "Get all Flycheck overlays at POS."
+  (flycheck-filter-overlays (overlays-at pos)))
+
+(defun flycheck-overlays-in (beg end)
+  "Get all Flycheck overlays between BEG and END."
+  (flycheck-filter-overlays (overlays-in beg end)))
+
+(defun flycheck-overlay-errors-at (pos)
+  "Return a list of all flycheck errors overlayed at POS."
+  (mapcar (lambda (o) (overlay-get o 'flycheck-error))
+          (flycheck-overlays-at pos)))
+
+(defun flycheck-overlay-errors-in (beg end)
+  "Return a list of all flycheck errors overlayed between BEG and END."
+  (mapcar (lambda (o) (overlay-get o 'flycheck-error))
+          (flycheck-overlays-in beg end)))
+
+(defvar-local flycheck-overlays-to-delete nil
+  "Overlays mark for deletion after all syntax checks completed.")
+(put 'flycheck-overlays-to-delete 'permanent-local t)
+
+(defun flycheck-delete-all-overlays ()
+  "Remove all flycheck overlays in the current buffer."
+  (flycheck-delete-marked-overlays)
+  (save-restriction
+    (widen)
+    (mapc #'delete-overlay (flycheck-overlays-in (point-min) (point-max)))))
+
+(defun flycheck-mark-all-overlays-for-deletion ()
+  "Mark all current overlays for deletion."
+  (setq flycheck-overlays-to-delete
+        (append (flycheck-overlays-in (point-min) (point-max))
+                flycheck-overlays-to-delete)))
+
+(defun flycheck-delete-marked-overlays ()
+  "Delete all overlays marked for deletion."
+  (mapc #'delete-overlay flycheck-overlays-to-delete)
+  (setq flycheck-overlays-to-delete nil))
+
+\f
+;;; Error navigation in the current buffer
+(defun flycheck-error-level-interesting-at-pos-p (pos)
+  "Check if error severity at POS passes `flycheck-error-level-interesting-p'."
+  (flycheck-error-level-interesting-p (get-char-property pos 'flycheck-error)))
+
+(defun flycheck-error-level-interesting-p (err)
+  "Check if ERR severity is >= `flycheck-navigation-minimum-level'."
+  (when (flycheck-error-p err)
+    (-if-let (min-level flycheck-navigation-minimum-level)
+        (<= (flycheck-error-level-severity min-level)
+            (flycheck-error-level-severity (flycheck-error-level err)))
+      t)))
+
+(defun flycheck-next-error-pos (n &optional reset)
+  "Get the position of the N-th next error.
+
+With negative n, get the position of the (-N)-th previous error
+instead.  With non-nil RESET, search from `point-min', otherwise
+search from the current point.
+
+Return the position of the next or previous error, or nil if
+there is none."
+  (let ((n (or n 1))
+        (pos (if reset (point-min) (point))))
+    (if (>= n 0)
+        ;; Search forwards
+        (while (and pos (> n 0))
+          (setq n (1- n))
+          (when (get-char-property pos 'flycheck-error)
+            ;; Move beyond from the current error if any
+            (setq pos (next-single-char-property-change pos 'flycheck-error)))
+          (while (not (or (= pos (point-max))
+                          (flycheck-error-level-interesting-at-pos-p pos)))
+            ;; Scan for the next error
+            (setq pos (next-single-char-property-change pos 'flycheck-error)))
+          (when (and (= pos (point-max))
+                     (not (flycheck-error-level-interesting-at-pos-p pos)))
+            ;; If we reached the end of the buffer, but no error, we didn't find
+            ;; any
+            (setq pos nil)))
+      ;; Search backwards
+      (while (and pos (< n 0))
+        (setq n (1+ n))
+        ;; Loop until we find an error.  We need to check the position *before*
+        ;; the current one, because `previous-single-char-property-change'
+        ;; always moves to the position *of* the change.
+        (while (not (or (= pos (point-min))
+                        (flycheck-error-level-interesting-at-pos-p (1- pos))))
+          (setq pos (previous-single-char-property-change pos 'flycheck-error)))
+        (when (and (= pos (point-min))
+                   (not (flycheck-error-level-interesting-at-pos-p pos)))
+          ;; We didn't find any error.
+          (setq pos nil))
+        (when pos
+          ;; We found an error, so move to its beginning
+          (setq pos (previous-single-char-property-change pos
+                                                          'flycheck-error)))))
+    pos))
+
+(defun flycheck-next-error-function (n reset)
+  "Visit the N-th error from the current point.
+
+Intended for use with `next-error-function'."
+  (let ((pos (flycheck-next-error-pos n reset)))
+    (if pos
+        (goto-char pos)
+      (user-error "No more Flycheck errors"))))
+
+(defun flycheck-next-error (&optional n reset)
+  "Visit the N-th error from the current point.
+
+If RESET is given and non-nil, re-start from the beginning of the buffer.
+
+N specifies how many errors to move forwards.  If negative, move backwards."
+  (interactive "P")
+  (when (consp n)
+    ;; Universal prefix argument means reset
+    (setq reset t n nil))
+  (flycheck-next-error-function n reset))
+
+(defun flycheck-previous-error (&optional n)
+  "Visit the N-th previous error.
+
+If given, N specifies the number of errors to move backwards.  If
+N is negative, move forwards instead."
+  (interactive "P")
+  (flycheck-next-error (- (or n 1))))
+
+(defun flycheck-first-error (&optional n)
+  "Visit the N-th error from beginning of the buffer.
+
+If given, N specifies the number of errors to move forward from
+the beginning of the buffer."
+  (interactive "P")
+  (flycheck-next-error n 'reset))
+
+\f
+;;; Listing errors in buffers
+(defconst flycheck-error-list-buffer "*Flycheck errors*"
+  "The name of the buffer to show error lists.")
+
+(defvar flycheck-error-list-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map (kbd "n") #'flycheck-error-list-next-error)
+    (define-key map (kbd "p") #'flycheck-error-list-previous-error)
+    (define-key map (kbd "g") #'flycheck-error-list-check-source)
+    (define-key map (kbd "RET") #'flycheck-error-list-goto-error)
+    map)
+  "The keymap of `flycheck-error-list-mode'.")
+
+(defconst flycheck-error-list-format
+  [("Line" 4 flycheck-error-list-entry-< :right-align t)
+   ("Col" 3 nil :right-align t)
+   ("Level" 8 flycheck-error-list-entry-level-<)
+   ("ID" 6 t)
+   ("Message" 0 t)
+   (" (Checker)" 8 t)]
+  "Table format for the error list.")
+
+(define-derived-mode flycheck-error-list-mode tabulated-list-mode "Flycheck errors"
+  "Major mode for listing Flycheck errors.
+
+\\{flycheck-error-list-mode-map}"
+  (setq tabulated-list-format flycheck-error-list-format
+        ;; Sort by location initially
+        tabulated-list-sort-key (cons "Line" nil)
+        tabulated-list-padding 1
+        tabulated-list-entries #'flycheck-error-list-entries
+        ;; `revert-buffer' updates the mode line for us, so all we need to do is
+        ;; set the corresponding mode line construct.
+        mode-line-buffer-identification flycheck-error-list-mode-line)
+  (tabulated-list-init-header))
+
+(defvar-local flycheck-error-list-source-buffer nil
+  "The current source buffer of the error list.")
+;; Needs to permanently local to preserve the source buffer across buffer
+;; reversions
+(put 'flycheck-error-list-source-buffer 'permanent-local t)
+
+(defun flycheck-error-list-set-source (buffer)
+  "Set BUFFER as the source buffer of the error list."
+  (when (get-buffer flycheck-error-list-buffer)
+    (with-current-buffer flycheck-error-list-buffer
+      ;; Only update the source when required
+      (unless (eq buffer flycheck-error-list-source-buffer)
+        (setq flycheck-error-list-source-buffer buffer)
+        (flycheck-error-list-refresh)))))
+
+(defun flycheck-error-list-update-source ()
+  "Update the source buffer of the error list."
+  (when (not (eq (current-buffer) (get-buffer flycheck-error-list-buffer)))
+    ;; We must not update the source buffer, if the current buffer is the error
+    ;; list itself.
+    (flycheck-error-list-set-source (current-buffer))))
+
+(defun flycheck-error-list-check-source ()
+  "Trigger a syntax check in the source buffer of the error list."
+  (interactive)
+  (let ((buffer (get-buffer flycheck-error-list-source-buffer)))
+    (when (buffer-live-p buffer)
+      (with-current-buffer buffer
+        (flycheck-buffer)))))
+
+(define-button-type 'flycheck-error-list
+  'action #'flycheck-error-list-button-goto-error
+  'help-echo "mouse-2, RET: goto error")
+
+(defun flycheck-error-list-button-goto-error (button)
+  "Go to the error at BUTTON."
+  (flycheck-error-list-goto-error (button-start button)))
+
+(defsubst flycheck-error-list-make-cell (text &optional face)
+  "Make an error list cell with TEXT and FACE."
+  (let ((face (or face 'default)))
+    (list text 'type 'flycheck-error-list 'face face)))
+
+(defsubst flycheck-error-list-make-number-cell (number face)
+  "Make a table cell for a NUMBER with FACE.
+
+Convert NUMBER to string, fontify it with FACE and return the
+string with attached text properties."
+  (flycheck-error-list-make-cell
+   (if (numberp number) (number-to-string number) "")
+   face))
+
+(defun flycheck-error-list-make-entry (error)
+  "Make a table cell for the given ERROR.
+
+Return a list with the contents of the table cell."
+  (let* ((level (flycheck-error-level error))
+         (level-face (flycheck-error-level-error-list-face level))
+         (line (flycheck-error-line error))
+         (column (flycheck-error-column error))
+         (message (or (flycheck-error-message error)
+                      (format "Unknown %s" (symbol-name level))))
+         (id (flycheck-error-id error))
+         (checker (flycheck-error-checker error)))
+    (list error
+          (vector (flycheck-error-list-make-number-cell
+                   line 'flycheck-error-list-line-number)
+                  (flycheck-error-list-make-number-cell
+                   column 'flycheck-error-list-column-number)
+                  (flycheck-error-list-make-cell
+                   (symbol-name (flycheck-error-level error)) level-face)
+                  (flycheck-error-list-make-cell
+                   (if id (format "%s" id) "")
+                   'flycheck-error-list-id)
+                  (flycheck-error-list-make-cell message)
+                  (flycheck-error-list-make-cell
+                   (format "(%s)" checker)
+                   'flycheck-error-list-checker-name)))))
+
+(defun flycheck-error-list-entries ()
+  "Create the entries for the error list."
+  (when (buffer-live-p flycheck-error-list-source-buffer)
+    (let ((errors (buffer-local-value 'flycheck-current-errors
+                                      flycheck-error-list-source-buffer)))
+      (mapcar #'flycheck-error-list-make-entry errors))))
+
+(defun flycheck-error-list-entry-< (entry1 entry2)
+  "Determine whether ENTRY1 is before ENTRY2 by location.
+
+See `flycheck-error-<'."
+  (flycheck-error-< (car entry1) (car entry2)))
+
+(defun flycheck-error-list-entry-level-< (entry1 entry2)
+  "Determine whether ENTRY1 is before ENTRY2 by level.
+
+See `flycheck-error-level-<'."
+  (not (flycheck-error-level-< (car entry1) (car entry2))))
+
+(defvar flycheck-error-list-mode-line-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map [mode-line mouse-1]
+      #'flycheck-error-list-mouse-switch-to-source)
+    map)
+  "Keymap for error list mode line.")
+
+(defun flycheck-error-list-propertized-source-name ()
+  "Get the name of the current source buffer for the mode line.
+
+Propertize the name of the current source buffer for use in the
+mode line indication of `flycheck-error-list-mode'."
+  (let ((name (replace-regexp-in-string
+               (rx "%") "%%"
+               (buffer-name flycheck-error-list-source-buffer)
+               'fixed-case 'literal)))
+    (propertize name 'face 'mode-line-buffer-id
+                'mouse-face 'mode-line-highlight
+                'help-echo "mouse-1: switch to source"
+                'local-map flycheck-error-list-mode-line-map)))
+
+(defun flycheck-error-list-mouse-switch-to-source (event)
+  "Switch to the error list source buffer of the EVENT window."
+  (interactive "e")
+  (save-selected-window
+    (when (eventp event)
+      (select-window (posn-window (event-start event))))
+    (when (buffer-live-p flycheck-error-list-source-buffer)
+      (switch-to-buffer flycheck-error-list-source-buffer))))
+
+(defun flycheck-get-error-list-window-list (&optional all-frames)
+  "Get all windows displaying the error list.
+
+ALL-FRAMES specifies the frames to consider, as in
+`get-buffer-window-list'."
+  (-when-let (buf (get-buffer flycheck-error-list-buffer))
+    (get-buffer-window-list buf nil all-frames)))
+
+(defun flycheck-get-error-list-window (&optional all-frames)
+  "Get a window displaying the error list, or nil if none.
+
+ALL-FRAMES specifies the frames to consider, as in
+`get-buffer-window'."
+  (-when-let (buf (get-buffer flycheck-error-list-buffer))
+    (get-buffer-window buf all-frames)))
+
+(defun flycheck-error-list-recenter-at (pos)
+  "Recenter the error list at POS."
+  (dolist (window (flycheck-get-error-list-window-list t))
+    (with-selected-window window
+      (goto-char pos)
+      (recenter))))
+
+(defun flycheck-error-list-refresh ()
+  "Refresh the current error list.
+
+Add all errors currently reported for the current
+`flycheck-error-list-source-buffer', and recenter the error
+list."
+  ;; We only refresh the error list, when it is visible in a window, and we
+  ;; select this window while reverting, because Tabulated List mode attempts to
+  ;; recenter the error at the old location, so it must have the proper window
+  ;; selected.
+  (-when-let (window (flycheck-get-error-list-window t))
+    (with-selected-window window
+      (revert-buffer))
+    (run-hooks 'flycheck-error-list-after-refresh-hook)
+    (let ((preserve-pos (eq (current-buffer)
+                            (get-buffer flycheck-error-list-buffer))))
+      ;; If the error list is the current buffer, don't recenter when
+      ;; highlighting
+      (flycheck-error-list-highlight-errors preserve-pos))))
+
+(defun flycheck-error-list-goto-error (&optional pos)
+  "Go to the location of the error at POS in the error list.
+
+POS defaults to `point'."
+  (interactive)
+  (-when-let* ((error (tabulated-list-get-id pos))
+               (buffer (flycheck-error-buffer error)))
+    (when (buffer-live-p buffer)
+      (if (eq (window-buffer) (get-buffer flycheck-error-list-buffer))
+          ;; When called from within the error list, keep the error list,
+          ;; otherwise replace the current buffer.
+          (pop-to-buffer buffer 'other-window)
+        (switch-to-buffer buffer))
+      (let ((pos (flycheck-error-pos error)))
+        (unless (eq (goto-char pos) (point))
+          ;; If widening gets in the way of moving to the right place, remove it
+          ;; and try again
+          (widen)
+          (goto-char pos)))
+      ;; Re-highlight the errors
+      (flycheck-error-list-highlight-errors 'preserve-pos))))
+
+(defun flycheck-error-list-next-error-pos (pos &optional n)
+  "Get the N'th next error in the error list from POS.
+
+N defaults to 1.  If N is negative, search for the previous error
+instead.
+
+Get the beginning position of the N'th next error from POS, or
+nil, if there is no next error."
+  (let ((n (or n 1)))
+    (if (>= n 0)
+        ;; Search forward
+        (while (and pos (/= n 0))
+          (setq n (1- n))
+          (setq pos (next-single-property-change pos 'tabulated-list-id)))
+      ;; Search backwards
+      (while (/= n 0)
+        (setq n (1+ n))
+        ;; We explicitly give the limit here to explicitly have the minimum
+        ;; point returned, to be able to move to the first error (which starts
+        ;; at `point-min')
+        (setq pos (previous-single-property-change pos 'tabulated-list-id
+                                                   nil (point-min)))))
+    pos))
+
+(defun flycheck-error-list-previous-error (n)
+  "Go to the N'th previous error in the error list."
+  (interactive "P")
+  (flycheck-error-list-next-error (- (or n 1))))
+
+(defun flycheck-error-list-next-error (n)
+  "Go to the N'th next error in the error list."
+  (interactive "P")
+  (let ((pos (flycheck-error-list-next-error-pos (point) n)))
+    (when (and pos (/= pos (point)))
+      (goto-char pos)
+      (save-selected-window
+        ;; Keep the error list selected, so that the user can navigate errors by
+        ;; repeatedly pressing n/p, without having to re-select the error list
+        ;; window.
+        (flycheck-error-list-goto-error)))))
+
+(defvar-local flycheck-error-list-highlight-overlays nil
+  "Error highlight overlays in the error list buffer.")
+(put 'flycheck-error-list-highlight-overlays 'permanent-local t)
+
+(defun flycheck-error-list-highlight-errors (&optional preserve-pos)
+  "Highlight errors in the error list.
+
+Highlight all errors in the error lists that are at point in the
+source buffer, and on the same line as point.  Then recenter the
+error list to the highlighted error, unless PRESERVE-POS is
+non-nil."
+  (when (get-buffer flycheck-error-list-buffer)
+    (let ((current-errors (flycheck-overlay-errors-in (line-beginning-position)
+                                                      (line-end-position))))
+      (with-current-buffer flycheck-error-list-buffer
+        (let ((old-overlays flycheck-error-list-highlight-overlays)
+              (min-point (point-max))
+              (max-point (point-min)))
+          ;; Display the new overlays first, to avoid re-display flickering
+          (setq flycheck-error-list-highlight-overlays nil)
+          (when current-errors
+            (let ((next-error-pos (point-min)))
+              (while next-error-pos
+                (let* ((beg next-error-pos)
+                       (end (flycheck-error-list-next-error-pos beg))
+                       (err (tabulated-list-get-id beg)))
+                  (when (member err current-errors)
+                    (setq min-point (min min-point beg)
+                          max-point (max max-point beg))
+                    (let ((ov (make-overlay beg
+                                            ;; Extend overlay to the beginning of
+                                            ;; the next line, to highlight the
+                                            ;; whole line
+                                            (or end (point-max)))))
+                      (push ov flycheck-error-list-highlight-overlays)
+                      (overlay-put ov 'flycheck-error-highlight-overlay t)
+                      (overlay-put ov 'face 'flycheck-error-list-highlight)))
+                  (setq next-error-pos end)))))
+          ;; Delete the old overlays
+          (mapc #'delete-overlay old-overlays)
+          (when (and (not preserve-pos) current-errors)
+            ;; Move point to the middle error
+            (goto-char (+ min-point (/ (- max-point min-point) 2)))
+            (beginning-of-line)
+            ;; And recenter the error list at this position
+            (flycheck-error-list-recenter-at (point))))))))
+
+(defun flycheck-list-errors ()
+  "Show the error list for the current buffer."
+  (interactive)
+  (unless flycheck-mode
+    (user-error "Flycheck mode not enabled"))
+  ;; Create and initialize the error list
+  (unless (get-buffer flycheck-error-list-buffer)
+    (with-current-buffer (get-buffer-create flycheck-error-list-buffer)
+      (flycheck-error-list-mode)))
+  (flycheck-error-list-set-source (current-buffer))
+  ;; Show the error list in a window, and re-select the old window
+  (display-buffer flycheck-error-list-buffer)
+  ;; Finally, refresh the error list to show the most recent errors
+  (flycheck-error-list-refresh))
+
+(defalias 'list-flycheck-errors 'flycheck-list-errors)
+
+\f
+;;; Displaying errors in the current buffer
+(defun flycheck-display-errors (errors)
+  "Display ERRORS using `flycheck-display-errors-function'."
+  (when flycheck-display-errors-function
+    (funcall flycheck-display-errors-function errors)))
+
+(defvar-local flycheck-display-error-at-point-timer nil
+  "Timer to automatically show the error at point in minibuffer.")
+
+(defun flycheck-cancel-error-display-error-at-point-timer ()
+  "Cancel the error display timer for the current buffer."
+  (when flycheck-display-error-at-point-timer
+    (cancel-timer flycheck-display-error-at-point-timer)
+    (setq flycheck-display-error-at-point-timer nil)))
+
+(defun flycheck-display-error-at-point ()
+  "Display the all error messages at point in minibuffer."
+  (flycheck-cancel-error-display-error-at-point-timer)
+  (when flycheck-mode
+    (-when-let (errors (flycheck-overlay-errors-at (point)))
+      (flycheck-display-errors errors))))
+
+(defun flycheck-display-error-at-point-soon ()
+  "Display the first error message at point in minibuffer delayed."
+  (flycheck-cancel-error-display-error-at-point-timer)
+  (when (flycheck-overlays-at (point))
+    (setq flycheck-display-error-at-point-timer
+          (run-at-time flycheck-display-errors-delay nil 'flycheck-display-error-at-point))))
+
+\f
+;;; Functions to display errors
+(defconst flycheck-error-message-buffer "*Flycheck error messages*"
+  "The name of the buffer to show long error messages in.")
+
+(defun flycheck-error-message-buffer ()
+  "Get the buffer object to show long error messages in.
+
+Get the buffer named by variable `flycheck-error-message-buffer',
+or nil if the buffer does not exist."
+  (get-buffer flycheck-error-message-buffer))
+
+(defun flycheck-may-use-echo-area-p ()
+  "Determine whether the echo area may be used.
+
+The echo area may be used if the cursor is not in the echo area,
+and if the echo area is not occupied by minibuffer input."
+  (not (or cursor-in-echo-area (active-minibuffer-window))))
+
+(defun flycheck-display-error-messages (errors)
+  "Display the messages of ERRORS.
+
+Concatenate all non-nil messages of ERRORS separated by empty
+lines, and display them with `display-message-or-buffer', which
+shows the messages either in the echo area or in a separate
+buffer, depending on the number of lines.  See Info
+node `(elisp)Displaying Messages' for more information.
+
+In the latter case, show messages in
+`flycheck-error-message-buffer'."
+  (when (and errors (flycheck-may-use-echo-area-p))
+    (let ((messages (mapcar #'flycheck-error-format-message-and-id errors)))
+      (display-message-or-buffer (string-join messages "\n\n")
+                                 flycheck-error-message-buffer))))
+
+(defun flycheck-display-error-messages-unless-error-list (errors)
+  "Show messages of ERRORS unless the error list is visible.
+
+Like `flycheck-display-error-messages', but only if the error
+list (see `flycheck-list-errors') is not visible in any window in
+the current frame."
+  (unless (flycheck-get-error-list-window 'current-frame)
+    (flycheck-display-error-messages errors)))
+
+(defun flycheck-hide-error-buffer ()
+  "Hide the Flycheck error buffer if necessary.
+
+Hide the error buffer if there is no error under point."
+  (-when-let* ((buffer (flycheck-error-message-buffer))
+               (window (get-buffer-window buffer)))
+    (unless (flycheck-overlays-at (point))
+      (quit-window nil window))))
+
+\f
+;;; Working with errors
+(defun flycheck-copy-errors-as-kill (pos &optional formatter)
+  "Copy each error at POS into kill ring, using FORMATTER.
+
+FORMATTER is a function to turn an error into a string,
+defaulting to `flycheck-error-message'.
+
+Interactively, use `flycheck-error-format-message-and-id' as
+FORMATTER with universal prefix arg, and `flycheck-error-id' with
+normal prefix arg, i.e. copy the message and the ID with
+universal prefix arg, and only the id with normal prefix arg."
+  (interactive (list (point)
+                     (pcase current-prefix-arg
+                       ((pred not) #'flycheck-error-message)
+                       ((pred consp) #'flycheck-error-format-message-and-id)
+                       (_ #'flycheck-error-id))))
+  (let ((messages (delq nil (mapcar (or formatter #'flycheck-error-message)
+                                    (flycheck-overlay-errors-at pos)))))
+    (when messages
+      (mapc #'kill-new (reverse messages))
+      (message (string-join messages "\n")))))
+
+(define-obsolete-function-alias 'flycheck-copy-messages-as-kill
+  'flycheck-copy-errors-as-kill "0.22")
+
+\f
+;;; Syntax checkers using external commands
+(defun flycheck-command-argument-p (arg)
+  "Check whether ARG is a valid command argument."
+  (pcase arg
+    ((pred stringp) t)
+    ((or `source `source-inplace `source-original) t)
+    ((or `temporary-directory `temporary-file-name) t)
+    (`null-device t)
+    (`(config-file ,option-name ,config-file-var)
+     (and (stringp option-name)
+          (symbolp config-file-var)))
+    (`(config-file ,option-name ,config-file-var ,prepender)
+     (and (stringp option-name)
+          (symbolp config-file-var)
+          (symbolp prepender)))
+    (`(,(or `option `option-list) ,option-name ,option-var)
+     (and (stringp option-name)
+          (symbolp option-var)))
+    (`(,(or `option `option-list) ,option-name ,option-var ,prepender)
+     (and (stringp option-name)
+          (symbolp option-var)
+          (symbolp prepender)))
+    (`(,(or `option `option-list) ,option-name ,option-var ,prepender ,filter)
+     (and (stringp option-name)
+          (symbolp option-var)
+          (symbolp prepender)
+          (symbolp filter)))
+    (`(option-flag ,option-name ,option-var)
+     (and (stringp option-name)
+          (symbolp option-var)))
+    (`(eval ,_) t)
+    (_ nil)))
+
+;;;###autoload
+(defun flycheck-define-command-checker (symbol docstring &rest properties)
+  "Define SYMBOL as syntax checker which runs a command.
+
+Define SYMBOL as generic syntax checker via
+`flycheck-define-generic-checker', which uses an external command
+to check the buffer.  SYMBOL and DOCSTRING are the same as for
+`flycheck-define-generic-checker'.
+
+In addition to the properties understood by
+`flycheck-define-generic-checker', the following PROPERTIES
+constitute a command syntax checker.  Unless otherwise noted, all
+properties are mandatory.  Note that the default `:error-filter'
+of command checkers is `flycheck-sanitize-errors'.
+
+`:command COMMAND'
+     The command to run for syntax checking.
+
+     COMMAND is a list of the form `(EXECUTABLE [ARG ...])'.
+
+     EXECUTABLE is a string with the executable of this syntax
+     checker.  It can be overridden with the variable
+     `flycheck-SYMBOL-executable'.  Note that this variable is
+     NOT implicitly defined by this function.  Use
+     `flycheck-def-executable-var' to define this variable.
+
+     Each ARG is an argument to the executable, either as string,
+     or as special symbol or form for
+     `flycheck-substitute-argument', which see.
+
+`:error-patterns PATTERNS'
+     A list of patterns to parse the output of the `:command'.
+
+     Each ITEM in PATTERNS is a list `(LEVEL SEXP ...)', where
+     LEVEL is a Flycheck error level (see
+     `flycheck-define-error-level'), followed by one or more RX
+     `SEXP's which parse an error of that level and extract line,
+     column, file name and the message.
+
+     See `rx' for general information about RX, and
+     `flycheck-rx-to-string' for some special RX forms provided
+     by Flycheck.
+
+     All patterns are applied in the order of declaration to the
+     whole output of the syntax checker.  Output already matched
+     by a pattern will not be matched by subsequent patterns.  In
+     other words, the first pattern wins.
+
+     This property is optional.  If omitted, however, an
+     `:error-parser' is mandatory.
+
+`:error-parser FUNCTION'
+     A function to parse errors with.
+
+     The function shall accept three arguments OUTPUT CHECKER
+     BUFFER.  OUTPUT is the syntax checker output as string,
+     CHECKER the syntax checker that was used, and BUFFER a
+     buffer object representing the checked buffer.  The function
+     must return a list of `flycheck-error' objects parsed from
+     OUTPUT.
+
+     This property is optional.  If omitted, it defaults to
+     `flycheck-parse-with-patterns'.  In this case,
+     `:error-patterns' is mandatory.
+
+Note that you may not give `:start', `:interrupt', and
+`:print-doc' for a command checker.  You can give a custom
+`:verify' function, but you should take care to call
+`flycheck-verify-command-checker' in a custom `:verify'
+function."
+  (declare (indent 1)
+           (doc-string 2))
+  (dolist (prop '(:start :interrupt :print-doc))
+    (when (plist-get properties prop)
+      (error "%s not allowed in definition of command syntax checker %s"
+             prop symbol)))
+
+  (unless (plist-get properties :error-filter)
+    ;; Default to `flycheck-sanitize-errors' as error filter
+    (setq properties (plist-put properties :error-filter
+                                #'flycheck-sanitize-errors)))
+
+  (let ((command (plist-get properties :command))
+        (patterns (plist-get properties :error-patterns))
+        (parser (or (plist-get properties :error-parser)
+                    #'flycheck-parse-with-patterns))
+        (predicate (plist-get properties :predicate)))
+
+    (unless command
+      (error "Missing :command in syntax checker %s" symbol))
+    (unless (stringp (car command))
+      (error "Command executable for syntax checker %s must be a string: %S"
+             symbol (car command)))
+    (dolist (arg (cdr command))
+      (unless (flycheck-command-argument-p arg)
+        (error "Invalid command argument %S in syntax checker %s" arg symbol)))
+    (when (and (eq parser 'flycheck-parse-with-patterns)
+               (not patterns))
+      (error "Missing :error-patterns in syntax checker %s" symbol))
+
+    (setq properties
+          ;; Construct a predicate that checks whether the executable exists, to
+          ;; guard against syntax checker tools which are not installed
+          (plist-put properties :predicate
+                     (lambda ()
+                       (and (executable-find (flycheck-checker-executable symbol))
+                            (or (not predicate) (funcall predicate))))))
+
+    (apply #'flycheck-define-generic-checker symbol docstring
+           :start #'flycheck-start-command-checker
+           :interrupt #'flycheck-interrupt-command-checker
+           :print-doc #'flycheck-command-checker-print-doc
+           :verify #'flycheck-verify-command-checker
+           properties)
+
+    ;; Pre-compile all errors patterns into strings, so that we don't need to do
+    ;; that on each error parse
+    (let ((patterns (mapcar (lambda (p)
+                              (cons (flycheck-rx-to-string `(and ,@(cdr p))
+                                                           'no-group)
+                                    (car p)))
+                            patterns)))
+      (pcase-dolist (`(,prop . ,value)
+                     `((flycheck-command . ,command)
+                       (flycheck-error-parser . ,parser)
+                       (flycheck-error-patterns . ,patterns)))
+        (put symbol prop value)))))
+
+(eval-and-compile
+  ;; Make this function available during byte-compilation, since we need it
+  ;; at macro expansion of `flycheck-def-executable-var'.
+  (defun flycheck-checker-executable-variable (checker)
+    "Get the executable variable of CHECKER.
+
+The executable variable is named `flycheck-CHECKER-executable'."
+    (intern (format "flycheck-%s-executable" checker))))
+
+(defun flycheck-checker-default-executable (checker)
+  "Get the default executable of CHECKER."
+  (car (get checker 'flycheck-command)))
+
+(defun flycheck-checker-executable (checker)
+  "Get the command executable of CHECKER.
+
+The executable is either the value of the variable
+`flycheck-CHECKER-executable', or the default executable given in
+the syntax checker definition, if the variable is nil."
+  (let ((var (flycheck-checker-executable-variable checker)))
+    (or (and (boundp var) (symbol-value var))
+        (flycheck-checker-default-executable checker))))
+
+(defun flycheck-checker-arguments (checker)
+  "Get the command arguments of CHECKER."
+  (cdr (get checker 'flycheck-command)))
+
+(defun flycheck-checker-error-patterns (checker)
+  "Get the error patterns of CHECKER.
+
+Each pattern has the form `(REGEXP . LEVEL)' where REGEXP is the
+regular expression, and LEVEL the corresponding level symbol."
+  (get checker 'flycheck-error-patterns))
+
+(defun flycheck-checker-error-parser (checker)
+  "Get the error parser of CHECKER."
+  (get checker 'flycheck-error-parser))
+
+(defun flycheck-substitute-argument (arg checker)
+  "Substitute ARG for CHECKER.
+
+Return a list of real arguments for the executable of CHECKER,
+substituted for the symbolic argument ARG.  Single arguments,
+e.g. if ARG is a literal strings, are wrapped in a list.
+
+ARG may be one of the following forms:
+
+STRING
+     Return ARG unchanged.
+
+`source', `source-inplace'
+     Create a temporary file to check and return its path.  With
+     `source-inplace' create the temporary file in the same
+     directory as the original file.  The value of
+     `flycheck-temp-prefix' is used as prefix of the file name.
+
+     With `source', try to retain the non-directory component of
+     the buffer's file name in the temporary file.
+
+     `source' is the preferred way to pass the input file to a
+     syntax checker.  `source-inplace' should only be used if the
+     syntax checker needs other files from the source directory,
+     such as include files in C.
+
+`source-original'
+     Return the path of the actual file to check, or an empty
+     string if the buffer has no file name.
+
+     Note that the contents of the file may not be up to date
+     with the contents of the buffer to check.  Do not use this
+     as primary input to a checker, unless absolutely necessary.
+
+     When using this symbol as primary input to the syntax
+     checker, add `flycheck-buffer-saved-p' to the `:predicate'.
+
+`temporary-directory'
+     Create a unique temporary directory and return its path.
+
+`temporary-file-name'
+     Return a unique temporary filename.  The file is *not*
+     created.
+
+     To ignore the output of syntax checkers, try `null-device'
+     first.
+
+`null-device'
+     Return the value of `null-device', i.e the system null
+     device.
+
+     Use this option to ignore the output of a syntax checker.
+     If the syntax checker cannot handle the null device, or
+     won't write to an existing file, try `temporary-file-name'
+     instead.
+
+`(config-file OPTION VARIABLE [PREPEND-FN])'
+     Search the configuration file bound to VARIABLE with
+     `flycheck-locate-config-file' and return a list of arguments
+     that pass this configuration file to the syntax checker, or
+     nil if the configuration file was not found.
+
+     PREPEND-FN is called with the OPTION and the located
+     configuration file, and should return OPTION prepended
+     before the file, either a string or as list.  If omitted,
+     PREPEND-FN defaults to `list'.
+
+`(option OPTION VARIABLE [PREPEND-FN [FILTER]])'
+     Retrieve the value of VARIABLE and return a list of
+     arguments that pass this value as value for OPTION to the
+     syntax checker.
+
+     PREPEND-FN is called with the OPTION and the value of
+     VARIABLE, and should return OPTION prepended before the
+     file, either a string or as list.  If omitted, PREPEND-FN
+     defaults to `list'.
+
+     FILTER is an optional function to be applied to the value of
+     VARIABLE before prepending.  This function must return nil
+     or a string.  In the former case, return nil.  In the latter
+     case, return a list of arguments as described above.
+
+`(option-list OPTION VARIABLE [PREPEND-FN [FILTER]])'
+     Retrieve the value of VARIABLE, which must be a list,
+     and prepend OPTION before each item in this list, using
+     PREPEND-FN.
+
+     PREPEND-FN is called with the OPTION and each item of the
+     list as second argument, and should return OPTION prepended
+     before the item, either as string or as list.  If omitted,
+     PREPEND-FN defaults to `list'.
+
+     FILTER is an optional function to be applied to each item in
+     the list before prepending OPTION.  It shall return the
+     option value for each item as string, or nil, if the item is
+     to be ignored.
+
+`(option-flag OPTION VARIABLE)'
+     Retrieve the value of VARIABLE and return OPTION, if the
+     value is non-nil.  Otherwise return nil.
+
+`(eval FORM)'
+     Return the result of evaluating FORM in the buffer to be
+     checked.  FORM must either return a string or a list of
+     strings, or nil to indicate that nothing should be
+     substituted for CELL.  For all other return types, signal an
+     error
+
+     _No_ further substitutions are performed, neither in FORM
+     before it is evaluated, nor in the result of evaluating
+     FORM.
+
+In all other cases, signal an error.
+
+Note that substitution is *not* recursive.  No symbols or cells
+are substituted within the body of cells!"
+  (pcase arg
+    ((pred stringp) (list arg))
+    (`source
+     (list (flycheck-save-buffer-to-temp #'flycheck-temp-file-system)))
+    (`source-inplace
+     (list (flycheck-save-buffer-to-temp #'flycheck-temp-file-inplace)))
+    (`source-original (list (or (buffer-file-name) "")))
+    (`temporary-directory (list (flycheck-temp-dir-system)))
+    (`temporary-file-name
+     (let ((directory (flycheck-temp-dir-system)))
+       (list (make-temp-name (expand-file-name "flycheck" directory)))))
+    (`null-device (list null-device))
+    (`(config-file ,option-name ,file-name-var)
+     (-when-let* ((value (symbol-value file-name-var))
+                  (file-name (flycheck-locate-config-file value checker)))
+       (flycheck-prepend-with-option option-name (list file-name))))
+    (`(config-file ,option-name ,file-name-var ,prepend-fn)
+     (-when-let* ((value (symbol-value file-name-var))
+                  (file-name (flycheck-locate-config-file value checker)))
+       (flycheck-prepend-with-option option-name (list file-name) prepend-fn)))
+    (`(option ,option-name ,variable)
+     (-when-let (value (symbol-value variable))
+       (unless (stringp value)
+         (error "Value %S of %S for option %s is not a string"
+                value variable option-name))
+       (flycheck-prepend-with-option option-name (list value))))
+    (`(option ,option-name ,variable ,prepend-fn)
+     (-when-let (value (symbol-value variable))
+       (unless (stringp value)
+         (error "Value %S of %S for option %s is not a string"
+                value variable option-name))
+       (flycheck-prepend-with-option option-name (list value) prepend-fn)))
+    (`(option ,option-name ,variable ,prepend-fn ,filter)
+     (-when-let (value (funcall filter (symbol-value variable)))
+       (unless (stringp value)
+         (error "Value %S of %S (filter: %S) for option %s is not a string"
+                value variable filter option-name))
+       (flycheck-prepend-with-option option-name (list value) prepend-fn)))
+    (`(option-list ,option-name ,variable)
+     (let ((value (symbol-value variable)))
+       (unless (and (listp value) (-all? #'stringp value))
+         (error "Value %S of %S for option %S is not a list of strings"
+                value variable option-name))
+       (flycheck-prepend-with-option option-name value)))
+    (`(option-list ,option-name ,variable ,prepend-fn)
+     (let ((value (symbol-value variable)))
+       (unless (and (listp value) (-all? #'stringp value))
+         (error "Value %S of %S for option %S is not a list of strings"
+                value variable option-name))
+       (flycheck-prepend-with-option option-name value prepend-fn)))
+    (`(option-list ,option-name ,variable ,prepend-fn ,filter)
+     (let ((value (delq nil (mapcar filter (symbol-value variable)))))
+       (unless (and (listp value) (-all? #'stringp value))
+         (error "Value %S of %S for option %S is not a list of strings"
+                value variable option-name))
+       (flycheck-prepend-with-option option-name value prepend-fn)))
+    (`(option-flag ,option-name ,variable)
+     (when (symbol-value variable)
+       (list option-name)))
+    (`(eval ,form)
+     (let ((result (eval form)))
+       (cond
+        ((and (listp result) (-all? #'stringp result)) result)
+        ((stringp result) (list result))
+        (t (error "Invalid result from evaluation of %S: %S" form result)))))
+    (_ (error "Unsupported argument %S" arg))))
+
+(defun flycheck-checker-substituted-arguments (checker)
+  "Get the substituted arguments of a CHECKER.
+
+Substitute each argument of CHECKER using
+`flycheck-substitute-argument'.  This replaces any special
+symbols in the command."
+  (apply #'append
+         (mapcar (lambda (arg) (flycheck-substitute-argument arg checker))
+                 (flycheck-checker-arguments checker))))
+
+(defun flycheck-start-command-checker (checker callback)
+  "Start a command CHECKER with CALLBACK."
+  (let (process)
+    (condition-case err
+        (let* ((program (flycheck-checker-executable checker))
+               (args (flycheck-checker-substituted-arguments checker))
+               ;; Use pipes to receive output from the syntax checker.  They are
+               ;; more efficient and more robust than PTYs, which Emacs uses by
+               ;; default, and since we don't need any job control features, we
+               ;; can easily use pipes.
+               (process-connection-type nil))
+          ;; We pass do not associate the process with any buffer, by
+          ;; passing nil for the BUFFER argument of `start-process'.
+          ;; Instead, we just remember the buffer being checked in a
+          ;; process property (see below).  This neatly avoids all
+          ;; side-effects implied by attached a process to a buffer, which
+          ;; may cause conflicts with other packages.
+          ;;
+          ;; See https://github.com/flycheck/flycheck/issues/298 for an
+          ;; example for such a conflict.
+          (setq process (apply 'start-process (format "flycheck-%s" checker)
+                               nil program args))
+          (set-process-sentinel process 'flycheck-handle-signal)
+          (set-process-filter process 'flycheck-receive-checker-output)
+          (set-process-query-on-exit-flag process nil)
+          ;; Remember the syntax checker, the buffer and the callback
+          (process-put process 'flycheck-checker checker)
+          (process-put process 'flycheck-callback callback)
+          (process-put process 'flycheck-buffer (current-buffer))
+          ;; Track the temporaries created by argument substitution in the
+          ;; process itself, to get rid of the global state ASAP.
+          (process-put process 'flycheck-temporaries flycheck-temporaries)
+          (setq flycheck-temporaries nil)
+          ;; Return the process
+          process)
+      (error
+       ;; In case of error, clean up our resources, and report the error back to
+       ;; Flycheck
+       (flycheck-safe-delete-temporaries)
+       (when process
+         ;; No need to explicitly delete the temporary files of the process,
+         ;; because deleting runs the sentinel, which will delete them anyway.
+         (delete-process process))
+       (signal (car err) (cdr err))))))
+
+(defun flycheck-interrupt-command-checker (_checker process)
+  "Interrupt a PROCESS."
+  ;; Deleting the process always triggers the sentinel, which does the cleanup
+  (when process
+    (delete-process process)))
+
+(defun flycheck-command-checker-print-doc (checker)
+  "Print additional documentation for a command CHECKER."
+  (let ((executable (flycheck-checker-default-executable checker))
+        (config-file-var (flycheck-checker-config-file-var checker))
+        (option-vars (-sort #'string<
+                            (flycheck-checker-option-vars checker))))
+    (princ "\n")
+
+    (let ((doc-start (with-current-buffer standard-output (point-max))))
+      ;; Track the start of our documentation so that we can re-indent it
+      ;; properly
+      (princ "  This syntax checker executes \"")
+      (princ executable)
+      (princ "\"")
+      (when config-file-var
+        (princ ", using a configuration file from `")
+        (princ (symbol-name config-file-var))
+        (princ "'"))
+      (princ ". The executable can be overridden with `")
+      (princ (symbol-name (flycheck-checker-executable-variable checker)))
+      (princ "'.")
+
+      (with-current-buffer standard-output
+        (save-excursion
+          (fill-region-as-paragraph doc-start (point-max)))))
+    (princ "\n")
+    (when option-vars
+      (princ "\n  This syntax checker can be configured with these options:\n\n")
+      (dolist (var option-vars)
+        (princ (format "     * `%s'\n" var))))))
+
+(defun flycheck-verify-command-checker (checker)
+  "Verify a command CHECKER in the current buffer.
+
+Return a list of `flycheck-verification-result' objects for
+CHECKER."
+  (let ((executable (executable-find (flycheck-checker-executable checker))))
+    (list
+     (flycheck-verification-result-new
+      :label "executable"
+      :message (if executable (format "Found at %s" executable) "Not found")
+      :face (if executable 'success '(bold error))))))
+
+\f
+;;; Process management for command syntax checkers
+(defun flycheck-receive-checker-output (process output)
+  "Receive a syntax checking PROCESS OUTPUT."
+  (push output (process-get process 'flycheck-pending-output)))
+
+(defun flycheck-get-output (process)
+  "Get the complete output of PROCESS."
+  (with-demoted-errors "Error while retrieving process output: %S"
+    (let ((pending-output (process-get process 'flycheck-pending-output)))
+      (apply #'concat (nreverse pending-output)))))
+
+(defun flycheck-handle-signal (process _event)
+  "Handle a signal from the syntax checking PROCESS.
+
+_EVENT is ignored."
+  (when (memq (process-status process) '(signal exit))
+    (let ((files (process-get process 'flycheck-temporaries))
+          (buffer (process-get process 'flycheck-buffer))
+          (callback (process-get process 'flycheck-callback)))
+      ;; Delete the temporary files
+      (mapc #'flycheck-safe-delete files)
+      (when (buffer-live-p buffer)
+        (with-current-buffer buffer
+          (condition-case err
+              (pcase (process-status process)
+                (`signal
+                 (funcall callback 'interrupted))
+                (`exit
+                 (flycheck-finish-checker-process
+                  (process-get process 'flycheck-checker)
+                  (process-exit-status process)
+                  files
+                  (flycheck-get-output process) callback)))
+            (error
+             (funcall callback 'errored (error-message-string err)))))))))
+
+(defun flycheck-finish-checker-process
+    (checker exit-status files output callback)
+  "Finish a checker process from CHECKER with EXIT-STATUS.
+
+FILES is a list of files given as input to the checker.  OUTPUT
+is the output of the syntax checker.  CALLBACK is the status
+callback to use for reporting.
+
+Parse the OUTPUT and report an appropriate error status."
+  (let ((errors (flycheck-parse-output output checker (current-buffer))))
+    (when (and (/= exit-status 0) (not errors))
+      ;; Warn about a suspicious result from the syntax checker.  We do right
+      ;; after parsing the errors, before filtering, because a syntax checker
+      ;; might report errors from other files (e.g. includes) even if there
+      ;; are no errors in the file being checked.
+      (funcall callback 'suspicious
+               (format "Checker %S returned non-zero exit code %s, but no errors from \
+output: %s\nChecker definition probably flawed." checker exit-status output)))
+    (funcall callback 'finished
+             ;; Fix error file names, by substituting them backwards from the
+             ;; temporaries
+             (mapcar (lambda (e) (flycheck-fix-error-filename e files))
+                     errors))))
+
+\f
+;;; Executables of command checkers.
+(defmacro flycheck-def-executable-var (checker default-executable)
+  "Define the executable variable for CHECKER.
+
+DEFAULT-EXECUTABLE is the default executable.  It is only used in
+the docstring of the variable.
+
+The variable is defined with `defcustom' in the
+`flycheck-executables' group.  It's also defined to be risky as
+file-local variable, to avoid arbitrary executables being used
+for syntax checking."
+  (let ((executable-var (flycheck-checker-executable-variable checker)))
+    `(progn
+       (defcustom ,executable-var nil
+         ,(format "The executable of the %s syntax checker.
+
+Either a string containing the name or the path of the
+executable, or nil to use the default executable from the syntax
+checker declaration.
+
+The default executable is %S." checker default-executable)
+         :type '(choice (const :tag "Default executable" nil)
+                        (string :tag "Name or path"))
+         :group 'flycheck-executables
+         :risky t))))
+
+(defun flycheck-set-checker-executable (checker &optional executable)
+  "Set the EXECUTABLE of CHECKER in the current buffer.
+
+CHECKER is a syntax checker symbol.  EXECUTABLE is a string with
+the name of a executable or the path to an executable file, which
+is to be used as executable for CHECKER.  If omitted or nil,
+reset the executable of CHECKER.
+
+Interactively, prompt for a syntax checker and an executable
+file, and set the executable of the selected syntax checker.
+With prefix arg, prompt for a syntax checker only, and reset the
+executable of the select checker to the default.
+
+Set the executable variable of CHECKER, that is,
+`flycheck-CHECKER-executable' to EXECUTABLE.  Signal
+`user-error', if EXECUTABLE does not denote a command or an
+executable file.
+
+This command is intended for interactive use only.  In Lisp, just
+`let'-bind the corresponding variable, or set it directly.  Use
+`flycheck-checker-executable-variable' to obtain the executable
+variable symbol for a syntax checker."
+  (interactive
+   (let* ((checker (read-flycheck-checker "Syntax checker: "))
+          (default-executable (flycheck-checker-default-executable checker))
+          (executable (if current-prefix-arg
+                          nil
+                        (read-file-name "Executable: " nil default-executable
+                                        nil nil #'executable-find))))
+     (list checker executable)))
+  (when (and executable (not (executable-find executable)))
+    (user-error "%s is no executable" executable))
+  (let ((variable (flycheck-checker-executable-variable checker)))
+    (set (make-local-variable variable) executable)))
+(put 'flycheck-set-checker-executable 'interactive-only
+     "Set the executable variable directly instead")
+
+\f
+;;; Configuration files and options for command checkers
+;;;###autoload
+(defmacro flycheck-def-config-file-var (symbol checker &optional file-name
+                                               &rest custom-args)
+  "Define SYMBOL as config file variable for CHECKER, with default FILE-NAME.
+
+SYMBOL is declared as customizable variable using `defcustom', to
+provide a configuration file for the given syntax CHECKER.
+CUSTOM-ARGS are forwarded to `defcustom'.
+
+FILE-NAME is the initial value of the new variable.  If omitted,
+the default value is nil.
+
+Use this together with the `config-file' form in the `:command'
+argument to `flycheck-define-checker'."
+  (declare (indent 3))
+  `(progn
+     (put ',checker 'flycheck-config-file-var ',symbol)
+     (defcustom ,symbol ,file-name
+       ,(format "Configuration file for `%s'.
+
+If set to a string, locate the configuration file using the
+functions from `flycheck-locate-config-file-functions'.  If the
+file is found pass it to the syntax checker as configuration
+file.
+
+If no configuration file is found, or if this variable is set to
+nil, invoke the syntax checker without a configuration file.
+
+Use this variable as file-local variable if you need a specific
+configuration file a buffer." checker)
+       :type '(choice (const :tag "No configuration file" nil)
+                      (string :tag "File name or path"))
+       :group 'flycheck-config-files
+       ,@custom-args)))
+
+(defun flycheck-checker-config-file-var (checker)
+  "Get the associated configuration file variable of CHECKER.
+
+Return nil if CHECKER has no associated configuration file
+variable."
+  (get checker 'flycheck-config-file-var))
+
+(defun flycheck-checker-option-vars (checker)
+  "Get the associated option variables of CHECKER.
+
+Return a (possibly empty) list of variable symbols."
+  (get checker 'flycheck-option-vars))
+
+(defun flycheck-locate-config-file (filename checker)
+  "Locate the configuration file FILENAME for CHECKER.
+
+Locate the configuration file using
+`flycheck-locate-config-file-functions'.
+
+Return the absolute path of the configuration file, or nil if no
+configuration file was found."
+  (-when-let (filepath (run-hook-with-args-until-success
+                        'flycheck-locate-config-file-functions
+                        filename checker))
+    (when (file-exists-p filepath)
+      filepath)))
+
+(defun flycheck-locate-config-file-absolute-path (filepath _checker)
+  "Locate a configuration file by a FILEPATH.
+
+If FILEPATH is a contains a path separator, expand it against the
+default directory and return it.  Otherwise return nil.
+
+_CHECKER is ignored."
+  ;; If the path is just a plain file name, skip it.
+  (unless (string= (file-name-nondirectory filepath) filepath)
+    (expand-file-name filepath)))
+
+(defun flycheck-locate-config-file-ancestor-directories (filename _checker)
+  "Locate a configuration FILENAME in ancestor directories.
+
+If the current buffer has a file name, search FILENAME in the
+directory of the current buffer and all ancestors thereof (see
+`locate-dominating-file').  If the file is found, return its
+absolute path.  Otherwise return nil.
+
+_CHECKER is ignored."
+  (-when-let* ((basefile (buffer-file-name))
+               (directory (locate-dominating-file basefile filename)))
+    (expand-file-name filename directory)))
+
+(defun flycheck-locate-config-file-home (filename _checker)
+  "Locate a configuration FILENAME in the home directory.
+
+Return the absolute path, if FILENAME exists in the user's home
+directory, or nil otherwise."
+  (let ((path (expand-file-name filename "~")))
+    (when (file-exists-p path)
+      path)))
+
+(mapc (apply-partially #'custom-add-frequent-value
+                       'flycheck-locate-config-file-functions)
+      '(flycheck-locate-config-file-absolute-path
+        flycheck-locate-config-file-ancestor-directories
+        flycheck-locate-config-file-home))
+
+;;;###autoload
+(defmacro flycheck-def-option-var (symbol init-value checker docstring
+                                          &rest custom-args)
+  "Define SYMBOL as option variable with INIT-VALUE for CHECKER.
+
+SYMBOL is declared as customizable variable using `defcustom', to
+provide an option for the given syntax CHECKER.  INIT-VALUE is
+the initial value of the variable, and DOCSTRING is its
+docstring.  CUSTOM-ARGS are forwarded to `defcustom'.
+
+Use this together with the `option', `option-list' and
+`option-flag' forms in the `:command' argument to
+`flycheck-define-checker'."
+  (declare (indent 3)
+           (doc-string 4))
+  `(progn
+     (let ((options (flycheck-checker-option-vars ',checker)))
+       (unless (memq ',symbol options)
+         (put ',checker 'flycheck-option-vars (cons ',symbol options))))
+     (defcustom ,symbol ,init-value
+       ,(format "%s
+
+This variable is an option for the syntax checker `%s'." docstring checker)
+       :group 'flycheck-options
+       ,@custom-args)))
+
+(defun flycheck-option-int (value)
+  "Convert an integral option VALUE to a string.
+
+If VALUE is nil, return nil.  Otherwise return VALUE converted to
+a string."
+  (when value
+    (number-to-string value)))
+
+(defun flycheck-option-comma-separated-list (value &optional separator filter)
+  "Convert VALUE into a list separated by SEPARATOR.
+
+SEPARATOR is a string to separate items in VALUE, defaulting to
+\",\".  FILTER is an optional function, which takes a single
+argument and returns either a string or nil.
+
+If VALUE is a list, apply FILTER to each item in VALUE, remove
+all nil items, and return a single string of all remaining items
+separated by SEPARATOR.
+
+Otherwise, apply FILTER to VALUE and return the result.
+SEPARATOR is ignored in this case."
+  (let ((filter (or filter #'identity))
+        (separator (or separator ",")))
+    (if (listp value)
+        (-when-let (value (delq nil (mapcar filter value)))
+          (string-join value separator))
+      (funcall filter value))))
+
+(defmacro flycheck-def-args-var (symbol checker &rest custom-args)
+  "Define SYMBOL as argument variable for CHECKER.
+
+SYMBOL is declared as customizable, risky and buffer-local
+variable using `defcustom' to provide an option for arbitrary
+arguments for the given syntax CHECKER.  CUSTOM-ARGS is forwarded
+to `defcustom'.
+
+Use the `eval' form to splice this variable into the
+`:command'."
+  (declare (indent 2))
+  `(flycheck-def-option-var ,symbol nil ,checker
+     ,(format "A list of additional arguments for `%s'.
+
+The value of this variable is a list of strings with additional
+command line arguments." checker)
+     :risky t
+     :type '(repeat (string :tag "Argument"))
+     ,@custom-args))
+
+\f
+;;; Command syntax checkers as compile commands
+(defun flycheck-checker-pattern-to-error-regexp (pattern)
+  "Convert PATTERN into an error regexp for compile.el.
+
+Return a list representing PATTERN, suitable as element in
+`compilation-error-regexp-alist'."
+  (let* ((regexp (car pattern))
+         (level (cdr pattern))
+         (level-no (pcase level
+                     (`error 2)
+                     (`warning 1))))
+    (list regexp 1 2 3 level-no)))
+
+(defun flycheck-checker-compilation-error-regexp-alist (checker)
+  "Convert error patterns of CHECKER for use with compile.el.
+
+Return an alist of all error patterns of CHECKER, suitable for
+use with `compilation-error-regexp-alist'."
+  (mapcar #'flycheck-checker-pattern-to-error-regexp
+          (flycheck-checker-error-patterns checker)))
+
+(defun flycheck-checker-shell-command (checker)
+  "Get a shell command for CHECKER.
+
+Perform substitution in the arguments of CHECKER, but with
+`flycheck-substitute-shell-argument'.
+
+Return the command of CHECKER as single string, suitable for
+shell execution."
+  ;; Note: Do NOT use `combine-and-quote-strings' here.  Despite it's name it
+  ;; does not properly quote shell arguments, and actually breaks for special
+  ;; characters.  See https://github.com/flycheck/flycheck/pull/522
+  (mapconcat
+   #'shell-quote-argument
+   (cons (flycheck-checker-executable checker)
+         (apply #'append
+                (mapcar (lambda (arg)
+                          (if (memq arg '(source source-inplace source-original))
+                              (list (or (buffer-file-name) ""))
+                            (flycheck-substitute-argument arg checker)))
+                        (flycheck-checker-arguments checker)))) " "))
+
+(defun flycheck-compile-name (_name)
+  "Get a name for a Flycheck compilation buffer.
+
+_NAME is ignored."
+  (format "*Flycheck %s*" (buffer-file-name)))
+
+(defun flycheck-compile (checker)
+  "Run CHECKER via `compile'.
+
+CHECKER must be a valid syntax checker.  Interactively, prompt
+for a syntax checker to run.
+
+Instead of highlighting errors in the buffer, this command pops
+up a separate buffer with the entire output of the syntax checker
+tool, just like `compile' (\\[compile])."
+  (interactive
+   (let ((default (or flycheck-checker flycheck-last-checker)))
+     (list (read-flycheck-checker "Run syntax checker as compile command: "
+                                  (when (get default 'flycheck-command) default)
+                                  'flycheck-command))))
+  (unless (flycheck-valid-checker-p checker)
+    (user-error "%S is not a valid syntax checker" checker))
+  (unless (buffer-file-name)
+    (user-error "Cannot compile buffers without backing file"))
+  (unless (flycheck-may-use-checker checker)
+    (user-error "Cannot use syntax checker %S in this buffer" checker))
+  (unless (flycheck-checker-executable checker)
+    (user-error "Cannot run checker %S as shell command" checker))
+  (let* ((command (flycheck-checker-shell-command checker))
+         (buffer (compilation-start command nil #'flycheck-compile-name)))
+    (with-current-buffer buffer
+      (set (make-local-variable 'compilation-error-regexp-alist)
+           (flycheck-checker-compilation-error-regexp-alist checker)))))
+
+\f
+;;; General error parsing for command checkers
+(defun flycheck-parse-output (output checker buffer)
+  "Parse OUTPUT from CHECKER in BUFFER.
+
+OUTPUT is a string with the output from the checker symbol
+CHECKER.  BUFFER is the buffer which was checked.
+
+Return the errors parsed with the error patterns of CHECKER."
+  (funcall (flycheck-checker-error-parser checker) output checker buffer))
+
+(defun flycheck-fix-error-filename (err buffer-files)
+  "Fix the file name of ERR from BUFFER-FILES.
+
+Make the file name of ERR absolute.  If the absolute file name of
+ERR is in BUFFER-FILES, replace it with the return value of the
+function `buffer-file-name'."
+  (flycheck-error-with-buffer err
+    (-when-let (filename (flycheck-error-filename err))
+      (setq filename (expand-file-name filename))
+      (when (-any? (apply-partially #'flycheck-same-files-p filename)
+                   buffer-files)
+        (setq filename (buffer-file-name)))
+      (setf (flycheck-error-filename err) filename)))
+  err)
+
+\f
+;;; Error parsers for command syntax checkers
+(defun flycheck-parse-xml-region (beg end)
+  "Parse the xml region between BEG and END.
+
+Wrapper around `xml-parse-region' which transforms the return
+value of this function into one compatible to
+`libxml-parse-xml-region' by simply returning the first element
+from the node list."
+  (car (xml-parse-region beg end)))
+
+(defvar flycheck-xml-parser
+  (if (fboundp 'libxml-parse-xml-region)
+      'libxml-parse-xml-region 'flycheck-parse-xml-region)
+  "Parse an xml string from a region.
+
+Use libxml if Emacs is built with libxml support.  Otherwise fall
+back to `xml-parse-region', via `flycheck-parse-xml-region'.")
+
+(defun flycheck-parse-xml-string (xml)
+  "Parse an XML string.
+
+Return the document tree parsed from XML in the form `(ROOT ATTRS
+BODY...)'.  ROOT is a symbol identifying the name of the root
+element.  ATTRS is an alist of the attributes of the root node.
+BODY is zero or more body elements, either as strings (in case of
+text nodes) or as XML nodes, in the same for as the root node."
+  (with-temp-buffer
+    (insert xml)
+    (funcall flycheck-xml-parser (point-min) (point-max))))
+
+(defun flycheck-parse-checkstyle (output checker buffer)
+  "Parse Checkstyle errors from OUTPUT.
+
+Parse Checkstyle-like XML output.  Use this error parser for
+checkers that have an option to output errors in this format.
+
+See URL `http://checkstyle.sourceforge.net/' for information
+about Checkstyle."
+  (pcase (flycheck-parse-xml-string output)
+    (`(checkstyle ,_ . ,file-nodes)
+     (let (errors)
+       (dolist (node file-nodes)
+         (pcase node
+           (`(file ,file-attrs . ,error-nodes)
+            (dolist (node error-nodes)
+              (pcase node
+                (`(error ,error-attrs . ,_)
+                 (let-alist error-attrs
+                   (push (flycheck-error-new-at
+                          (flycheck-string-to-number-safe .line)
+                          (flycheck-string-to-number-safe .column)
+                          (pcase .severity
+                            (`"error"   'error)
+                            (`"warning" 'warning)
+                            (`"info"    'info)
+                            ;; Default to error for unknown .severity
+                            (_          'error))
+                          .message
+                          :checker checker :id .source
+                          :buffer buffer
+                          :filename (cdr (assq 'name file-attrs)))
+                         errors))))))))
+       (nreverse errors)))))
+
+(defun flycheck-parse-cppcheck (output checker buffer)
+  "Parse Cppcheck errors from OUTPUT.
+
+Parse Cppcheck XML v2 output.
+
+See URL `http://cppcheck.sourceforge.net/' for more information
+about Cppcheck."
+  (pcase (flycheck-parse-xml-string output)
+    (`(results ,_ . ,body)
+     (let (errors)
+       (dolist (node body)
+         (pcase node
+           (`(errors ,_ . ,error-nodes)
+            (dolist (node error-nodes)
+              (pcase node
+                (`(error ,error-attrs . ,loc-nodes)
+                 (let ((id (cdr (assq 'id error-attrs)))
+                       (message (cdr (assq 'verbose error-attrs)))
+                       (level (pcase (cdr (assq 'severity error-attrs))
+                                (`"error" 'error)
+                                (`"style" 'info)
+                                (`"information" 'info)
+                                (_ 'warning))))
+                   (dolist (node loc-nodes)
+                     (pcase node
+                       (`(location ,loc-attrs . ,_)
+                        (let-alist loc-attrs
+                          (push (flycheck-error-new-at
+                                 (flycheck-string-to-number-safe .line)
+                                 nil
+                                 level message
+                                 :id id
+                                 :checker checker
+                                 :buffer buffer
+                                 :filename .file)
+                                errors))))))))))))
+       (nreverse errors)))))
+
+(defun flycheck-parse-phpmd (output checker buffer)
+  "Parse phpmd errors from OUTPUT.
+
+See URL `http://phpmd.org/' for more information about phpmd."
+  (pcase (flycheck-parse-xml-string output)
+    (`(pmd ,_ . ,body)
+     (let (errors)
+       (dolist (node body)
+         (pcase node
+           (`(file ,file-attrs . ,violation-nodes)
+            (let ((filename (cdr (assq 'name file-attrs))))
+              (dolist (node violation-nodes)
+                (pcase node
+                  (`(violation ,vio-attrs ,(and message (pred stringp)))
+                   (let-alist vio-attrs
+                     ;; TODO: Map priority to an error level?
+                     ;; TODO: Respect endline
+                     (push
+                      (flycheck-error-new-at
+                       (flycheck-string-to-number-safe .beginline)
+                       nil
+                       'warning (string-trim message)
+                       :id .rule
+                       :checker checker
+                       :buffer buffer
+                       :filename filename)
+                      errors)))))))))
+       (nreverse errors)))))
+
+\f
+;;; Error parsing with regular expressions
+(defun flycheck-get-regexp (patterns)
+  "Create a single regular expression from PATTERNS."
+  (rx-to-string `(or ,@(mapcar (lambda (p) (list 'regexp (car p))) patterns))
+                'no-group))
+
+(defun flycheck-tokenize-output-with-patterns (output patterns)
+  "Tokenize OUTPUT with PATTERNS.
+
+Split the output into error tokens, using all regular expressions
+from the error PATTERNS.  An error token is simply a string
+containing a single error from OUTPUT.  Such a token can then be
+parsed into a structured error by applying the PATTERNS again,
+see `flycheck-parse-errors-with-patterns'.
+
+Return a list of error tokens."
+  (let ((regexp (flycheck-get-regexp patterns))
+        (last-match 0)
+        errors)
+    (while (string-match regexp output last-match)
+      (push (match-string 0 output) errors)
+      (setq last-match (match-end 0)))
+    (reverse errors)))
+
+(defun flycheck-try-parse-error-with-pattern (err pattern checker)
+  "Try to parse a single ERR with a PATTERN for CHECKER.
+
+Return the parsed error if PATTERN matched ERR, or nil
+otherwise."
+  (let ((regexp (car pattern))
+        (level (cdr pattern)))
+    (when (string-match regexp err)
+      (let ((filename (match-string 1 err))
+            (line (match-string 2 err))
+            (column (match-string 3 err))
+            (message (match-string 4 err))
+            (id (match-string 5 err)))
+        (flycheck-error-new-at
+         (flycheck-string-to-number-safe line)
+         (flycheck-string-to-number-safe column)
+         level
+         (unless (string-empty-p message) message)
+         :id (unless (string-empty-p id) id)
+         :checker checker
+         :filename (if (or (null filename) (string-empty-p filename))
+                       (buffer-file-name)
+                     filename))))))
+
+(defun flycheck-parse-error-with-patterns (err patterns checker)
+  "Parse a single ERR with error PATTERNS for CHECKER.
+
+Apply each pattern in PATTERNS to ERR, in the given order, and
+return the first parsed error."
+  ;; Try to parse patterns in the order of declaration to make sure that the
+  ;; first match wins.
+  (let (parsed-error)
+    (while (and patterns
+                (not (setq parsed-error
+                           (flycheck-try-parse-error-with-pattern
+                            err (car patterns) checker))))
+      (setq patterns (cdr patterns)))
+    parsed-error))
+
+(defun flycheck-parse-with-patterns (output checker buffer)
+  "Parse OUTPUT from CHECKER with error patterns.
+
+Uses the error patterns of CHECKER to tokenize the output and
+tries to parse each error token with all patterns, in the order
+of declaration.  Hence an error is never matched twice by two
+different patterns.  The pattern declared first always wins.
+
+_BUFFER is ignored.
+
+Return a list of parsed errors and warnings (as `flycheck-error'
+objects)."
+  (with-current-buffer buffer
+    (let ((patterns (flycheck-checker-error-patterns checker)))
+      (mapcar (lambda (err)
+                (flycheck-parse-error-with-patterns err patterns checker))
+              (flycheck-tokenize-output-with-patterns output patterns)))))
+
+\f
+;;; Convenience definition of command-syntax checkers
+(defmacro flycheck-define-checker (symbol docstring &rest properties)
+  "Define SYMBOL as command syntax checker with DOCSTRING and PROPERTIES.
+
+Like `flycheck-define-command-checker', but PROPERTIES must not
+be quoted.  Also, implicitly define the executable variable for
+SYMBOL with `flycheck-def-executable-var'."
+  (declare (indent 1)
+           (doc-string 2))
+  (let ((command (plist-get properties :command))
+        (parser (plist-get properties :error-parser))
+        (filter (plist-get properties :error-filter))
+        (predicate (plist-get properties :predicate)))
+
+    `(progn
+       (flycheck-def-executable-var ,symbol ,(car command))
+
+       (flycheck-define-command-checker ',symbol
+         ,docstring
+         :command ',command
+         ,@(when parser
+             `(:error-parser #',parser))
+         :error-patterns ',(plist-get properties :error-patterns)
+         ,@(when filter
+             `(:error-filter #',filter))
+         :modes ',(plist-get properties :modes)
+         ,@(when predicate
+             `(:predicate #',predicate))
+         :next-checkers ',(plist-get properties :next-checkers)))))
+
+\f
+;;; Built-in checkers
+(flycheck-def-args-var flycheck-gnat-args ada-gnat
+  :package-version '(flycheck . "0.20"))
+
+(flycheck-def-option-var flycheck-gnat-include-path nil ada-gnat
+  "A list of include directories for GNAT.
+
+The value of this variable is a list of strings, where each
+string is a directory to add to the include path of gcc.
+Relative paths are relative to the file being checked."
+  :type '(repeat (directory :tag "Include directory"))
+  :safe #'flycheck-string-list-p
+  :package-version '(flycheck . "0.20"))
+
+(flycheck-def-option-var flycheck-gnat-language-standard "2012" ada-gnat
+  "The language standard to use in GNAT.
+
+The value of this variable is either a string denoting a language
+standard, or nil, to use the default standard. When non-nil, pass
+the language standard via the `-std' option."
+  :type '(choice (const :tag "Default standard" nil)
+                 (string :tag "Language standard"))
+  :safe #'stringp
+  :package-version '(flycheck . "0.20"))
+
+(flycheck-def-option-var flycheck-gnat-warnings
+    '("wa") ada-gnat
+  "A list of additional Ada warnings to enable in GNAT.
+
+The value of this variable is a list of strings, where each
+string is the name of a warning category to enable. By default,
+most optional warnings are recommended, as in `-gnata'.
+
+Refer to Info Node `(gnat_ugn_unw)Warning Message Control' for
+more information about GNAT warnings."
+  :type '(repeat :tag "Warnings" (string :tag "Warning name"))
+  :safe #'flycheck-string-list-p
+  :package-version '(flycheck . "0.20"))
+
+(flycheck-define-checker ada-gnat
+  "An Ada syntax checker using GNAT.
+
+Uses the GNAT compiler from GCC.  See URL
+`https://gcc.gnu.org/onlinedocs/gnat_ugn_unw/'."
+  :command ("gnatmake"
+            "-c"                        ; Just compile, don't bind
+            "-f"                        ; Force re-compilation
+            "-u"                        ; Compile the main file only
+            "-gnatf"                    ; Full error information
+            "-gnatef"                   ; Full source file name
+            "-D" temporary-directory
+            (option-list "-gnat" flycheck-gnat-warnings concat)
+            (option-list "-I" flycheck-gnat-include-path concat)
+            (option "-gnat" flycheck-gnat-language-standard concat)
+            (eval flycheck-gnat-args)
+            source)
+  :error-patterns
+  ((error line-start
+          (message "In file included from") " " (file-name) ":" line ":"
+          column ":"
+          line-end)
+   (info line-start (file-name) ":" line ":" column
+         ": note: " (message) line-end)
+   (warning line-start (file-name) ":" line ":" column
+            ": warning: " (message) line-end)
+   (error line-start (file-name) ":" line ":" column ;no specific error prefix in Ada
+          ": " (message) line-end))
+  :modes ada-mode)
+
+(flycheck-define-checker asciidoc
+  "A AsciiDoc syntax checker using the AsciiDoc compiler.
+
+See URL `http://www.methods.co.nz/asciidoc'."
+  :command ("asciidoc" source)
+  :error-patterns
+  ((error line-start "asciidoc: ERROR: " (file-name)
+          ": Line " line ": " (message) line-end)
+   (warning line-start "asciidoc: " (or "WARNING" "DEPRECATED") ": " (file-name)
+            ": Line " line ": " (message) line-end))
+  :modes adoc-mode)
+
+(flycheck-def-args-var flycheck-clang-args c/c++-clang
+  :package-version '(flycheck . "0.22"))
+
+(flycheck-def-option-var flycheck-clang-blocks nil c/c++-clang
+  "Enable blocks in Clang.
+
+When non-nil, enable blocks in Clang with `-fblocks'.  See URL
+`http://clang.llvm.org/docs/BlockLanguageSpec.html' for more
+information about blocks."
+  :type 'boolean
+  :safe #'booleanp
+  :package-version '(flycheck . "0.20"))
+
+(flycheck-def-option-var flycheck-clang-definitions nil c/c++-clang
+  "Additional preprocessor definitions for Clang.
+
+The value of this variable is a list of strings, where each
+string is an additional definition to pass to Clang, via the `-D'
+option."
+  :type '(repeat (string :tag "Definition"))
+  :safe #'flycheck-string-list-p
+  :package-version '(flycheck . "0.15"))
+
+(flycheck-def-option-var flycheck-clang-include-path nil c/c++-clang
+  "A list of include directories for Clang.
+
+The value of this variable is a list of strings, where each
+string is a directory to add to the include path of Clang.
+Relative paths are relative to the file being checked."
+  :type '(repeat (directory :tag "Include directory"))
+  :safe #'flycheck-string-list-p
+  :package-version '(flycheck . "0.14"))
+
+(flycheck-def-option-var flycheck-clang-includes nil c/c++-clang
+  "A list of additional include files for Clang.
+
+The value of this variable is a list of strings, where each
+string is a file to include before syntax checking.  Relative
+paths are relative to the file being checked."
+  :type '(repeat (file :tag "Include file"))
+  :safe #'flycheck-string-list-p
+  :package-version '(flycheck . "0.15"))
+
+(flycheck-def-option-var flycheck-clang-language-standard nil c/c++-clang
+  "The language standard to use in Clang.
+
+The value of this variable is either a string denoting a language
+standard, or nil, to use the default standard.  When non-nil,
+pass the language standard via the `-std' option."
+  :type '(choice (const :tag "Default standard" nil)
+                 (string :tag "Language standard"))
+  :safe #'stringp
+  :package-version '(flycheck . "0.15"))
+(make-variable-buffer-local 'flycheck-clang-language-standard)
+
+(flycheck-def-option-var flycheck-clang-ms-extensions nil c/c++-clang
+  "Whether to enable Microsoft extensions to C/C++ in Clang.
+
+When non-nil, enable Microsoft extensions to C/C++ via
+`-fms-extensions'."
+  :type 'boolean
+  :safe #'booleanp
+  :package-version '(flycheck . "0.16"))
+
+(flycheck-def-option-var flycheck-clang-no-exceptions nil c/c++-clang
+  "Whether to disable exceptions in Clang.
+
+When non-nil, disable exceptions for syntax checks, via
+`-fno-exceptions'."
+  :type 'boolean
+  :safe #'booleanp
+  :package-version '(flycheck . "0.20"))
+
+(flycheck-def-option-var flycheck-clang-no-rtti nil c/c++-clang
+  "Whether to disable RTTI in Clang.
+
+When non-nil, disable RTTI for syntax checks, via `-fno-rtti'."
+  :type 'boolean
+  :safe #'booleanp
+  :package-version '(flycheck . "0.15"))
+
+(flycheck-def-option-var flycheck-clang-standard-library nil c/c++-clang
+  "The standard library to use for Clang.
+
+The value of this variable is the name of a standard library as
+string, or nil to use the default standard library.
+
+Refer to the Clang manual at URL
+`http://clang.llvm.org/docs/UsersManual.html' for more
+information about the standard library."
+  :type '(choice (const "libc++")
+                 (const :tag "GNU libstdc++" "libstdc++")
+                 (string :tag "Library name"))
+  :safe #'stringp
+  :package-version '(flycheck . "0.15"))
+
+(flycheck-def-option-var flycheck-clang-warnings '("all" "extra") c/c++-clang
+  "A list of additional warnings to enable in Clang.
+
+The value of this variable is a list of strings, where each string
+is the name of a warning category to enable.  By default, all
+recommended warnings and some extra warnings are enabled (as by
+`-Wall' and `-Wextra' respectively).
+
+Refer to the Clang manual at URL
+`http://clang.llvm.org/docs/UsersManual.html' for more
+information about warnings."
+  :type '(choice (const :tag "No additional warnings" nil)
+                 (repeat :tag "Additional warnings"
+                         (string :tag "Warning name")))
+  :safe #'flycheck-string-list-p
+  :package-version '(flycheck . "0.14"))
+
+(defun flycheck-c/c++-quoted-include-directory ()
+  "Get the directory for quoted includes.
+
+C/C++ compiles typicall look up includes with quotation marks in
+the directory of the file being compiled.  However, since
+Flycheck uses temporary copies for syntax checking, it needs to
+explicitly determine the directory for quoted includes.
+
+This function determines the directory by looking at
+`buffer-file-name', or if that is nil, at `default-directory'."
+  (-if-let (fn (buffer-file-name))
+      (file-name-directory fn)
+    ;; If the buffer has no file name, fall back to its default directory
+    default-directory))
+
+(flycheck-define-checker c/c++-clang
+  "A C/C++ syntax checker using Clang.
+
+See URL `http://clang.llvm.org/'."
+  :command ("clang"
+            "-fsyntax-only"
+            "-fno-color-diagnostics"    ; Do not include color codes in output
+            "-fno-caret-diagnostics"    ; Do not visually indicate the source
+                                        ; location
+            "-fno-diagnostics-show-option" ; Do not show the corresponding
+                                        ; warning group
+            "-iquote" (eval (flycheck-c/c++-quoted-include-directory))
+            (option "-std=" flycheck-clang-language-standard concat)
+            (option "-stdlib=" flycheck-clang-standard-library concat)
+            (option-flag "-fms-extensions" flycheck-clang-ms-extensions)
+            (option-flag "-fno-exceptions" flycheck-clang-no-exceptions)
+            (option-flag "-fno-rtti" flycheck-clang-no-rtti)
+            (option-flag "-fblocks" flycheck-clang-blocks)
+            (option-list "-include" flycheck-clang-includes)
+            (option-list "-W" flycheck-clang-warnings concat)
+            (option-list "-D" flycheck-clang-definitions concat)
+            (option-list "-I" flycheck-clang-include-path)
+            (eval flycheck-clang-args)
+            "-x" (eval
+                  (pcase major-mode
+                    (`c++-mode "c++")
+                    (`c-mode "c")))
+            source)
+  :error-patterns
+  ((error line-start
+          (message "In file included from") " " (file-name) ":" line ":"
+          line-end)
+   (info line-start (file-name) ":" line ":" column
+         ": note: " (optional (message)) line-end)
+   (warning line-start (file-name) ":" line ":" column
+            ": warning: " (optional (message)) line-end)
+   (error line-start (file-name) ":" line ":" column
+          ": " (or "fatal error" "error") ": " (optional (message)) line-end))
+  :error-filter
+  (lambda (errors)
+    (let ((errors (flycheck-sanitize-errors errors)))
+      (dolist (err errors)
+        ;; Clang will output empty messages for #error/#warning pragmas without
+        ;; messages.  We fill these empty errors with a dummy message to get
+        ;; them past our error filtering
+        (setf (flycheck-error-message err)
+              (or (flycheck-error-message err) "no message")))
+      (flycheck-fold-include-levels errors "In file included from")))
+  :modes (c-mode c++-mode)
+  :next-checkers ((warning . c/c++-cppcheck)))
+
+(flycheck-def-args-var flycheck-gcc-args c/c++-gcc
+  :package-version '(flycheck . "0.22"))
+
+(flycheck-def-option-var flycheck-gcc-definitions nil c/c++-gcc
+  "Additional preprocessor definitions for GCC.
+
+The value of this variable is a list of strings, where each
+string is an additional definition to pass to GCC, via the `-D'
+option."
+  :type '(repeat (string :tag "Definition"))
+  :safe #'flycheck-string-list-p
+  :package-version '(flycheck . "0.20"))
+
+(flycheck-def-option-var flycheck-gcc-include-path nil c/c++-gcc
+  "A list of include directories for GCC.
+
+The value of this variable is a list of strings, where each
+string is a directory to add to the include path of gcc.
+Relative paths are relative to the file being checked."
+  :type '(repeat (directory :tag "Include directory"))
+  :safe #'flycheck-string-list-p
+  :package-version '(flycheck . "0.20"))
+
+(flycheck-def-option-var flycheck-gcc-includes nil c/c++-gcc
+  "A list of additional include files for GCC.
+
+The value of this variable is a list of strings, where each
+string is a file to include before syntax checking.  Relative
+paths are relative to the file being checked."
+  :type '(repeat (file :tag "Include file"))
+  :safe #'flycheck-string-list-p
+  :package-version '(flycheck . "0.20"))
+
+(flycheck-def-option-var flycheck-gcc-language-standard nil c/c++-gcc
+  "The language standard to use in GCC.
+
+The value of this variable is either a string denoting a language
+standard, or nil, to use the default standard.  When non-nil,
+pass the language standard via the `-std' option."
+  :type '(choice (const :tag "Default standard" nil)
+                 (string :tag "Language standard"))
+  :safe #'stringp
+  :package-version '(flycheck . "0.20"))
+(make-variable-buffer-local 'flycheck-gcc-language-standard)
+
+(flycheck-def-option-var flycheck-gcc-no-exceptions nil c/c++-gcc
+  "Whether to disable exceptions in GCC.
+
+When non-nil, disable exceptions for syntax checks, via
+`-fno-exceptions'."
+  :type 'boolean
+  :safe #'booleanp
+  :package-version '(flycheck . "0.20"))
+
+(flycheck-def-option-var flycheck-gcc-no-rtti nil c/c++-gcc
+  "Whether to disable RTTI in GCC.
+
+When non-nil, disable RTTI for syntax checks, via `-fno-rtti'."
+  :type 'boolean
+  :safe #'booleanp
+  :package-version '(flycheck . "0.20"))
+
+(flycheck-def-option-var flycheck-gcc-openmp nil c/c++-gcc
+  "Whether to enable OpenMP in GCC.
+
+When non-nil, enable OpenMP for syntax checkers, via
+`-fopenmp'."
+  :type 'boolean
+  :safe #'booleanp
+  :package-version '(flycheck . "0.21"))
+
+(flycheck-def-option-var flycheck-gcc-warnings '("all" "extra") c/c++-gcc
+  "A list of additional warnings to enable in GCC.
+
+The value of this variable is a list of strings, where each string
+is the name of a warning category to enable.  By default, all
+recommended warnings and some extra warnings are enabled (as by
+`-Wall' and `-Wextra' respectively).
+
+Refer to the gcc manual at URL
+`https://gcc.gnu.org/onlinedocs/gcc/' for more information about
+warnings."
+  :type '(choice (const :tag "No additional warnings" nil)
+                 (repeat :tag "Additional warnings"
+                         (string :tag "Warning name")))
+  :safe #'flycheck-string-list-p
+  :package-version '(flycheck . "0.20"))
+
+(flycheck-define-checker c/c++-gcc
+  "A C/C++ syntax checker using GCC.
+
+Requires GCC 4.8 or newer.  See URL `https://gcc.gnu.org/'."
+  :command ("gcc"
+            "-fshow-column"
+            "-fno-diagnostics-show-caret" ; Do not visually indicate the source location
+            "-fno-diagnostics-show-option" ; Do not show the corresponding
+                                        ; warning group
+            "-iquote" (eval (flycheck-c/c++-quoted-include-directory))
+            (option "-std=" flycheck-gcc-language-standard concat)
+            (option-flag "-fno-exceptions" flycheck-gcc-no-exceptions)
+            (option-flag "-fno-rtti" flycheck-gcc-no-rtti)
+            (option-flag "-fopenmp" flycheck-gcc-openmp)
+            (option-list "-include" flycheck-gcc-includes)
+            (option-list "-W" flycheck-gcc-warnings concat)
+            (option-list "-D" flycheck-gcc-definitions concat)
+            (option-list "-I" flycheck-gcc-include-path)
+            (eval flycheck-gcc-args)
+            "-x" (eval
+                  (pcase major-mode
+                    (`c++-mode "c++")
+                    (`c-mode "c")))
+            source
+            ;; GCC performs full checking only when actually compiling, so
+            ;; `-fsyntax-only' is not enough. Just let it generate assembly
+            ;; code.
+            "-S" "-o" null-device)
+  :error-patterns
+  ((error line-start
+          (message "In file included from") " " (file-name) ":" line ":"
+          column ":"
+          line-end)
+   (info line-start (file-name) ":" line ":" column
+         ": note: " (message) line-end)
+   (warning line-start (file-name) ":" line ":" column
+            ": warning: " (message) line-end)
+   (error line-start (file-name) ":" line ":" column
+          ": " (or "fatal error" "error") ": " (message) line-end))
+  :error-filter
+  (lambda (errors)
+    (flycheck-fold-include-levels (flycheck-sanitize-errors errors)
+                                  "In file included from"))
+  :modes (c-mode c++-mode)
+  :next-checkers ((warning . c/c++-cppcheck)))
+
+(flycheck-def-option-var flycheck-cppcheck-checks '("style") c/c++-cppcheck
+  "Enabled checks for Cppcheck.
+
+The value of this variable is a list of strings, where each
+string is the name of an additional check to enable.  By default,
+all coding style checks are enabled.
+
+See section \"Enable message\" in the Cppcheck manual at URL
+`http://cppcheck.sourceforge.net/manual.pdf', and the
+documentation of the `--enable' option for more information,
+including a list of supported checks."
+  :type '(repeat :tag "Additional checks"
+                 (string :tag "Check name"))
+  :safe #'flycheck-string-list-p
+  :package-version '(flycheck . "0.14"))
+
+(flycheck-def-option-var flycheck-cppcheck-inconclusive nil c/c++-cppcheck
+  "Whether to enable Cppcheck inconclusive checks.
+
+When non-nil, enable Cppcheck inconclusive checks.  This allows Cppcheck to
+report warnings it's not certain of, but it may result in false positives.
+
+This will have no effect when using Cppcheck 1.53 and older."
+  :type 'boolean
+  :safe #'booleanp
+  :package-version '(flycheck . "0.19"))
+
+(flycheck-define-checker c/c++-cppcheck
+  "A C/C++ checker using cppcheck.
+
+See URL `http://cppcheck.sourceforge.net/'."
+  :command ("cppcheck" "--quiet" "--xml-version=2" "--inline-suppr"
+            (option "--enable=" flycheck-cppcheck-checks concat
+                    flycheck-option-comma-separated-list)
+            (option-flag "--inconclusive" flycheck-cppcheck-inconclusive)
+            source)
+  :error-parser flycheck-parse-cppcheck
+  :modes (c-mode c++-mode))
+
+(flycheck-define-checker cfengine
+  "A CFEngine syntax checker using cf-promises.
+
+See URL `http://cfengine.com/'."
+  :command ("cf-promises" "-Wall" "-f"
+            ;; We must stay in the same directory to resolve @include
+            source-inplace)
+  :error-patterns
+  ((warning line-start (file-name) ":" line ":" column
+            ": warning: " (message) line-end)
+   (error line-start (file-name) ":" line ":" column
+          ": error: " (message) line-end))
+  :modes (cfengine-mode cfengine3-mode))
+
+(flycheck-define-checker chef-foodcritic
+  "A Chef cookbooks syntax checker using Foodcritic.
+
+See URL `http://acrmp.github.io/foodcritic/'."
+  ;; Use `source-inplace' to allow resource discovery with relative paths.
+  ;; foodcritic interprets these as relative to the source file, so we need to
+  ;; stay within the source tree.  See
+  ;; https://github.com/flycheck/flycheck/pull/556
+  :command ("foodcritic" source-inplace)
+  :error-patterns
+  ((error line-start (message) ": " (file-name) ":" line line-end))
+  :modes (enh-ruby-mode ruby-mode)
+  :predicate
+  (lambda ()
+    (let ((parent-dir (file-name-directory
+                       (directory-file-name
+                        (expand-file-name default-directory)))))
+      (or
+       ;; Chef CookBook
+       ;; http://docs.opscode.com/chef/knife.html#id38
+       (locate-dominating-file parent-dir "recipes")
+       ;; Knife Solo
+       ;; http://matschaffer.github.io/knife-solo/#label-Init+command
+       (locate-dominating-file parent-dir "cookbooks")))))
+
+(flycheck-define-checker coffee
+  "A CoffeeScript syntax checker using coffee.
+
+See URL `http://coffeescript.org/'."
+  ;; --print suppresses generation of compiled .js files
+  :command ("coffee" "--compile" "--print" source)
+  :error-patterns
+  ((error line-start (file-name) ":" line ":" column
+          ": error: " (message) line-end))
+  :modes coffee-mode
+  :next-checkers ((warning . coffee-coffeelint)))
+
+(flycheck-def-config-file-var flycheck-coffeelintrc coffee-coffeelint
+                              ".coffeelint.json"
+  :safe #'stringp)
+
+(flycheck-define-checker coffee-coffeelint
+  "A CoffeeScript style checker using coffeelint.
+
+This syntax checker requires coffeelint 1.0 or newer.
+
+See URL `http://www.coffeelint.org/'."
+  :command
+  ("coffeelint"
+   (config-file "--file" flycheck-coffeelintrc)
+   "--reporter" "checkstyle" source)
+  :error-parser flycheck-parse-checkstyle
+  :error-filter (lambda (errors)
+                  (flycheck-remove-error-ids
+                   (flycheck-sanitize-errors errors)))
+  :modes coffee-mode)
+
+(flycheck-define-checker coq
+  "A Coq syntax checker using the Coq compiler.
+
+See URL `http://coq.inria.fr/'."
+  ;; We use coqtop in batch mode, because coqc is picky about file names.
+  :command ("coqtop" "-batch" "-load-vernac-source" source)
+  :error-patterns
+  ((error line-start "File \"" (file-name) "\", line " line
+          ;; TODO: Parse the end column, once Flycheck supports that
+          ", characters " column "-" (one-or-more digit) ":\n"
+          (or "Syntax error: " "Error: ")
+          ;; Most Coq error messages span multiple lines, and end with a dot.
+          ;; There are simple one-line messages, too, though.
+          (message (or (and (one-or-more (or not-newline "\n")) ".")
+                       (one-or-more not-newline)))
+          line-end))
+  :error-filter
+  (lambda (errors)
+    (dolist (err errors)
+      (setf (flycheck-error-message err)
+            (replace-regexp-in-string (rx (1+ (syntax whitespace)) line-end)
+                                      "" (flycheck-error-message err)
+                                      'fixedcase 'literal)))
+    (flycheck-increment-error-columns errors))
+  :modes coq-mode)
+
+(flycheck-define-checker css-csslint
+  "A CSS syntax and style checker using csslint.
+
+See URL `https://github.com/CSSLint/csslint'."
+  :command ("csslint" "--format=checkstyle-xml" source)
+  :error-parser flycheck-parse-checkstyle
+  :error-filter flycheck-dequalify-error-ids
+  :modes css-mode)
+
+(defconst flycheck-d-module-re
+  (rx "module" (one-or-more (syntax whitespace))
+      (group (one-or-more (not (syntax whitespace))))
+      (zero-or-more (syntax whitespace))
+      ";")
+  "Regular expression to match a D module declaration.")
+
+(defun flycheck-d-base-directory ()
+  "Get the relative base directory path for this module."
+  (let* ((file-name (buffer-file-name))
+         (module-file (if (string= (file-name-nondirectory file-name)
+                                   "package.d")
+                          (directory-file-name (file-name-directory file-name))
+                        file-name)))
+    (flycheck-module-root-directory
+     (flycheck-find-in-buffer flycheck-d-module-re)
+     module-file)))
+
+(flycheck-def-option-var flycheck-dmd-include-path nil d-dmd
+  "A list of include directories for dmd.
+
+The value of this variable is a list of strings, where each
+string is a directory to add to the include path of dmd.
+Relative paths are relative to the file being checked."
+  :type '(repeat (directory :tag "Include directory"))
+  :safe #'flycheck-string-list-p
+  :package-version '(flycheck . "0.18"))
+
+(flycheck-define-checker d-dmd
+  "A D syntax checker using the DMD compiler.
+
+Requires DMD 2.066 or newer.  See URL `http://dlang.org/'."
+  :command ("dmd"
+            "-debug"                    ; Compile in debug mode
+            "-o-"                       ; Don't generate an object file
+            "-vcolumns"                 ; Add columns in output
+            "-wi" ; Compilation will continue even if there are warnings
+            (eval (concat "-I" (flycheck-d-base-directory)))
+            (option-list "-I" flycheck-dmd-include-path concat)
+            source)
+  :error-patterns
+  ((error line-start
+          (file-name) "(" line "," column "): Error: " (message)
+          line-end)
+   (warning line-start (file-name) "(" line "," column "): "
+            (or "Warning" "Deprecation") ": " (message) line-end))
+  :modes d-mode)
+
+(flycheck-define-checker elixir
+  "An Elixir syntax checker using the Elixir interpreter.
+
+See URL `http://elixir-lang.org/'."
+  :command ("elixirc"
+            "-o" temporary-directory    ; Move compiler output out of the way
+            "--ignore-module-conflict"  ; Prevent tedious module redefinition
+                                        ; warning.
+            source)
+  :error-patterns
+  ;; Elixir compiler errors
+  ((error line-start "** (" (zero-or-more not-newline) ") "
+          (file-name) ":" line ": " (message) line-end)
+   ;; Warnings from Elixir >= 0.12.4
+   (warning line-start (file-name) ":" line ": warning:" (message) line-end)
+   ;; Warnings from older Elixir versions
+   (warning line-start (file-name) ":" line ": " (message) line-end))
+  :modes elixir-mode)
+
+(defconst flycheck-this-emacs-executable
+  (concat invocation-directory invocation-name)
+  "The path to the currently running Emacs executable.")
+
+(defconst flycheck-emacs-args '("-Q" "--batch")
+  "Common arguments to Emacs invocations.")
+
+(defmacro flycheck-prepare-emacs-lisp-form (&rest body)
+  "Prepare BODY for use as check form in a subprocess."
+  (declare (indent 0))
+  `(flycheck-sexp-to-string
+    '(progn
+       (defvar jka-compr-inhibit)
+       (unwind-protect
+           ;; Flycheck inhibits compression of temporary files, thus we
+           ;; must not attempt to decompress.
+           (let ((jka-compr-inhibit t))
+             ;; Strip option-argument separator from arguments, if present
+             (when (equal (car command-line-args-left) "--")
+               (setq command-line-args-left (cdr command-line-args-left)))
+             ,@body)
+         ;; Prevent Emacs from processing the arguments on its own, see
+         ;; https://github.com/flycheck/flycheck/issues/319
+         (setq command-line-args-left nil)))))
+
+(defconst flycheck-emacs-lisp-check-form
+  (flycheck-prepare-emacs-lisp-form
+    ;; Keep track of the generated bytecode files, to delete them after byte
+    ;; compilation.
+    (defvar flycheck-byte-compiled-files nil)
+    (let ((byte-compile-dest-file-function
+           (lambda (source)
+             (let ((temp-file (make-temp-file (file-name-nondirectory source))))
+               (push temp-file flycheck-byte-compiled-files)
+               temp-file))))
+      (unwind-protect
+          (byte-compile-file (car command-line-args-left))
+        (mapc (lambda (f) (ignore-errors (delete-file f)))
+              flycheck-byte-compiled-files)))))
+
+(flycheck-def-option-var flycheck-emacs-lisp-load-path nil emacs-lisp
+  "Load path to use in the Emacs Lisp syntax checker.
+
+When set to `inherit', use the `load-path' of the current Emacs
+session during syntax checking.
+
+When set to a list of strings, add each directory in this list to
+the `load-path' before invoking the byte compiler.  Relative
+paths in this list are expanded against the `default-directory'
+of the buffer to check.
+
+When nil, do not explicitly set the `load-path' during syntax
+checking.  The syntax check only uses the built-in `load-path' of
+Emacs in this case.
+
+Note that changing this variable can lead to wrong results of the
+syntax check, e.g. if an unexpected version of a required library
+is used."
+  :type '(choice (const :tag "Inherit current `load-path'" inherit)
+                 (repeat :tag "Load path" directory))
+  :risky t
+  :package-version '(flycheck . "0.14"))
+
+(flycheck-def-option-var flycheck-emacs-lisp-initialize-packages
+    'auto emacs-lisp
+  "Whether to initialize packages in the Emacs Lisp syntax checker.
+
+To initialize packages, call `package-initialize' before
+byte-compiling the file to check.
+
+When nil, never initialize packages.  When `auto', initialize
+packages only when checking files from `user-emacs-directory'.
+For any other non-nil value, always initialize packages."
+  :type '(choice (const :tag "Do not initialize packages" nil)
+                 (const :tag "Initialize packages for configuration only" auto)
+                 (const :tag "Always initialize packages" t))
+  :risky t
+  :package-version '(flycheck . "0.14"))
+
+(defconst flycheck-emacs-lisp-package-initialize-form
+  (flycheck-sexp-to-string
+   '(with-demoted-errors "Error during package initialization: %S"
+      (package-initialize)))
+  "Form used to initialize packages.")
+
+(defun flycheck-option-emacs-lisp-package-initialize (value)
+  "Option VALUE filter for `flycheck-emacs-lisp-initialize-packages'."
+  (let ((shall-initialize
+         (if (eq value 'auto)
+             (flycheck-in-user-emacs-directory-p (buffer-file-name))
+           value)))
+    (when shall-initialize
+      ;; If packages shall be initialized, return the corresponding form,
+      ;; otherwise make Flycheck ignore the option by returning nil.
+      flycheck-emacs-lisp-package-initialize-form)))
+
+(flycheck-def-option-var flycheck-emacs-lisp-package-user-dir nil emacs-lisp
+  "Package directory for the Emacs Lisp syntax checker.
+
+When set to a string, set `package-user-dir' to the value of this
+variable before initializing packages.
+
+This variable has no effect, if
+`flycheck-emacs-lisp-initialize-packages' is nil."
+  :type '(choice (const :tag "Default package directory" nil)
+                 (directory :tag "Custom package directory"))
+  :risky t
+  :package-version '(flycheck . "0.14"))
+
+(defun flycheck-option-emacs-lisp-package-user-dir (value)
+  "Option VALUE filter for `flycheck-emacs-lisp-package-user-dir'."
+  (unless value
+    ;; Inherit the package directory from our Emacs session
+    (setq value (and (boundp 'package-user-dir) package-user-dir)))
+  (when value
+    (flycheck-sexp-to-string `(setq package-user-dir ,value))))
+
+(flycheck-define-checker emacs-lisp
+  "An Emacs Lisp syntax checker using the Emacs Lisp Byte compiler.
+
+See Info Node `(elisp)Byte Compilation'."
+  :command ("emacs" (eval flycheck-emacs-args)
+            (eval
+             (let ((path (pcase flycheck-emacs-lisp-load-path
+                           (`inherit load-path)
+                           (p (mapcar #'expand-file-name p)))))
+               (flycheck-prepend-with-option "--directory" path)))
+            (option "--eval" flycheck-emacs-lisp-package-user-dir nil
+                    flycheck-option-emacs-lisp-package-user-dir)
+            (option "--eval" flycheck-emacs-lisp-initialize-packages nil
+                    flycheck-option-emacs-lisp-package-initialize)
+            "--eval" (eval flycheck-emacs-lisp-check-form)
+            "--"
+            source-inplace)
+  :error-patterns
+  ((error line-start (file-name) ":" line ":" column ":Error:"
+          (message (zero-or-more not-newline)
+                   (zero-or-more "\n    " (zero-or-more not-newline)))
+          line-end)
+   (warning line-start (file-name) ":" line ":" column ":Warning:"
+            (message (zero-or-more not-newline)
+                     (zero-or-more "\n    " (zero-or-more not-newline)))
+            line-end))
+  :error-filter
+  (lambda (errors)
+    (flycheck-collapse-error-message-whitespace
+     (flycheck-sanitize-errors errors)))
+  :modes (emacs-lisp-mode lisp-interaction-mode)
+  :predicate
+  (lambda ()
+    (and
+     ;; Ensure that we only check buffers with a backing file.  For buffers
+     ;; without a backing file we cannot guarantee that file names in error
+     ;; messages are properly resolved, because `byte-compile-file' emits file
+     ;; names *relative to the directory of the checked file* instead of the
+     ;; working directory.  Hence our backwards-substitution will fail, because
+     ;; the checker process has a different base directory to resolve relative
+     ;; file names than the Flycheck code working on the buffer to check.
+     (buffer-file-name)
+     ;; Do not check buffers which should not be byte-compiled.  The checker
+     ;; process will refuse to compile these, which would confuse Flycheck
+     (not (bound-and-true-p no-byte-compile))
+     ;; Do not check buffers used for autoloads generation during package
+     ;; installation.  These buffers are too short-lived for being checked, and
+     ;; doing so causes spurious errors.  See
+     ;; https://github.com/flycheck/flycheck/issues/45 and
+     ;; https://github.com/bbatsov/prelude/issues/248.  We must also not check
+     ;; compilation buffers, but as these are ephemeral, Flycheck won't check
+     ;; them anyway.
+     (not (flycheck-autoloads-file-p))))
+  :next-checkers (emacs-lisp-checkdoc))
+
+(defconst flycheck-emacs-lisp-checkdoc-form
+  (flycheck-prepare-emacs-lisp-form
+    (require 'checkdoc)
+
+    (let ((source (car command-line-args-left))
+          ;; Remember the default directory of the process
+          (process-default-directory default-directory))
+      (with-temp-buffer
+        (insert-file-contents source 'visit)
+        (setq buffer-file-name source)
+        ;; And change back to the process default directory to make file-name
+        ;; back-substutition work
+        (setq default-directory process-default-directory)
+        (with-demoted-errors "Error in checkdoc: %S"
+          (checkdoc-current-buffer t)
+          (with-current-buffer checkdoc-diagnostic-buffer
+            (princ (buffer-substring-no-properties (point-min) (point-max)))
+            (kill-buffer)))))))
+
+(flycheck-define-checker emacs-lisp-checkdoc
+  "An Emacs Lisp style checker using CheckDoc.
+
+The checker runs `checkdoc-current-buffer'."
+  :command ("emacs" (eval flycheck-emacs-args)
+            "--eval" (eval flycheck-emacs-lisp-checkdoc-form)
+            "--" source)
+  :error-patterns
+  ((warning line-start (file-name) ":" line ": " (message) line-end))
+  :modes (emacs-lisp-mode)
+  :predicate
+  (lambda ()
+    ;; Do not check Autoloads, Cask/Carton and dir-locals files.  These files
+    ;; really don't need to follow Checkdoc conventions.
+    (not (or (flycheck-autoloads-file-p)
+             (and (buffer-file-name)
+                  (member (file-name-nondirectory (buffer-file-name))
+                          '("Cask" "Carton" ".dir-locals.el")))))))
+
+(progn
+  ;; Use the currently running Emacs by default.
+  (setcar (get 'emacs-lisp 'flycheck-command) flycheck-this-emacs-executable)
+  (setcar (get 'emacs-lisp-checkdoc 'flycheck-command)
+          flycheck-this-emacs-executable))
+
+(flycheck-define-checker erlang
+  "An Erlang syntax checker using the Erlang interpreter.
+
+See URL `http://www.erlang.org/'."
+  :command ("erlc" "-o" temporary-directory "-Wall" source)
+  :error-patterns
+  ((warning line-start (file-name) ":" line ": Warning:" (message) line-end)
+   (error line-start (file-name) ":" line ": " (message) line-end))
+  :modes erlang-mode)
+
+(flycheck-define-checker eruby-erubis
+  "A eRuby syntax checker using the `erubis' command.
+
+See URL `http://www.kuwata-lab.com/erubis/'."
+  :command ("erubis" "-z" source)
+  :error-patterns
+  ((error line-start  (file-name) ":" line ": " (message) line-end))
+  :modes (html-erb-mode rhtml-mode))
+
+(flycheck-def-args-var flycheck-gfortran-args fortran-gfortran
+  :package-version '(flycheck . "0.22"))
+
+(flycheck-def-option-var flycheck-gfortran-include-path nil fortran-gfortran
+  "A list of include directories for GCC Fortran.
+
+The value of this variable is a list of strings, where each
+string is a directory to add to the include path of gcc.
+Relative paths are relative to the file being checked."
+  :type '(repeat (directory :tag "Include directory"))
+  :safe #'flycheck-string-list-p
+  :package-version '(flycheck . "0.20"))
+
+(flycheck-def-option-var flycheck-gfortran-language-standard "f95" fortran-gfortran
+  "The language standard to use in GFortran.
+
+The value of this variable is either a string denoting a language
+standard, or nil, to use the default standard.  When non-nil,
+pass the language standard via the `-std' option."
+  :type '(choice (const :tag "Default standard" nil)
+                 (string :tag "Language standard"))
+  :safe #'stringp
+  :package-version '(flycheck . "0.20"))
+
+(flycheck-def-option-var flycheck-gfortran-layout nil fortran-gfortran
+  "The source code layout to use in GFortran.
+
+The value of this variable is one of the following symbols:
+
+nil
+     Let gfortran determine the layout from the extension
+
+`free'
+     Use free form layout
+
+
+`fixed'
+     Use fixed form layout
+
+In any other case, an error is signaled.")
+
+(defun flycheck-option-gfortran-layout (value)
+  "Option VALUE filter for `flycheck-gfortran-layout'."
+  (pcase value
+    (`nil nil)
+    (`free "free-form")
+    (`fixed "fixed-form")
+    (_ (error "Invalid value for flycheck-gfortran-layout: %S" value))))
+
+(flycheck-def-option-var flycheck-gfortran-warnings  '("all" "extra")
+                         fortran-gfortran
+  "A list of warnings for GCC Fortran.
+
+The value of this variable is a list of strings, where each string
+is the name of a warning category to enable.  By default, all
+recommended warnings and some extra warnings are enabled (as by
+`-Wall' and `-Wextra' respectively).
+
+Refer to the gfortran manual at URL
+`https://gcc.gnu.org/onlinedocs/gfortran/' for more information
+about warnings")
+
+(flycheck-define-checker fortran-gfortran
+  "An Fortran syntax checker using GCC.
+
+Uses GCC's Fortran compiler gfortran.  See URL
+`https://gcc.gnu.org/onlinedocs/gfortran/'."
+  :command ("gfortran"
+            "-fsyntax-only"
+            "-fshow-column"
+            "-fno-diagnostics-show-caret" ; Do not visually indicate the source location
+            "-fno-diagnostics-show-option" ; Do not show the corresponding
+                                        ; warning group
+            ;; Fortran has similar include processing as C/C++
+            "-iquote" (eval (flycheck-c/c++-quoted-include-directory))
+            (option "-std=" flycheck-gfortran-language-standard concat)
+            (option "-f" flycheck-gfortran-layout concat
+                    flycheck-option-gfortran-layout)
+            (option-list "-W" flycheck-gfortran-warnings concat)
+            (option-list "-I" flycheck-gfortran-include-path concat)
+            (eval flycheck-gfortran-args)
+            source)
+  :error-patterns
+  ((error line-start (file-name) ":" line "." column ":\n"
+          (= 3 (zero-or-more not-newline) "\n")
+          (or "Error" "Fatal Error") ": " (message) line-end)
+   (warning line-start (file-name) ":" line "." column ":\n"
+            (= 3 (zero-or-more not-newline) "\n")
+            "Warning: " (message) line-end))
+  :modes (fortran-mode f90-mode))
+
+(flycheck-define-checker go-gofmt
+  "A Go syntax and style checker using the gofmt utility.
+
+See URL `http://golang.org/cmd/gofmt/'."
+  :command ("gofmt" source)
+  :error-patterns
+  ((error line-start (file-name) ":" line ":" column ": " (message) line-end))
+  :modes go-mode
+  :next-checkers ((warning . go-golint)
+                  ;; Fall back, if go-golint doesn't exist
+                  (warning . go-vet)
+                  ;; Fall back, if go-vet doesn't exist
+                  (warning . go-build) (warning . go-test)
+                  (warning . go-errcheck)))
+
+(flycheck-define-checker go-golint
+  "A Go style checker using Golint.
+
+See URL `https://github.com/golang/lint'."
+  :command ("golint" source)
+  :error-patterns
+  ((warning line-start (file-name) ":" line ":" column ": " (message) line-end))
+  :modes go-mode
+  :next-checkers (go-vet
+                  ;; Fall back, if go-vet doesn't exist
+                  go-build go-test go-errcheck))
+
+(flycheck-def-option-var flycheck-go-vet-print-functions nil go-vet
+  "A comma-separated list of print-like functions for `go tool vet'.
+
+Go vet will check these functions for format string problems and
+issues, such as a mismatch between the number of formats used,
+and the number of arguments given.
+
+Each entry is in the form Name:N where N is the zero-based
+argument position of the first argument involved in the print:
+either the format or the first print argument for non-formatted
+prints.  For example, if you have Warn and Warnf functions that
+take an io.Writer as their first argument, like Fprintf,
+-printfuncs=Warn:1,Warnf:1 "
+  :type '(repeat :tag "print-like functions"
+                 (string :tag "function"))
+  :safe #'flycheck-string-list-p)
+
+(flycheck-define-checker go-vet
+  "A Go syntax checker using the `go tool vet' command.
+
+See URL `http://golang.org/cmd/go/' and URL
+`http://godoc.org/golang.org/x/tools/cmd/vet'."
+  :command ("go" "tool" "vet"
+            (option "-printfuncs=" flycheck-go-vet-print-functions concat
+                    flycheck-option-comma-separated-list)
+            source)
+  :error-patterns
+  ((warning line-start (file-name) ":" line ": " (message) line-end))
+  :modes go-mode
+  ;; We must explicitly check whether the "vet" tool is available
+  :predicate (lambda ()
+               (let ((go (flycheck-checker-executable 'go-vet)))
+                 (member "vet" (ignore-errors (process-lines go "tool")))))
+  :next-checkers (go-build
+                  go-test
+                  ;; Fall back if `go build' or `go test' can be used
+                  go-errcheck))
+
+(flycheck-define-checker go-build
+  "A Go syntax and type checker using the `go build' command.
+
+See URL `http://golang.org/cmd/go'."
+  ;; We need to use `temporary-file-name' instead of `null-device', because Go
+  ;; can't write to the null device.  It's “too magic”.  See
+  ;; https://code.google.com/p/go/issues/detail?id=4851 for details.
+  :command ("go" "build" "-o" temporary-file-name)
+  :error-patterns
+  ((error line-start (file-name) ":" line ":"
+          (optional column ":") " "
+          (message (one-or-more not-newline)
+                   (zero-or-more "\n\t" (one-or-more not-newline)))
+          line-end))
+  :modes go-mode
+  :predicate (lambda ()
+               (and (flycheck-buffer-saved-p)
+                    (not (string-suffix-p "_test.go" (buffer-file-name)))))
+  :next-checkers ((warning . go-errcheck)))
+
+(flycheck-define-checker go-test
+  "A Go syntax and type checker using the `go test' command.
+
+See URL `http://golang.org/cmd/go'."
+  ;; This command builds the test executable and leaves it in the current
+  ;; directory.  Unfortunately 'go test -c' does not have the '-o' option.
+  :command ("go" "test" "-c")
+  :error-patterns
+  ((error line-start (file-name) ":" line ": "
+          (message (one-or-more not-newline)
+                   (zero-or-more "\n\t" (one-or-more not-newline)))
+          line-end))
+  :modes go-mode
+  :predicate
+  (lambda () (and (flycheck-buffer-saved-p)
+                  (string-suffix-p "_test.go" (buffer-file-name))))
+  :next-checkers ((warning . go-errcheck)))
+
+(defun flycheck-go-package-name (&optional file-name gopath)
+  "Determine the package name for FILE-NAME and GOPATH.
+
+FILE-NAME defaults to `buffer-file-name'.  GOPATH defaults to
+$GOPATH.
+
+Return the package name for FILE-NAME, or nil if FILE-NAME is not
+part of any package or if GOPATH is nil."
+  (-when-let* ((gopath (or gopath (getenv "GOPATH")))
+               (file-name (or file-name (buffer-file-name))))
+    (let ((gosrc (file-name-as-directory (expand-file-name "src/" gopath)))
+          (file-name (expand-file-name file-name)))
+      (when (string-prefix-p gosrc file-name)
+        ;; The file is part of a package, so determine the package name, as
+        ;; relative file name to the GO source directory
+        (directory-file-name            ; Remove trailing /
+         (file-relative-name (file-name-directory file-name) gosrc))))))
+
+(flycheck-define-checker go-errcheck
+  "A Go checker for unchecked errors.
+
+See URL `https://github.com/kisielk/errcheck'."
+  :command ("errcheck" (eval (flycheck-go-package-name)))
+  :error-patterns
+  ((warning line-start
+            (file-name) ":" line ":" column (one-or-more "\t")
+            (message)
+            line-end))
+  :error-filter
+  (lambda (errors)
+    (let ((errors (flycheck-sanitize-errors errors))
+          (gosrc (expand-file-name "src/" (getenv "GOPATH"))))
+      (dolist (err errors)
+        ;; File names are relative to the Go source directory, so we need to
+        ;; unexpand and re-expand them
+        (setf (flycheck-error-filename err)
+              (expand-file-name
+               ;; Get the relative name back, since Flycheck has already
+               ;; expanded the name for us
+               (file-relative-name (flycheck-error-filename err))
+               ;; And expand it against the Go source directory
+               gosrc))
+        (-when-let (message (flycheck-error-message err))
+          ;; Improve the messages reported by errcheck to make them more clear.
+          (setf (flycheck-error-message err)
+                (format "Ignored `error` returned from `%s`" message)))))
+    errors)
+  :modes go-mode
+  :predicate
+  (lambda ()
+    ;; We need a valid package name, since errcheck only works on entire
+    ;; packages, and can't check individual Go files.
+    (and (flycheck-buffer-saved-p) (flycheck-go-package-name))))
+
+(flycheck-define-checker haml
+  "A Haml syntax checker using the Haml compiler.
+
+See URL `http://haml.info'."
+  :command ("haml" "-c" source)
+  :error-patterns
+  ((error line-start "Syntax error on line " line ": " (message) line-end))
+  :modes haml-mode)
+
+(flycheck-define-checker handlebars
+  "A Handlebars syntax checker using the Handlebars compiler.
+
+See URL `http://handlebarsjs.com/'."
+  :command ("handlebars" source)
+  :error-patterns
+  ((error line-start
+          "Error: Parse error on line " line ":" (optional "\r") "\n"
+          (zero-or-more not-newline) "\n" (zero-or-more not-newline) "\n"
+          (message) line-end))
+  :modes (handlebars-mode handlebars-sgml-mode))
+
+(defconst flycheck-haskell-module-re
+  (rx line-start (zero-or-more (or "\n" (any space)))
+      "module" (one-or-more (or "\n" (any space)))
+      (group (one-or-more (not (any space "\n")))))
+  "Regular expression for a Haskell module name.")
+
+(flycheck-def-args-var flycheck-ghc-args haskell-ghc
+  :package-version '(flycheck . "0.22"))
+
+(flycheck-def-option-var flycheck-ghc-no-user-package-database nil haskell-ghc
+  "Whether to disable the user package database in GHC.
+
+When non-nil, disable the user package database in GHC, via
+`-no-user-package-db'."
+  :type 'boolean
+  :safe #'booleanp
+  :package-version '(flycheck . "0.16"))
+
+(flycheck-def-option-var flycheck-ghc-package-databases nil haskell-ghc
+  "Additional module databases for GHC.
+
+The value of this variable is a list of strings, where each
+string is a directory of a package database.  Each package
+database is given to GHC via `-package-db'."
+  :type '(repeat (directory :tag "Package database"))
+  :safe #'flycheck-string-list-p
+  :package-version '(flycheck . "0.16"))
+
+(flycheck-def-option-var flycheck-ghc-search-path nil haskell-ghc
+  "Module search path for GHC.
+
+The value of this variable is a list of strings, where each
+string is a directory containing Haskell modules.  Each directory
+is added to the GHC search path via `-i'."
+  :type '(repeat (directory :tag "Module directory"))
+  :safe #'flycheck-string-list-p
+  :package-version '(flycheck . "0.16"))
+
+(flycheck-def-option-var flycheck-ghc-language-extensions nil haskell-ghc
+  "Language extensions for GHC.
+
+The value of this variable is a list of strings, where each
+string is a Haskell language extension, as in the LANGUAGE
+pragma.  Each extension is enabled via `-X'."
+  :type '(repeat (string :tag "Language extension"))
+  :safe #'flycheck-string-list-p
+  :package-version '(flycheck . "0.19"))
+
+(flycheck-define-checker haskell-ghc
+  "A Haskell syntax and type checker using ghc.
+
+See URL `http://www.haskell.org/ghc/'."
+  :command ("ghc" "-Wall" "-fno-code"
+            (option-flag "-no-user-package-db"
+                         flycheck-ghc-no-user-package-database)
+            (option-list "-package-db" flycheck-ghc-package-databases)
+            (option-list "-i" flycheck-ghc-search-path concat)
+            ;; Include the parent directory of the current module tree, to
+            ;; properly resolve local imports
+            (eval (concat
+                   "-i"
+                   (flycheck-module-root-directory
+                    (flycheck-find-in-buffer flycheck-haskell-module-re))))
+            (option-list "-X" flycheck-ghc-language-extensions concat)
+            (eval flycheck-ghc-args)
+            "-x" (eval
+                  (pcase major-mode
+                    (`haskell-mode "hs")
+                    (`literate-haskell-mode "lhs")))
+            source)
+  :error-patterns
+  ((warning line-start (file-name) ":" line ":" column ":"
+            (or " " "\n    ") "Warning:" (optional "\n")
+            (message
+             (one-or-more " ") (one-or-more not-newline)
+             (zero-or-more "\n"
+                           (one-or-more " ")
+                           (one-or-more not-newline)))
+            line-end)
+   (error line-start (file-name) ":" line ":" column ":"
+          (or (message (one-or-more not-newline))
+              (and "\n"
+                   (message
+                    (one-or-more " ") (one-or-more not-newline)
+                    (zero-or-more "\n"
+                                  (one-or-more " ")
+                                  (one-or-more not-newline)))))
+          line-end))
+  :error-filter
+  (lambda (errors)
+    (flycheck-sanitize-errors (flycheck-dedent-error-messages errors)))
+  :modes (haskell-mode literate-haskell-mode)
+  :next-checkers ((warning . haskell-hlint)))
+
+(flycheck-define-checker haskell-hlint
+  "A Haskell style checker using hlint.
+
+See URL `https://github.com/ndmitchell/hlint'."
+  :command ("hlint" source-inplace)
+  :error-patterns
+  ((warning line-start
+            (file-name) ":" line ":" column
+            ": Warning: "
+            (message (one-or-more not-newline)
+                     (one-or-more "\n" (one-or-more not-newline)))
+            line-end)
+   (error line-start
+          (file-name) ":" line ":" column
+          ": Error: "
+          (message (one-or-more not-newline)
+                   (one-or-more "\n" (one-or-more not-newline)))
+          line-end))
+  :modes (haskell-mode literate-haskell-mode))
+
+(flycheck-def-config-file-var flycheck-tidyrc html-tidy ".tidyrc"
+  :safe #'stringp)
+
+(flycheck-define-checker html-tidy
+  "A HTML syntax and style checker using Tidy.
+
+See URL `https://github.com/w3c/tidy-html5'."
+  :command ("tidy" (config-file "-config" flycheck-tidyrc) "-e" "-q" source)
+  :error-patterns
+  ((error line-start
+          "line " line
+          " column " column
+          " - Error: " (message) line-end)
+   (warning line-start
+            "line " line
+            " column " column
+            " - Warning: " (message) line-end))
+  :modes (html-mode nxhtml-mode))
+
+(flycheck-def-config-file-var flycheck-jshintrc javascript-jshint ".jshintrc"
+  :safe #'stringp)
+
+(flycheck-define-checker javascript-jshint
+  "A JavaScript syntax and style checker using jshint.
+
+See URL `http://www.jshint.com'."
+  :command ("jshint" "--checkstyle-reporter"
+            (config-file "--config" flycheck-jshintrc)
+            source)
+  :error-parser flycheck-parse-checkstyle
+  :error-filter flycheck-dequalify-error-ids
+  :modes (js-mode js2-mode js3-mode))
+
+(flycheck-def-option-var flycheck-eslint-rulesdir nil javascript-eslint
+  "The directory of custom rules for ESLint.
+
+The value of this variable is either a string containing the path
+to a directory with custom rules, or nil, to not give any custom
+rules to ESLint.
+
+Refer to the ESLint manual at URL
+`https://github.com/eslint/eslint/tree/master/docs/command-line-interface#--rulesdir'
+for more information about the custom directory."
+  :type '(choice (const :tag "No custom rules directory" nil)
+                 (directory :tag "Custom rules directory"))
+  :safe #'stringp
+  :package-version '(flycheck . "0.16"))
+
+(flycheck-def-config-file-var flycheck-eslintrc javascript-eslint nil
+  :safe #'stringp
+  :package-version '(flycheck . "0.20"))
+
+(flycheck-define-checker javascript-eslint
+  "A JavaScript syntax and style checker using eslint.
+
+See URL `https://github.com/eslint/eslint'."
+  :command ("eslint" "--format=checkstyle"
+            (config-file "--config" flycheck-eslintrc)
+            (option "--rulesdir" flycheck-eslint-rulesdir)
+            ;; We need to use source-inplace because eslint looks for
+            ;; configuration files in the directory of the file being checked.
+            ;; See https://github.com/flycheck/flycheck/issues/447
+            source-inplace)
+  :error-parser flycheck-parse-checkstyle
+  :error-filter (lambda (errors)
+                  (mapc (lambda (err)
+                          ;; Parse error ID from the error message
+                          (setf (flycheck-error-message err)
+                                (replace-regexp-in-string
+                                 (rx " ("
+                                     (group (one-or-more (not (any ")"))))
+                                     ")" string-end)
+                                 (lambda (s)
+                                   (setf (flycheck-error-id err)
+                                         (match-string 1 s))
+                                   "")
+                                 (flycheck-error-message err))))
+                        (flycheck-sanitize-errors errors))
+                  errors)
+  :modes (js-mode js2-mode js3-mode))
+
+(flycheck-def-config-file-var flycheck-gjslintrc javascript-gjslint ".gjslintrc"
+  :safe #'stringp)
+
+(flycheck-define-checker javascript-gjslint
+  "A JavaScript syntax and style checker using Closure Linter.
+
+See URL `https://developers.google.com/closure/utilities'."
+  :command ("gjslint" "--unix_mode"
+            (config-file "--flagfile" flycheck-gjslintrc)
+            source)
+  :error-patterns ((warning
+                    line-start (file-name) ":" line ":("
+                    (id (one-or-more digit)) ") " (message) line-end))
+  :modes (js-mode js2-mode js3-mode))
+
+(flycheck-define-checker json-jsonlint
+  "A JSON syntax and style checker using jsonlint.
+
+See URL `https://github.com/zaach/jsonlint'."
+  :command ("jsonlint" "-c" "-q" source)
+  :error-patterns
+  ((error line-start
+          (file-name)
+          ": line " line
+          ", col " column ", "
+          (message) line-end))
+  :predicate
+  (lambda ()
+    (or
+     (eq major-mode 'json-mode)
+     (and (buffer-file-name)
+          (string= (file-name-extension (buffer-file-name)) "json")))))
+
+(flycheck-define-checker less
+  "A LESS syntax checker using lessc.
+
+At least version 1.4 of lessc is required.
+
+See URL `http://lesscss.org'."
+  :command ("lessc" "--lint" "--no-color"
+            ;; We need `source-inplace' to resolve relative `data-uri' paths,
+            ;; see https://github.com/flycheck/flycheck/issues/471
+            source-inplace)
+  :error-patterns
+  ((error line-start (one-or-more word) ":"
+          (message)
+          " in "
+          (file-name)
+
+          " on line " line
+          ", column " column ":"
+          line-end))
+  :modes less-css-mode)
+
+(flycheck-define-checker lua
+  "A Lua syntax checker using the Lua compiler.
+
+See URL `http://www.lua.org/'."
+  :command ("luac" "-p" source)
+  :error-patterns
+  ((error line-start
+          ;; Skip the name of the luac executable.  We also skip the file name,
+          ;; because luac is stupid enough as to abbreviate file names in its
+          ;; output, which for obvious reasons breaks our file name
+          ;; detection. See https://github.com/flycheck/flycheck/issues/251
+          (minimal-match (zero-or-more not-newline))
+          ":" line ": " (message) line-end))
+  :modes lua-mode)
+
+(flycheck-define-checker perl
+  "A Perl syntax checker using the Perl interpreter.
+
+See URL `http://www.perl.org'."
+  :command ("perl" "-w" "-c" source)
+  :error-patterns
+  ((error line-start (minimal-match (message))
+          " at " (file-name) " line " line
+          (or "." (and ", " (zero-or-more not-newline))) line-end))
+  :modes (perl-mode cperl-mode)
+  :next-checkers (perl-perlcritic))
+
+(flycheck-def-option-var flycheck-perlcritic-severity nil perl-perlcritic
+  "The message severity for Perl Critic.
+
+The value of this variable is a severity level as integer, for
+the `--severity' option to Perl Critic."
+  :type '(integer :tag "Severity level")
+  :safe #'integerp
+  :package-version '(flycheck . "0.18"))
+
+(define-obsolete-variable-alias 'flycheck-perlcritic-verbosity
+  'flycheck-perlcritic-severity "0.22")
+
+(flycheck-define-checker perl-perlcritic
+  "A Perl syntax checker using Perl::Critic.
+
+See URL `https://metacpan.org/pod/Perl::Critic'."
+  :command ("perlcritic" "--no-color" "--verbose" "%f/%l/%c/%s/%p/%m (%e)\n"
+            (option "--severity" flycheck-perlcritic-severity nil
+                    flycheck-option-int)
+            source)
+  :error-patterns
+  ((info line-start
+         (file-name) "/" line "/" column "/" (any "1") "/"
+         (id (one-or-more (not (any "/")))) "/" (message)
+         line-end)
+   (warning line-start
+            (file-name) "/" line "/" column "/" (any "234") "/"
+            (id (one-or-more (not (any "/")))) "/" (message)
+            line-end)
+   (error line-start
+          (file-name) "/" line "/" column "/" (any "5") "/"
+          (id (one-or-more (not (any "/")))) "/" (message)
+          line-end))
+  :modes (cperl-mode perl-mode))
+
+(flycheck-define-checker php
+  "A PHP syntax checker using the PHP command line interpreter.
+
+See URL `http://php.net/manual/en/features.commandline.php'."
+  :command ("php" "-l" "-d" "error_reporting=E_ALL" "-d" "display_errors=1"
+            "-d" "log_errors=0" source)
+  :error-patterns
+  ((error line-start (or "Parse" "Fatal" "syntax") " error" (any ":" ",") " "
+          (message) " in " (file-name) " on line " line line-end))
+  :modes (php-mode php+-mode)
+  :next-checkers ((warning . php-phpmd)
+                  (warning . php-phpcs)))
+
+(flycheck-def-option-var flycheck-phpmd-rulesets
+    '("cleancode" "codesize" "controversial" "design" "naming" "unusedcode")
+    php-phpmd
+  "The rule sets for PHP Mess Detector.
+
+Set default rule sets and custom rule set files.
+
+See section \"Using multiple rule sets\" in the PHP Mess Detector
+manual at URL `http://phpmd.org/documentation/index.html'."
+  :type '(repeat :tag "rule sets"
+                 (string :tag "A filename or rule set"))
+  :safe #'flycheck-string-list-p)
+
+(flycheck-define-checker php-phpmd
+  "A PHP style checker using PHP Mess Detector.
+
+See URL `http://phpmd.org/'."
+  :command ("phpmd" source "xml"
+            (eval (flycheck-option-comma-separated-list
+                   flycheck-phpmd-rulesets)))
+  :error-parser flycheck-parse-phpmd
+  :modes (php-mode php+-mode)
+  :next-checkers (php-phpcs))
+
+(flycheck-def-option-var flycheck-phpcs-standard nil php-phpcs
+  "The coding standard for PHP CodeSniffer.
+
+When nil, use the default standard from the global PHP
+CodeSniffer configuration.  When set to a string, pass the string
+to PHP CodeSniffer which will interpret it as name as a standard,
+or as path to a standard specification."
+  :type '(choice (const :tag "Default standard" nil)
+                 (string :tag "Standard name or file"))
+  :safe #'stringp)
+
+(flycheck-define-checker php-phpcs
+  "A PHP style checker using PHP_CodeSniffer.
+
+See URL `http://pear.php.net/package/PHP_CodeSniffer/'."
+  :command ("phpcs" "--report=checkstyle"
+            (option "--standard=" flycheck-phpcs-standard concat)
+            source)
+  :error-parser flycheck-parse-checkstyle
+  :modes (php-mode php+-mode))
+
+(flycheck-define-checker puppet-parser
+  "A Puppet DSL syntax checker using puppet's own parser.
+
+See URL `http://puppetlabs.com/'."
+  :command ("puppet" "parser" "validate" "--color=false" source)
+  :error-patterns
+  ((error line-start
+          ;; Skip over the path of the Puppet executable
+          (minimal-match (zero-or-more not-newline))
+          ": Could not parse for environment " (one-or-more word)
+          ": " (message (minimal-match (zero-or-more anything)))
+          " at "  (file-name "/" (zero-or-more not-newline)) ":" line line-end))
+  :modes puppet-mode
+  :next-checkers ((warning . puppet-lint)))
+
+(flycheck-define-checker puppet-lint
+  "A Puppet DSL style checker using puppet-lint.
+
+See URL `http://puppet-lint.com/'."
+  ;; We must check the original file, because Puppetlint is quite picky on the
+  ;; names of files and there place in the directory structure, to comply with
+  ;; Puppet's autoload directory layout.  For instance, a class foo::bar is
+  ;; required to be in a file foo/bar.pp.  Any other place, such as a Flycheck
+  ;; temporary file will cause an error.
+  :command ("puppet-lint"
+            "--log-format" "%{path}:%{linenumber}:%{kind}: %{message} (%{check})"
+            source-original)
+  :error-patterns
+  ((warning line-start (file-name) ":" line ":warning: " (message) line-end)
+   (error line-start (file-name) ":" line ":error: " (message) line-end))
+  :modes puppet-mode
+  ;; Since we check the original file, we can only use this syntax checker if
+  ;; the buffer is actually linked to a file, and if it is not modified.
+  :predicate flycheck-buffer-saved-p)
+
+(flycheck-def-config-file-var flycheck-flake8rc python-flake8 ".flake8rc"
+  :safe #'stringp)
+
+(flycheck-def-option-var flycheck-flake8-error-level-alist
+    '(("^E9.*$"  . error)               ; Syntax errors from pep8
+      ("^F82.*$" . error)               ; undefined variables from pyflakes
+      ("^F83.*$" . error)               ; Duplicate arguments from flake8
+      ("^N.*$"   . info)                ; Naming issues from naming
+      )
+    python-flake8
+  "An alist mapping flake8 error IDs to Flycheck error levels.
+
+Each item in this list is a cons cell `(PATTERN . LEVEL)' where
+PATTERN is a regular expression matched against the error ID, and
+LEVEL is a Flycheck error level symbol.
+
+Each PATTERN is matched in the order of appearance in this list
+against the error ID.  If it matches the ID, the level of the
+corresponding error is set to LEVEL.  An error that is not
+matched by any PATTERN defaults to warning level.
+
+This option exists because flake8 categorises errors by the
+underlying tool that produced them (e.g. F for pyflakes messages,
+E for pep8 messages, etc.).  These categorisations do not map
+directly to Flycheck error levels.  Hence, this option exists to
+allow for a custom mapping.  The default value handles all of the
+built-in tools of flake8, and naming errors from pep8-naming."
+  :type '(repeat (cons (regexp :tag "Error ID pattern")
+                       (symbol :tag "Error level")))
+  :package-version '(flycheck . "0.22"))
+
+(flycheck-def-option-var flycheck-flake8-maximum-complexity nil python-flake8
+  "The maximum McCabe complexity of methods.
+
+If nil, do not check the complexity of methods.  If set to an
+integer, report any complexity greater than the value of this
+variable as warning.
+
+If set to an integer, this variable overrules any similar setting
+in the configuration file denoted by `flycheck-flake8rc'."
+  :type '(choice (const :tag "Do not check McCabe complexity" nil)
+                 (integer :tag "Maximum complexity"))
+  :safe #'integerp)
+
+(flycheck-def-option-var flycheck-flake8-maximum-line-length nil python-flake8
+  "The maximum length of lines.
+
+If set to an integer, the value of this variable denotes the
+maximum length of lines, overruling any similar setting in the
+configuration file denoted by `flycheck-flake8rc'.  An error will
+be reported for any line longer than the value of this variable.
+
+If set to nil, use the maximum line length from the configuration
+file denoted by `flycheck-flake8rc', or the PEP 8 recommendation
+of 79 characters if there is no configuration with this setting."
+  :type '(choice (const :tag "Default value")
+                 (integer :tag "Maximum line length in characters"))
+  :safe #'integerp)
+
+(defun flycheck-flake8-fix-error-level (err)
+  "Fix the error level of ERR.
+
+Update the error level of ERR according to
+`flycheck-flake8-error-level-alist'."
+  (pcase-dolist (`(,pattern . ,level) flycheck-flake8-error-level-alist)
+    (when (string-match-p pattern (flycheck-error-id err))
+      (setf (flycheck-error-level err) level)))
+  err)
+
+(flycheck-define-checker python-flake8
+  "A Python syntax and style checker using Flake8.
+
+Requires Flake8 2.0 or newer. See URL
+`https://pypi.python.org/pypi/flake8'."
+  :command ("flake8"
+            (config-file "--config" flycheck-flake8rc)
+            (option "--max-complexity" flycheck-flake8-maximum-complexity nil
+                    flycheck-option-int)
+            (option "--max-line-length" flycheck-flake8-maximum-line-length nil
+                    flycheck-option-int)
+            source)
+  :error-filter (lambda (errors)
+                  (let ((errors (flycheck-sanitize-errors errors)))
+                    (mapc #'flycheck-flake8-fix-error-level errors)
+                    errors))
+  :error-patterns
+  ((warning line-start
+            (file-name) ":" line ":" (optional column ":") " "
+            (id (one-or-more (any alpha)) (one-or-more digit)) " "
+            (message (one-or-more not-newline))
+            line-end))
+  :modes python-mode)
+
+(flycheck-def-config-file-var flycheck-pylintrc python-pylint
+                              ".pylintrc"
+  :safe #'stringp)
+
+(flycheck-define-checker python-pylint
+  "A Python syntax and style checker using Pylint.
+
+This syntax checker requires Pylint 1.0 or newer.
+
+See URL `http://www.pylint.org/'."
+  ;; -r n disables the scoring report
+  :command ("pylint" "-r" "n"
+            "--msg-template" "{path}:{line}:{column}:{C}:{msg_id}:{msg}"
+            (config-file "--rcfile" flycheck-pylintrc)
+            ;; Need `source-inplace' for relative imports (e.g. `from .foo
+            ;; import bar'), see https://github.com/flycheck/flycheck/issues/280
+            source-inplace)
+  :error-filter
+  (lambda (errors)
+    (flycheck-sanitize-errors (flycheck-increment-error-columns errors)))
+  :error-patterns
+  ((error line-start (file-name) ":" line ":" column ":"
+          (or "E" "F") ":"
+          (id (one-or-more (not (any ":")))) ":"
+          (message) line-end)
+   (warning line-start (file-name) ":" line ":" column ":"
+            (or "W" "R") ":"
+            (id (one-or-more (not (any ":")))) ":"
+            (message) line-end)
+   (info line-start (file-name) ":" line ":" column ":"
+         "C:" (id (one-or-more (not (any ":")))) ":"
+         (message) line-end))
+  :modes python-mode)
+
+(flycheck-define-checker python-pycompile
+  "A Python syntax checker using Python's builtin compiler.
+
+See URL `https://docs.python.org/3.4/library/py_compile.html'."
+  :command ("python" "-m" "py_compile" source)
+  :error-patterns
+  ;; Python 2.7
+  ((error line-start "  File \"" (file-name) "\", line " line "\n"
+          (= 2 (zero-or-more not-newline) "\n")
+          "SyntaxError: " (message) line-end)
+   ;; 2.6
+   (error line-start "SyntaxError: ('" (message (one-or-more (not (any "'"))))
+          "', ('" (file-name (one-or-more (not (any "'")))) "', "
+          line ", " column ", " (one-or-more not-newline) line-end))
+  :modes python-mode)
+
+(flycheck-def-option-var flycheck-lintr-caching t r-lintr
+  "Whether to enable caching in lintr.
+
+By default, lintr caches all expressions in a file and re-checks
+only those that have changed.  Setting this option to nil
+disables caching in case there are problems."
+  :type 'boolean
+  :safe #'booleanp
+  :package-version '(flycheck . "0.23"))
+
+(flycheck-def-option-var flycheck-lintr-linters "default_linters" r-lintr
+  "Linters to use with lintr.
+
+The value of this variable is a string containing an R
+expression, which selects linters for lintr."
+  :type 'string
+  :risky t
+  :package-version '(flycheck . "0.23"))
+
+(flycheck-define-checker r-lintr
+  "An R style and syntax checker using the lintr package.
+
+See URL `https://github.com/jimhester/lintr'."
+  :command ("R" "--slave" "--restore" "--no-save" "-e"
+            (eval (concat
+                   "library(lintr);"
+                   "try(lint(commandArgs(TRUE)"
+                   ", cache=" (if flycheck-lintr-caching "TRUE" "FALSE")
+                   ", " flycheck-lintr-linters
+                   "))"))
+            "--args" source)
+  :error-patterns
+  ((info line-start (file-name) ":" line ":" column ": style: " (message)
+         line-end)
+   (warning line-start (file-name) ":" line ":" column ": warning: " (message)
+            line-end)
+   (error line-start (file-name) ":" line ":" column ": error: " (message)
+          line-end))
+  :modes ess-mode)
+
+(flycheck-define-checker racket
+  "A Racket syntax checker using the Racket compiler.
+
+See URL `http://racket-lang.org/'."
+  :command ("racket" "-f" source-inplace)
+  :error-patterns
+  ((error line-start (file-name) ":" line ":" column ":" (message) line-end))
+  :modes racket-mode)
+
+(flycheck-define-checker rpm-rpmlint
+  "A RPM SPEC file syntax checker using rpmlint.
+
+See URL `http://sourceforge.net/projects/rpmlint/'."
+  :command ("rpmlint" source)
+  :error-patterns
+  ((error line-start
+          (file-name) ":" (optional line ":") " E: " (message)
+          line-end)
+   (warning line-start
+            (file-name) ":" (optional line ":") " W: " (message)
+            line-end))
+  :error-filter
+  ;; Add fake line numbers if they are missing in the lint output
+  (lambda (errors)
+    (dolist (err errors)
+      (unless (flycheck-error-line err)
+        (setf (flycheck-error-line err) 1)))
+    errors)
+  :modes (sh-mode rpm-spec-mode)
+  :predicate (lambda () (or (not (eq major-mode 'sh-mode))
+                            ;; In `sh-mode', we need the proper shell
+                            (eq sh-shell 'rpm))))
+
+(defun flycheck-locate-sphinx-source-directory ()
+  "Locate the Sphinx source directory for the current buffer.
+
+Return the source directory, or nil, if the current buffer is not
+part of a Sphinx project."
+  (-when-let* ((filename (buffer-file-name))
+               (dir (locate-dominating-file filename "conf.py")))
+    (expand-file-name dir)))
+
+(flycheck-define-checker rst
+  "A ReStructuredText (RST) syntax checker using Docutils.
+
+See URL `http://docutils.sourceforge.net/'."
+  ;; We need to use source-inplace to properly resolve relative paths in
+  ;; include:: directives
+  :command ("rst2pseudoxml.py" "--report=2" "--halt=5" source-inplace)
+  :error-patterns
+  ((warning line-start (file-name) ":" line ": (WARNING/2) " (message) line-end)
+   (error line-start
+          (file-name) ":" line
+          ": (" (or "ERROR/3" "SEVERE/4") ") "
+          (message) line-end))
+  :modes rst-mode
+  ;; Don't use the generic ReST checker in Sphinx projects, because it'll
+  ;; produce a lot of false positives.
+  :predicate (lambda () (not (flycheck-locate-sphinx-source-directory))))
+
+(flycheck-def-option-var flycheck-sphinx-warn-on-missing-references t rst-sphinx
+  "Whether to warn about missing references in Sphinx.
+
+When non-nil (the default), warn about all missing references in
+Sphinx via `-n'."
+  :type 'boolean
+  :safe #'booleanp
+  :package-version '(flycheck . "0.17"))
+
+(flycheck-define-checker rst-sphinx
+  "A ReStructuredText (RST) syntax checker using Sphinx.
+
+Requires Sphinx 1.2 or newer.  See URL `http://sphinx-doc.org'."
+  :command ("sphinx-build" "-b" "pseudoxml"
+            "-q" "-N"                   ; Reduced output and no colors
+            (option-flag "-n" flycheck-sphinx-warn-on-missing-references)
+            (eval (flycheck-locate-sphinx-source-directory))
+            temporary-directory         ; Redirect the output to a temporary
+                                        ; directory
+            source-original)            ; Sphinx needs the original document
+  :error-patterns
+  ((warning line-start (file-name) ":" line ": WARNING: " (message) line-end)
+   (error line-start
+          (file-name) ":" line
+          ": " (or "ERROR" "SEVERE") ": "
+          (message) line-end))
+  :modes rst-mode
+  :predicate (lambda () (and (flycheck-buffer-saved-p)
+                             (flycheck-locate-sphinx-source-directory))))
+
+(flycheck-def-config-file-var flycheck-rubocoprc ruby-rubocop ".rubocop.yml"
+  :safe #'stringp)
+
+(flycheck-def-option-var flycheck-rubocop-lint-only nil ruby-rubocop
+  "Whether to only report code issues in Rubocop.
+
+When non-nil, only report code issues in Rubocop, via `--lint'.
+Otherwise report style issues as well."
+  :safe #'booleanp
+  :type 'boolean
+  :package-version '(flycheck . "0.16"))
+
+(flycheck-define-checker ruby-rubocop
+  "A Ruby syntax and style checker using the RuboCop tool.
+
+See URL `http://batsov.com/rubocop/'."
+  :command ("rubocop" "--display-cop-names" "--format" "emacs"
+            (config-file "--config" flycheck-rubocoprc)
+            (option-flag "--lint" flycheck-rubocop-lint-only)
+            source)
+  :error-patterns
+  ((info line-start (file-name) ":" line ":" column ": C: "
+         (optional (id (one-or-more (not (any ":")))) ": ") (message) line-end)
+   (warning line-start (file-name) ":" line ":" column ": W: "
+            (optional (id (one-or-more (not (any ":")))) ": ") (message)
+            line-end)
+   (error line-start (file-name) ":" line ":" column ": " (or "E" "F") ": "
+          (optional (id (one-or-more (not (any ":")))) ": ") (message)
+          line-end))
+  :modes (enh-ruby-mode ruby-mode)
+  :next-checkers ((warning . ruby-rubylint)))
+
+;; Default to `nil' to let Rubylint find its configuration file by itself, and
+;; to maintain backwards compatibility with older Rubylint and Flycheck releases
+(flycheck-def-config-file-var flycheck-rubylintrc ruby-rubylint nil
+  :safe #'stringp)
+
+(flycheck-define-checker ruby-rubylint
+  "A Ruby syntax and code analysis checker using ruby-lint.
+
+Requires ruby-lint 2.0 or newer.  To use `flycheck-rubylintrc',
+ruby-lint 2.0.2 or newer is required.  See URL
+`https://github.com/YorickPeterse/ruby-lint'."
+  :command ("ruby-lint" "--presenter=syntastic"
+            (config-file "--config" flycheck-rubylintrc)
+            source)
+  :error-patterns
+  ((info line-start
+         (file-name) ":I:" line ":" column ": " (message) line-end)
+   (warning line-start
+            (file-name) ":W:" line ":" column ": " (message) line-end)
+   (error line-start
+          (file-name) ":E:" line ":" column ": " (message) line-end))
+  :modes (enh-ruby-mode ruby-mode))
+
+(flycheck-define-checker ruby
+  "A Ruby syntax checker using the standard Ruby interpreter.
+
+Please note that the output of different Ruby versions and
+implementations varies wildly.  This syntax checker supports
+current versions of MRI and JRuby, but may break when used with
+other implementations or future versions of these
+implementations.
+
+Please consider using `ruby-rubocop' or `ruby-rubylint' instead.
+
+See URL `https://www.ruby-lang.org/'."
+  :command ("ruby" "-w" "-c" source)
+  :error-patterns
+  ;; These patterns support output from JRuby, too, to deal with RVM or Rbenv
+  ((error line-start
+          "SyntaxError in " (file-name) ":" line ": " (message)
+          line-end)
+   (warning line-start
+            (file-name) ":" line ":" (optional column ":")
+            " warning: " (message) line-end)
+   (error line-start (file-name) ":" line ": " (message) line-end))
+  :modes (enh-ruby-mode ruby-mode)
+  :next-checkers ((warning . ruby-rubylint)))
+
+(flycheck-define-checker ruby-jruby
+  "A Ruby syntax checker using the JRuby interpreter.
+
+This syntax checker is very primitive, and may break on future
+versions of JRuby.
+
+Please consider using `ruby-rubocop' or `ruby-rubylint' instead.
+
+See URL `http://jruby.org/'."
+  :command ("jruby" "-w" "-c" source)
+  :error-patterns
+  ((error line-start
+          "SyntaxError in " (file-name) ":" line ": " (message)
+          line-end)
+   (warning line-start (file-name) ":" line " warning: " (message) line-end)
+   (error line-start (file-name) ":" line ": " (message) line-end))
+  :modes (enh-ruby-mode ruby-mode)
+  :next-checkers ((warning . ruby-rubylint)))
+
+(flycheck-def-option-var flycheck-rust-check-tests t rust
+  "Whether to check test code in Rust.
+
+When non-nil, `rustc' is passed the `--test' flag, which will
+check any code marked with the `#[cfg(test)]' attribute and any
+functions marked with `#[test]'. Otherwise, `rustc' is not passed
+`--test' and test code will not be checked.  Skipping `--test' is
+necessary when using `#![no_std]', because compiling the test
+runner requires `std'."
+  :type 'boolean
+  :safe #'booleanp
+  :package-version '("flycheck" . "0.19"))
+
+(flycheck-def-option-var flycheck-rust-crate-root nil rust
+  "A path to the crate root for the current buffer.
+
+The value of this variable is either a string with the path to
+the crate root for the current buffer, or nil if the current buffer
+is a crate.  A relative path is relative to the current buffer.
+
+If this variable is non nil the current buffer will only be checked
+if it is not modified, i.e. after it has been saved."
+  :type 'string
+  :package-version '(flycheck . "0.20")
+  :safe #'stringp)
+(make-variable-buffer-local 'flycheck-rust-crate-root)
+
+(flycheck-def-option-var flycheck-rust-crate-type "lib" rust
+  "The type of the Rust Crate to check.
+
+The value of this variable is a string denoting the crate type,
+for the `--crate-type' flag."
+  :type 'string
+  :safe #'stringp
+  :package-version '("flycheck" . "0.20"))
+(make-variable-buffer-local 'flycheck-rust-crate-type)
+
+(flycheck-def-option-var flycheck-rust-library-path nil rust
+  "A list of library directories for Rust.
+
+The value of this variable is a list of strings, where each
+string is a directory to add to the library path of Rust.
+Relative paths are relative to the file being checked."
+  :type '(repeat (directory :tag "Library directory"))
+  :safe #'flycheck-string-list-p
+  :package-version '(flycheck . "0.18"))
+
+(flycheck-define-checker rust
+  "A Rust syntax checker using Rust compiler.
+
+This syntax checker needs Rust 1.0.0 alpha or newer.
+
+See URL `http://www.rust-lang.org'."
+  :command ("rustc" "-Z" "no-trans"
+            (option "--crate-type" flycheck-rust-crate-type)
+            (option-flag "--test" flycheck-rust-check-tests)
+            (option-list "-L" flycheck-rust-library-path concat)
+            (eval (or flycheck-rust-crate-root
+                      (flycheck-substitute-argument 'source-inplace 'rust))))
+  :error-patterns
+  ((error line-start (file-name) ":" line ":" column ": "
+          (one-or-more digit) ":" (one-or-more digit) " error: "
+          (message) line-end)
+   (warning line-start (file-name) ":" line ":" column ": "
+            (one-or-more digit) ":" (one-or-more digit) " warning: "
+            (message) line-end)
+   (info line-start (file-name) ":" line ":" column ": "
+         (one-or-more digit) ":" (one-or-more digit) " " (or "note" "help") ": "
+         (message) line-end))
+  :modes rust-mode
+  :predicate (lambda ()
+               (or (not flycheck-rust-crate-root) (flycheck-buffer-saved-p))))
+
+(defvar flycheck-sass-scss-cache-directory nil
+  "The cache directory for `sass' and `scss'.")
+
+(defun flycheck-sass-scss-cache-location ()
+  "Get the cache location for `sass' and `scss'.
+
+If no cache directory exists yet, create one and return it.
+Otherwise return the previously used cache directory."
+  (setq flycheck-sass-scss-cache-directory
+        (or flycheck-sass-scss-cache-directory
+            (make-temp-file "flycheck-sass-scss-cache" 'directory))))
+
+(flycheck-def-option-var flycheck-sass-compass nil sass
+  "Whether to enable the Compass CSS framework.
+
+When non-nil, enable the Compass CSS framework, via `--compass'."
+  :type 'boolean
+  :safe #'booleanp
+  :package-version '(flycheck . "0.16"))
+
+(flycheck-define-checker sass
+  "A Sass syntax checker using the Sass compiler.
+
+See URL `http://sass-lang.com'."
+  :command ("sass"
+            "--cache-location" (eval (flycheck-sass-scss-cache-location))
+            (option-flag "--compass" flycheck-sass-compass)
+            "-c" source)
+  :error-patterns
+  ((error line-start "Syntax error on line " line ": " (message))
+   (warning line-start "WARNING on line " line " of " (file-name)
+            ":" (optional "\r") "\n" (message) line-end)
+   (error line-start
+          (or "Syntax error: " "Error: ")
+          (message (one-or-more not-newline)
+                   (zero-or-more "\n"
+                                 (one-or-more " ")
+                                 (one-or-more not-newline)))
+          (optional "\r") "\n        on line " line " of " (file-name)
+          line-end))
+  :modes sass-mode)
+
+(flycheck-define-checker scala
+  "A Scala syntax checker using the Scala compiler.
+
+See URL `http://www.scala-lang.org/'."
+  :command ("scalac" "-Ystop-after:parser" source)
+  :error-patterns
+  ((error line-start (file-name) ":" line ": error: " (message) line-end))
+  :modes scala-mode
+  :next-checkers ((warning . scala-scalastyle)))
+
+(flycheck-def-config-file-var flycheck-scalastylerc scala-scalastyle nil
+  :safe #'stringp
+  :package-version '(flycheck . "0.20"))
+
+(flycheck-def-option-var flycheck-scalastyle-jar nil scala-scalastyle
+  "The path to the main JAR file of Scalastyle.
+
+If this option is nil, or points to a non-existing file,
+`scala-scalastyle' can not be used."
+  :type '(file :must-match t)
+  :safe #'stringp
+  :package-version '(flycheck . "0.20"))
+
+(flycheck-define-checker scala-scalastyle
+  "A Scala style checker using scalastyle.
+
+Note that this syntax checker is not used if
+`flycheck-scalastyle-jar' or `flycheck-scalastylerc' are nil or
+point to non-existing files.
+
+See URL `http://www.scalastyle.org'."
+  :command ("java"
+            (option "-jar" flycheck-scalastyle-jar)
+            (config-file "-c" flycheck-scalastylerc)
+            source)
+  :error-patterns
+  ((error line-start "error file=" (file-name) " message="
+          (message) " line=" line (optional " column=" column) line-end)
+   (warning line-start "warning file=" (file-name) " message="
+            (message) " line=" line (optional " column=" column) line-end))
+  :modes scala-mode
+  :predicate
+  ;; Inhibit this syntax checker if the JAR or the configuration are unset or
+  ;; missing
+  (lambda () (and flycheck-scalastyle-jar flycheck-scalastylerc
+                  (file-exists-p flycheck-scalastyle-jar)
+                  (file-exists-p (flycheck-locate-config-file
+                                  flycheck-scalastylerc 'scala-scalastyle)))))
+
+(flycheck-def-option-var flycheck-scss-compass nil scss
+  "Whether to enable the Compass CSS framework.
+
+When non-nil, enable the Compass CSS framework, via `--compass'."
+  :type 'boolean
+  :safe #'booleanp
+  :package-version '(flycheck . "0.16"))
+
+(flycheck-define-checker scss
+  "A SCSS syntax checker using the SCSS compiler.
+
+See URL `http://sass-lang.com'."
+  :command ("scss"
+            "--cache-location" (eval (flycheck-sass-scss-cache-location))
+            (option-flag "--compass" flycheck-scss-compass)
+            "-c" source)
+  :error-patterns
+  ((error line-start "Syntax error on line " line ": " (message))
+   (warning line-start "WARNING on line " line " of " (file-name)
+            ":" (optional "\r") "\n" (message) line-end)
+   (error line-start
+          (or "Syntax error: " "Error: ")
+          (message (one-or-more not-newline)
+                   (zero-or-more "\n"
+                                 (one-or-more " ")
+                                 (one-or-more not-newline)))
+          (optional "\r") "\n" (one-or-more " ") "on line " line " of " (file-name)
+          line-end))
+  :modes scss-mode)
+
+(flycheck-define-checker sh-bash
+  "A Bash syntax checker using the Bash shell.
+
+See URL `http://www.gnu.org/software/bash/'."
+  :command ("bash" "--norc" "-n" "--" source)
+  :error-patterns ((error line-start
+                          (file-name) ":" (one-or-more (not (any digit)))
+                          line (zero-or-more " ") ":" (zero-or-more " ")
+                          (message) line-end))
+  :modes sh-mode
+  :predicate (lambda () (eq sh-shell 'bash))
+  :next-checkers ((warning . sh-shellcheck)))
+
+(flycheck-define-checker sh-posix-dash
+  "A POSIX Shell syntax checker using the Dash shell.
+
+See URL `http://gondor.apana.org.au/~herbert/dash/'."
+  :command ("dash" "-n" source)
+  :error-patterns
+  ((error line-start (file-name) ": " line ": " (backref 1) ": " (message)))
+  :modes sh-mode
+  :predicate (lambda () (eq sh-shell 'sh))
+  :next-checkers ((warning . sh-shellcheck)))
+
+(flycheck-define-checker sh-posix-bash
+  "A POSIX Shell syntax checker using the Bash shell.
+
+See URL `http://www.gnu.org/software/bash/'."
+  :command ("bash" "--posix" "--norc" "-n" "--" source)
+  :error-patterns
+  ((error line-start
+          (file-name) ":" (one-or-more (not (any digit)))
+          line (zero-or-more " ") ":" (zero-or-more " ")
+          (message) line-end))
+  :modes sh-mode
+  :predicate (lambda () (eq sh-shell 'sh))
+  :next-checkers ((warning . sh-shellcheck)))
+
+(flycheck-define-checker sh-zsh
+  "A Zsh syntax checker using the Zsh shell.
+
+See URL `http://www.zsh.org/'."
+  :command ("zsh" "-n" "-d" "-f" source)
+  :error-patterns
+  ((error line-start (file-name) ":" line ": " (message) line-end))
+  :modes sh-mode
+  :predicate (lambda () (eq sh-shell 'zsh))
+  :next-checkers ((warning . sh-shellcheck)))
+
+(defconst flycheck-shellcheck-supported-shells '(bash ksh88 sh zsh)
+  "Shells supported by ShellCheck.")
+
+(flycheck-def-option-var flycheck-shellcheck-excluded-warnings nil sh-shellcheck
+  "A list of excluded warnings for ShellCheck.
+
+The value of this variable is a list of strings, where each
+string is a warning code to be excluded from ShellCheck reports.
+By default, no warnings are excluded."
+  :type '(repeat :tag "Excluded warnings"
+                 (string :tag "Warning code"))
+  :safe #'flycheck-string-list-p
+  :package-version '(flycheck . "0.21"))
+
+(flycheck-define-checker sh-shellcheck
+  "A shell script syntax and style checker using Shellcheck.
+
+See URL `https://github.com/koalaman/shellcheck/'."
+  :command ("shellcheck"
+            "--format" "checkstyle"
+            "--shell" (eval (symbol-name sh-shell))
+            (option "--exclude" flycheck-shellcheck-excluded-warnings list
+                    flycheck-option-comma-separated-list)
+            source)
+  :error-parser flycheck-parse-checkstyle
+  :error-filter flycheck-dequalify-error-ids
+  :modes sh-mode
+  :predicate (lambda () (memq sh-shell flycheck-shellcheck-supported-shells)))
+
+(flycheck-define-checker slim
+  "A Slim syntax checker using the Slim compiler.
+
+See URL `http://slim-lang.com'."
+  :command ("slimrb" "-c" source)
+  :error-patterns
+  ((error line-start
+          "Slim::Parser::SyntaxError:" (message) (optional "\r") "\n  "
+          (file-name) ", Line " line (optional ", Column " column)
+          line-end))
+  :modes slim-mode)
+
+(flycheck-def-config-file-var flycheck-chktexrc tex-chktex ".chktexrc"
+  :safe #'stringp)
+
+(flycheck-define-checker tex-chktex
+  "A TeX and LaTeX syntax and style checker using chktex.
+
+See URL `http://www.nongnu.org/chktex/'."
+  :command ("chktex" (config-file "-l" flycheck-chktexrc) "-v0" "-q" "-I"
+            source-inplace)
+  :error-patterns
+  ((warning line-start (file-name) ":" line ":" column ":"
+            (id (one-or-more digit)) ":" (message) line-end))
+  :error-filter
+  (lambda (errors)
+    (flycheck-sanitize-errors (flycheck-increment-error-columns errors)))
+  :modes (latex-mode plain-tex-mode))
+
+(flycheck-define-checker tex-lacheck
+  "A LaTeX syntax and style checker using lacheck.
+
+See URL `http://www.ctan.org/pkg/lacheck'."
+  :command ("lacheck" source-inplace)
+  :error-patterns
+  ((warning line-start
+            "\"" (file-name) "\", line " line ": " (message)
+            line-end))
+  :modes latex-mode)
+
+(flycheck-define-checker texinfo
+  "A Texinfo syntax checker using makeinfo.
+
+See URL `http://www.gnu.org/software/texinfo/'."
+  :command ("makeinfo" "-o" null-device source-inplace)
+  :error-patterns
+  ((warning line-start (file-name) ":"
+            line (optional ":" column) ": "
+            "warning: " (message) line-end)
+   (error line-start (file-name) ":"
+          line (optional ":" column) ": "
+          (message) line-end))
+  :modes texinfo-mode)
+
+(flycheck-define-checker verilog-verilator
+  "A Verilog syntax checker using the Verilator Verilog HDL simulator.
+
+See URL `http://www.veripool.org/wiki/verilator'."
+  :command ("verilator" "--lint-only" "-Wall" source)
+  :error-patterns
+  ((warning line-start "%Warning-" (zero-or-more not-newline) ": "
+            (file-name) ":" line ": " (message) line-end)
+   (error line-start "%Error: " (file-name) ":"
+          line ": " (message) line-end))
+  :modes verilog-mode)
+
+(flycheck-define-checker xml-xmlstarlet
+  "A XML syntax checker and validator using the xmlstarlet utility.
+
+See URL `http://xmlstar.sourceforge.net/'."
+  :command ("xmlstarlet" "val" "-e" "-q" source)
+  :error-patterns
+  ((error line-start (file-name) ":" line "." column ": " (message) line-end))
+  :modes (xml-mode nxml-mode))
+
+(flycheck-define-checker xml-xmllint
+  "A XML syntax checker and validator using the xmllint utility.
+
+The xmllint is part of libxml2, see URL
+`http://www.xmlsoft.org/'."
+  :command ("xmllint" "--noout" source)
+  :error-patterns
+  ((error line-start (file-name) ":" line ": " (message) line-end))
+  :modes (xml-mode nxml-mode))
+
+(flycheck-define-checker yaml-jsyaml
+  "A YAML syntax checker using JS-YAML.
+
+See URL `https://github.com/nodeca/js-yaml'."
+  :command ("js-yaml" source)
+  :error-patterns
+  ((error line-start
+          "JS-YAML: " (message) " at line " line ", column " column ":"
+          line-end))
+  :modes yaml-mode)
+
+(flycheck-define-checker yaml-ruby
+  "A YAML syntax checker using Ruby's YAML parser.
+
+This syntax checker uses the YAML parser from Ruby's standard
+library.
+
+See URL `http://www.ruby-doc.org/stdlib-2.0.0/libdoc/yaml/rdoc/YAML.html'."
+  :command ("ruby" "-ryaml" "-e" "begin;
+   file_name = ARGV[0]; \
+   YAML.load(ARGF); \
+ rescue Exception => e; \
+   STDERR.puts \"#{file_name}:#{e}\"; \
+ end" source)
+  :error-patterns
+  (;; Syck (Ruby <= 1.9.2, unmaintained)
+   (error line-start (file-name)
+          ":syntax error on line " line ", col " column ": `" (message) "'" line-end)
+   ;; Psych (Ruby >= 1.9.3)
+   (error line-start (file-name) ":" (zero-or-more not-newline) ":" (message)
+          "at line " line " column " column  line-end))
+  :modes yaml-mode)
+
+(provide 'flycheck)
+
+;; Local Variables:
+;; coding: utf-8
+;; indent-tabs-mode: nil
+;; End:
+
+;;; flycheck.el ends here
diff --git a/elpa/flycheck-20150125.601/flycheck.info b/elpa/flycheck-20150125.601/flycheck.info
new file mode 100644 (file)
index 0000000..8819b13
--- /dev/null
@@ -0,0 +1,2183 @@
+This is flycheck.info, produced by makeinfo version 5.2 from
+flycheck.texi.
+
+This manual is for Flycheck version 0.23-cvs.
+
+Copyright © 2014-2015 Sebastian Wiesner
+
+     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>.
+
+INFO-DIR-SECTION Emacs
+START-INFO-DIR-ENTRY
+* flycheck: (flycheck.info). On the fly syntax checking for GNU Emacs
+END-INFO-DIR-ENTRY
+
+
+   Generated by Sphinx 1.2.3.
+
+\1f
+Indirect:
+flycheck.info-1: 1040
+flycheck.info-2: 301299
+\1f
+Tag Table:
+(Indirect)
+Node: Top\7f1040
+Ref: index doc\7f1924
+Ref: 0\7f1924
+Node: Introduction\7f10527
+Ref: guide/introduction introduction\7f10625
+Ref: 1\7f10625
+Ref: guide/introduction doc\7f10625
+Ref: 2\7f10625
+Node: Features\7f11067
+Ref: guide/introduction features\7f11155
+Ref: 3\7f11155
+Ref: guide/introduction id1\7f11155
+Ref: 4\7f11155
+Node: 3rd party extensions\7f11633
+Ref: guide/introduction rd-party-extensions\7f11721
+Ref: b\7f11721
+Ref: guide/introduction id2\7f11721
+Ref: c\7f11721
+Ref: 3rd party extensions-Footnote-1\7f13145
+Ref: 3rd party extensions-Footnote-2\7f13195
+Ref: 3rd party extensions-Footnote-3\7f13232
+Ref: 3rd party extensions-Footnote-4\7f13293
+Ref: 3rd party extensions-Footnote-5\7f13349
+Ref: 3rd party extensions-Footnote-6\7f13409
+Ref: 3rd party extensions-Footnote-7\7f13462
+Ref: 3rd party extensions-Footnote-8\7f13517
+Ref: 3rd party extensions-Footnote-9\7f13560
+Ref: 3rd party extensions-Footnote-10\7f13610
+Ref: 3rd party extensions-Footnote-11\7f13657
+Ref: 3rd party extensions-Footnote-12\7f13709
+Ref: 3rd party extensions-Footnote-13\7f13741
+Ref: 3rd party extensions-Footnote-14\7f13795
+Ref: 3rd party extensions-Footnote-15\7f13828
+Ref: 3rd party extensions-Footnote-16\7f13880
+Ref: 3rd party extensions-Footnote-17\7f13934
+Ref: 3rd party extensions-Footnote-18\7f13988
+Node: Flycheck versus Flymake\7f14039
+Ref: guide/flycheck-versus-flymake flycheck-versus-flymake\7f14146
+Ref: d\7f14146
+Ref: guide/flycheck-versus-flymake doc\7f14146
+Ref: e\7f14146
+Ref: guide/flycheck-versus-flymake flycheck-rust\7f14146
+Ref: f\7f14146
+Ref: guide/flycheck-versus-flymake id1\7f14146
+Ref: 10\7f14146
+Ref: Flycheck versus Flymake-Footnote-1\7f14918
+Ref: Flycheck versus Flymake-Footnote-2\7f14968
+Ref: Flycheck versus Flymake-Footnote-3\7f15016
+Node: Overview\7f15073
+Ref: guide/flycheck-versus-flymake overview\7f15167
+Ref: 11\7f15167
+Ref: Overview-Footnote-1\7f21229
+Ref: Overview-Footnote-2\7f21290
+Ref: Overview-Footnote-3\7f21421
+Ref: Overview-Footnote-4\7f21534
+Ref: Overview-Footnote-5\7f21959
+Ref: Overview-Footnote-6\7f22117
+Ref: Overview-Footnote-7\7f22218
+Ref: Overview-Footnote-8\7f22368
+Ref: Overview-Footnote-9\7f22520
+Node: Detailed review\7f22672
+Ref: guide/flycheck-versus-flymake detailed-review\7f22766
+Ref: 12\7f22766
+Node: Relation to Emacs\7f23138
+Ref: guide/flycheck-versus-flymake relation-to-emacs\7f23242
+Ref: 13\7f23242
+Ref: Relation to Emacs-Footnote-1\7f23825
+Node: Enabling syntax checking\7f23870
+Ref: guide/flycheck-versus-flymake enabling-syntax-checking\7f23998
+Ref: 14\7f23998
+Ref: Enabling syntax checking-Footnote-1\7f25202
+Node: Syntax checkers\7f25250
+Ref: guide/flycheck-versus-flymake syntax-checkers\7f25389
+Ref: 16\7f25389
+Node: Built-in syntax checkers\7f25513
+Ref: guide/flycheck-versus-flymake built-in-syntax-checkers\7f25633
+Ref: 17\7f25633
+Ref: Built-in syntax checkers-Footnote-1\7f26301
+Ref: Built-in syntax checkers-Footnote-2\7f26351
+Ref: Built-in syntax checkers-Footnote-3\7f26398
+Node: Definition of new syntax checkers\7f26424
+Ref: guide/flycheck-versus-flymake definition-of-new-syntax-checkers\7f26544
+Ref: 18\7f26544
+Ref: Definition of new syntax checkers-Footnote-1\7f28812
+Ref: Definition of new syntax checkers-Footnote-2\7f28860
+Node: Functions as syntax checkers\7f28959
+Ref: guide/flycheck-versus-flymake functions-as-syntax-checkers\7f29106
+Ref: 1a\7f29106
+Ref: Functions as syntax checkers-Footnote-1\7f29820
+Ref: Functions as syntax checkers-Footnote-2\7f29871
+Node: Customization of syntax checkers\7f29923
+Ref: guide/flycheck-versus-flymake customization-of-syntax-checkers\7f30079
+Ref: 1c\7f30079
+Node: Executables of syntax checkers\7f30869
+Ref: guide/flycheck-versus-flymake executables-of-syntax-checkers\7f30970
+Ref: 1e\7f30970
+Node: Syntax checker selection\7f31377
+Ref: guide/flycheck-versus-flymake syntax-checker-selection\7f31517
+Ref: 20\7f31517
+Node: Custom predicates\7f32337
+Ref: guide/flycheck-versus-flymake custom-predicates\7f32442
+Ref: 21\7f32442
+Ref: Custom predicates-Footnote-1\7f33373
+Node: Manual selection\7f33421
+Ref: guide/flycheck-versus-flymake manual-selection\7f33570
+Ref: 22\7f33570
+Node: Multiple syntax checkers per buffer\7f33960
+Ref: guide/flycheck-versus-flymake multiple-syntax-checkers-per-buffer\7f34083
+Ref: 25\7f34083
+Node: Error levels\7f34877
+Ref: guide/flycheck-versus-flymake error-levels\7f35002
+Ref: 26\7f35002
+Ref: Error levels-Footnote-1\7f35764
+Node: Error identifiers\7f35814
+Ref: guide/flycheck-versus-flymake error-identifiers\7f35928
+Ref: 28\7f35928
+Node: Error parsing\7f36367
+Ref: guide/flycheck-versus-flymake error-parsing\7f36490
+Ref: 29\7f36490
+Ref: Error parsing-Footnote-1\7f37471
+Node: Error message display\7f37519
+Ref: guide/flycheck-versus-flymake error-message-display\7f37635
+Ref: 2a\7f37635
+Ref: Error message display-Footnote-1\7f38302
+Node: Error list\7f38359
+Ref: guide/flycheck-versus-flymake error-list\7f38482
+Ref: 2c\7f38482
+Node: Resource consumption\7f38761
+Ref: guide/flycheck-versus-flymake resource-consumption\7f38873
+Ref: 2d\7f38873
+Node: Syntax checking\7f38987
+Ref: guide/flycheck-versus-flymake syntax-checking\7f39090
+Ref: 2e\7f39090
+Ref: Syntax checking-Footnote-1\7f39975
+Node: Checking for changes\7f40025
+Ref: guide/flycheck-versus-flymake checking-for-changes\7f40128
+Ref: 2f\7f40128
+Ref: Checking for changes-Footnote-1\7f41090
+Node: Unit tests\7f41140
+Ref: guide/flycheck-versus-flymake unit-tests\7f41233
+Ref: 30\7f41233
+Ref: Unit tests-Footnote-1\7f41580
+Node: Installation\7f41628
+Ref: guide/installation installation\7f41733
+Ref: 31\7f41733
+Ref: guide/installation merlin\7f41733
+Ref: 32\7f41733
+Ref: guide/installation doc\7f41733
+Ref: 33\7f41733
+Ref: guide/installation id1\7f41733
+Ref: 34\7f41733
+Node: Prerequisites\7f41830
+Ref: guide/installation prerequisites\7f41923
+Ref: 35\7f41923
+Node: Emacs\7f42030
+Ref: guide/installation emacs\7f42112
+Ref: 36\7f42112
+Node: Operating system\7f42551
+Ref: guide/installation operating-system\7f42663
+Ref: 37\7f42663
+Node: Syntax checking tools\7f43249
+Ref: guide/installation syntax-checking-tools\7f43347
+Ref: 38\7f43347
+Ref: Syntax checking tools-Footnote-1\7f44253
+Ref: Syntax checking tools-Footnote-2\7f44293
+Ref: Syntax checking tools-Footnote-3\7f44324
+Node: Package installation\7f44348
+Ref: guide/installation homebrew\7f44455
+Ref: 3b\7f44455
+Ref: guide/installation package-installation\7f44455
+Ref: 3c\7f44455
+Node: Manual\7f44538
+Ref: guide/installation manual\7f44616
+Ref: 3d\7f44616
+Ref: Manual-Footnote-1\7f45334
+Ref: Manual-Footnote-2\7f45359
+Ref: Manual-Footnote-3\7f45391
+Node: Cask\7f45427
+Ref: guide/installation cask\7f45505
+Ref: 3e\7f45505
+Node: Setup\7f45701
+Ref: guide/installation setup\7f45786
+Ref: 3f\7f45786
+Node: Quickstart\7f46101
+Ref: guide/quickstart marmalade\7f46188
+Ref: 40\7f46188
+Ref: guide/quickstart doc\7f46188
+Ref: 41\7f46188
+Ref: guide/quickstart quickstart\7f46188
+Ref: 42\7f46188
+Node: Enable Flycheck\7f46388
+Ref: guide/quickstart enable-flycheck\7f46494
+Ref: 43\7f46494
+Node: Install some syntax checker tools\7f46684
+Ref: guide/quickstart install-some-syntax-checker-tools\7f46823
+Ref: 44\7f46823
+Node: Check syntax in a buffer\7f47475
+Ref: guide/quickstart check-syntax-in-a-buffer\7f47623
+Ref: 46\7f47623
+Node: Navigate and list errors\7f48224
+Ref: guide/quickstart navigate-and-list-errors\7f48355
+Ref: 48\7f48355
+Node: Explore the menu\7f49066
+Ref: guide/quickstart explore-the-menu\7f49188
+Ref: 4c\7f49188
+Node: Further reading\7f49460
+Ref: guide/quickstart further-reading\7f49549
+Ref: 4d\7f49549
+Node: Usage\7f49807
+Ref: guide/usage usage\7f49901
+Ref: 9\7f49901
+Ref: guide/usage doc\7f49901
+Ref: 4e\7f49901
+Ref: guide/usage id1\7f49901
+Ref: 4f\7f49901
+Ref: guide/usage el variable flycheck-keymap-prefix\7f50269
+Ref: 50\7f50269
+Node: Enabling syntax checking<2>\7f51488
+Ref: guide/usage enabling-syntax-checking\7f51584
+Ref: 51\7f51584
+Ref: guide/usage id2\7f51584
+Ref: 52\7f51584
+Ref: guide/usage el function global-flycheck-mode\7f51734
+Ref: 15\7f51734
+Ref: guide/usage el variable global-flycheck-mode\7f52412
+Ref: 55\7f52412
+Ref: guide/usage el function flycheck-mode\7f52928
+Ref: 54\7f52928
+Ref: guide/usage el variable flycheck-mode\7f53012
+Ref: 56\7f53012
+Node: Checking buffers\7f53117
+Ref: guide/usage id3\7f53247
+Ref: 57\7f53247
+Ref: guide/usage checking-buffers\7f53247
+Ref: 6\7f53247
+Ref: guide/usage el variable flycheck-check-syntax-automatically\7f53666
+Ref: 59\7f53666
+Ref: guide/usage el variable flycheck-idle-change-delay\7f55056
+Ref: 58\7f55056
+Ref: guide/usage el function flycheck-buffer\7f55864
+Ref: 47\7f55864
+Ref: guide/usage el function flycheck-verify-setup\7f56181
+Ref: 5a\7f56181
+Ref: guide/usage el variable flycheck-temp-prefix\7f56657
+Ref: 5b\7f56657
+Node: Selecting syntax checkers\7f56973
+Ref: guide/usage id4\7f57103
+Ref: 5c\7f57103
+Ref: guide/usage selecting-syntax-checkers\7f57103
+Ref: 5d\7f57103
+Ref: guide/usage el variable flycheck-checkers\7f57283
+Ref: 5e\7f57283
+Ref: guide/usage el variable flycheck-disabled-checkers\7f58309
+Ref: 5f\7f58309
+Ref: guide/usage el function flycheck-select-checker\7f60173
+Ref: 24\7f60173
+Ref: guide/usage el variable flycheck-completion-system\7f61724
+Ref: 65\7f61724
+Ref: guide/usage el variable flycheck-checker\7f63139
+Ref: 23\7f63139
+Ref: guide/usage el function flycheck-describe-checker\7f64591
+Ref: 3a\7f64591
+Ref: Selecting syntax checkers-Footnote-1\7f64722
+Ref: Selecting syntax checkers-Footnote-2\7f64760
+Node: Configuring syntax checkers\7f64801
+Ref: guide/usage configuring-syntax-checkers\7f64930
+Ref: 8\7f64930
+Ref: guide/usage id5\7f64930
+Ref: 67\7f64930
+Node: Syntax checker executables\7f65105
+Ref: guide/usage id6\7f65228
+Ref: 68\7f65228
+Ref: guide/usage syntax-checker-executables\7f65228
+Ref: 69\7f65228
+Ref: guide/usage el function flycheck-set-checker-executable\7f66017
+Ref: 1f\7f66017
+Node: Syntax checker options\7f66486
+Ref: guide/usage id7\7f66652
+Ref: 6a\7f66652
+Ref: guide/usage syntax-checker-options\7f66652
+Ref: 45\7f66652
+Node: Syntax checker configuration files\7f67194
+Ref: guide/usage syntax-checker-configuration-files\7f67325
+Ref: 6b\7f67325
+Ref: guide/usage id8\7f67325
+Ref: 6c\7f67325
+Ref: guide/usage el variable flycheck-locate-config-file-functions\7f68066
+Ref: 6d\7f68066
+Node: Error reporting\7f69467
+Ref: guide/usage error-reporting\7f69585
+Ref: 7\7f69585
+Ref: guide/usage id9\7f69585
+Ref: 6e\7f69585
+Ref: guide/usage el variable flycheck-checker-error-threshold\7f70256
+Ref: 71\7f70256
+Ref: guide/usage el variable flycheck-highlighting-mode\7f71156
+Ref: 6f\7f71156
+Ref: guide/usage el face flycheck-error\7f72433
+Ref: 72\7f72433
+Ref: guide/usage el face flycheck-warning\7f72459
+Ref: 73\7f72459
+Ref: guide/usage el face flycheck-info\7f72487
+Ref: 74\7f72487
+Ref: guide/usage el variable flycheck-indication-mode\7f73107
+Ref: 70\7f73107
+Ref: guide/usage el face flycheck-fringe-error\7f73785
+Ref: 75\7f73785
+Ref: guide/usage el face flycheck-fringe-warning\7f73818
+Ref: 76\7f73818
+Ref: guide/usage el face flycheck-fringe-info\7f73853
+Ref: 77\7f73853
+Ref: guide/usage el variable flycheck-display-errors-delay\7f74227
+Ref: 78\7f74227
+Ref: guide/usage el variable flycheck-display-errors-function\7f74855
+Ref: 2b\7f74855
+Ref: guide/usage el function flycheck-display-error-messages\7f75343
+Ref: 79\7f75343
+Ref: guide/usage el function flycheck-display-error-messages-unless-error-list\7f75900
+Ref: 7a\7f75900
+Ref: guide/usage el function flycheck-clear\7f76714
+Ref: 7c\7f76714
+Ref: Error reporting-Footnote-1\7f76962
+Ref: Error reporting-Footnote-2\7f77013
+Ref: Error reporting-Footnote-3\7f77062
+Node: Listing errors\7f77115
+Ref: guide/usage id10\7f77228
+Ref: 7d\7f77228
+Ref: guide/usage listing-errors\7f77228
+Ref: 7b\7f77228
+Ref: guide/usage el function flycheck-list-errors\7f77392
+Ref: 4b\7f77392
+Ref: guide/usage el variable flycheck-error-list-after-refresh-hook\7f77845
+Ref: 7e\7f77845
+Ref: guide/usage el face flycheck-error-list-highlight\7f78498
+Ref: 7f\7f78498
+Ref: guide/usage el face flycheck-error-list-line-number\7f78808
+Ref: 80\7f78808
+Ref: guide/usage el face flycheck-error-list-column-number\7f79011
+Ref: 81\7f79011
+Ref: guide/usage el face flycheck-error-list-checker-name\7f79216
+Ref: 82\7f79216
+Node: Copying killing errors\7f79431
+Ref: guide/usage killing-errors\7f79561
+Ref: 83\7f79561
+Ref: guide/usage copying-killing-errors\7f79561
+Ref: 84\7f79561
+Ref: guide/usage el function flycheck-copy-errors-as-kill\7f79753
+Ref: 85\7f79753
+Node: Navigating and jumping to errors\7f80481
+Ref: guide/usage navigating-errors\7f80616
+Ref: 86\7f80616
+Ref: guide/usage navigating-and-jumping-to-errors\7f80616
+Ref: 87\7f80616
+Ref: guide/usage el variable flycheck-standard-error-navigation\7f81414
+Ref: 88\7f81414
+Ref: guide/usage el function flycheck-next-error\7f82684
+Ref: 49\7f82684
+Ref: guide/usage el function flycheck-previous-error\7f82966
+Ref: 4a\7f82966
+Ref: guide/usage el function flycheck-first-error\7f83244
+Ref: 89\7f83244
+Ref: guide/usage el variable flycheck-navigation-minimum-level\7f83828
+Ref: 8a\7f83828
+Node: Mode line reporting\7f84358
+Ref: guide/usage id11\7f84462
+Ref: 8c\7f84462
+Ref: guide/usage mode-line-reporting\7f84462
+Ref: 63\7f84462
+Ref: guide/usage el variable flycheck-mode-line\7f85476
+Ref: 8e\7f85476
+Ref: Mode line reporting-Footnote-1\7f86896
+Node: Supported languages\7f86957
+Ref: guide/languages flycheck-color-mode-line\7f87049
+Ref: 93\7f87049
+Ref: guide/languages id1\7f87049
+Ref: 94\7f87049
+Ref: guide/languages doc\7f87049
+Ref: 39\7f87049
+Ref: guide/languages supported-languages\7f87049
+Ref: 5\7f87049
+Ref: Supported languages-Footnote-1\7f88288
+Ref: Supported languages-Footnote-2\7f88339
+Ref: Supported languages-Footnote-3\7f88370
+Ref: Supported languages-Footnote-4\7f88423
+Ref: Supported languages-Footnote-5\7f88455
+Ref: Supported languages-Footnote-6\7f88506
+Node: Ada\7f88558
+Ref: guide/languages ada\7f88636
+Ref: 95\7f88636
+Ref: guide/languages el flycheck-checker ada-gnat\7f88653
+Ref: 96\7f88653
+Ref: guide/languages el variable flycheck-gnat-args\7f88868
+Ref: 97\7f88868
+Ref: guide/languages el variable flycheck-gnat-include-path\7f89298
+Ref: 98\7f89298
+Ref: guide/languages el variable flycheck-gnat-language-standard\7f89996
+Ref: 9a\7f89996
+Ref: guide/languages el variable flycheck-gnat-warnings\7f90689
+Ref: 9b\7f90689
+Ref: Ada-Footnote-1\7f91574
+Node: AsciiDoc\7f91627
+Ref: guide/languages asciidoc\7f91719
+Ref: 9c\7f91719
+Ref: guide/languages el flycheck-checker asciidoc\7f91746
+Ref: 9d\7f91746
+Ref: AsciiDoc-Footnote-1\7f91940
+Node: C/C++\7f91982
+Ref: guide/languages c-c\7f92079
+Ref: 9e\7f92079
+Ref: guide/languages el flycheck-checker c/c++-clang\7f92100
+Ref: 9f\7f92100
+Ref: guide/languages el variable flycheck-clang-args\7f92547
+Ref: a2\7f92547
+Ref: guide/languages el variable flycheck-clang-blocks\7f92984
+Ref: a3\7f92984
+Ref: guide/languages el variable flycheck-clang-definitions\7f93637
+Ref: a4\7f93637
+Ref: guide/languages el variable flycheck-clang-include-path\7f94313
+Ref: a5\7f94313
+Ref: guide/languages el variable flycheck-clang-includes\7f95018
+Ref: a6\7f95018
+Ref: guide/languages el variable flycheck-clang-language-standard\7f95718
+Ref: a7\7f95718
+Ref: guide/languages el variable flycheck-clang-ms-extensions\7f96463
+Ref: a8\7f96463
+Ref: guide/languages el variable flycheck-clang-no-exceptions\7f97064
+Ref: a9\7f97064
+Ref: guide/languages el variable flycheck-clang-no-rtti\7f97648
+Ref: aa\7f97648
+Ref: guide/languages el variable flycheck-clang-standard-library\7f98198
+Ref: ab\7f98198
+Ref: guide/languages el variable flycheck-clang-warnings\7f98984
+Ref: 1d\7f98984
+Ref: guide/languages el flycheck-checker c/c++-gcc\7f99926
+Ref: ac\7f99926
+Ref: guide/languages el variable flycheck-gcc-args\7f100395
+Ref: ad\7f100395
+Ref: guide/languages el variable flycheck-gcc-definitions\7f100826
+Ref: ae\7f100826
+Ref: guide/languages el variable flycheck-gcc-include-path\7f101494
+Ref: af\7f101494
+Ref: guide/languages el variable flycheck-gcc-includes\7f102191
+Ref: b0\7f102191
+Ref: guide/languages el variable flycheck-gcc-language-standard\7f102885
+Ref: b1\7f102885
+Ref: guide/languages el variable flycheck-gcc-no-exceptions\7f103624
+Ref: b2\7f103624
+Ref: guide/languages el variable flycheck-gcc-no-rtti\7f104202
+Ref: b3\7f104202
+Ref: guide/languages el variable flycheck-gcc-openmp\7f104746
+Ref: b4\7f104746
+Ref: guide/languages el variable flycheck-gcc-warnings\7f105302
+Ref: b5\7f105302
+Ref: guide/languages el flycheck-checker c/c++-cppcheck\7f106228
+Ref: a1\7f106228
+Ref: guide/languages el variable flycheck-cppcheck-checks\7f106396
+Ref: b6\7f106396
+Ref: guide/languages el variable flycheck-cppcheck-inconclusive\7f107344
+Ref: b7\7f107344
+Ref: C/C++-Footnote-1\7f108373
+Ref: C/C++-Footnote-2\7f108404
+Ref: C/C++-Footnote-3\7f108462
+Ref: C/C++-Footnote-4\7f108514
+Ref: C/C++-Footnote-5\7f108566
+Ref: C/C++-Footnote-6\7f108595
+Ref: C/C++-Footnote-7\7f108639
+Ref: C/C++-Footnote-8\7f108680
+Ref: C/C++-Footnote-9\7f108731
+Ref: C/C++-Footnote-10\7f108781
+Ref: C/C++-Footnote-11\7f108828
+Node: CFEngine\7f108889
+Ref: guide/languages cfengine\7f108982
+Ref: b8\7f108982
+Ref: guide/languages flycheck-google-cpplint\7f108982
+Ref: b9\7f108982
+Ref: guide/languages el flycheck-checker cfengine\7f109009
+Ref: ba\7f109009
+Ref: CFEngine-Footnote-1\7f109180
+Node: Chef\7f109209
+Ref: guide/languages chef\7f109309
+Ref: bb\7f109309
+Ref: guide/languages el flycheck-checker chef-foodcritic\7f109356
+Ref: bc\7f109356
+Ref: Chef-Footnote-1\7f109554
+Ref: Chef-Footnote-2\7f109592
+Node: Coffeescript\7f109635
+Ref: guide/languages coffeescript\7f109730
+Ref: bd\7f109730
+Ref: guide/languages id3\7f109730
+Ref: be\7f109730
+Ref: guide/languages el flycheck-checker coffee\7f109765
+Ref: bf\7f109765
+Ref: guide/languages el flycheck-checker coffee-coffeelint\7f110192
+Ref: c0\7f110192
+Ref: guide/languages el variable flycheck-coffeelintrc\7f110454
+Ref: c1\7f110454
+Ref: Coffeescript-Footnote-1\7f110763
+Ref: Coffeescript-Footnote-2\7f110796
+Node: Coq\7f110831
+Ref: guide/languages coq\7f110925
+Ref: c2\7f110925
+Ref: guide/languages el flycheck-checker coq\7f110942
+Ref: c3\7f110942
+Ref: Coq-Footnote-1\7f111108
+Node: CSS\7f111137
+Ref: guide/languages css\7f111220
+Ref: c4\7f111220
+Ref: guide/languages el flycheck-checker css-csslint\7f111237
+Ref: c5\7f111237
+Ref: CSS-Footnote-1\7f111427
+Node: D\7f111470
+Ref: guide/languages d\7f111556
+Ref: c6\7f111556
+Ref: guide/languages el flycheck-checker d-dmd\7f111569
+Ref: c7\7f111569
+Ref: guide/languages el variable flycheck-dmd-include-path\7f111754
+Ref: c8\7f111754
+Ref: D-Footnote-1\7f112597
+Ref: D-Footnote-2\7f112623
+Node: Elixir\7f112679
+Ref: guide/languages flycheck-d-unittest\7f112772
+Ref: c9\7f112772
+Ref: guide/languages elixir\7f112772
+Ref: ca\7f112772
+Ref: guide/languages el flycheck-checker elixir\7f112797
+Ref: cb\7f112797
+Ref: Elixir-Footnote-1\7f112979
+Node: Emacs Lisp\7f113011
+Ref: guide/languages emacs-lisp\7f113109
+Ref: cc\7f113109
+Ref: guide/languages el flycheck-checker emacs-lisp\7f113196
+Ref: cd\7f113196
+Ref: guide/languages el variable flycheck-emacs-lisp-initialize-packages\7f113618
+Ref: cf\7f113618
+Ref: guide/languages el variable flycheck-emacs-lisp-load-path\7f114424
+Ref: d0\7f114424
+Ref: guide/languages el variable flycheck-emacs-lisp-package-user-dir\7f115623
+Ref: d1\7f115623
+Ref: guide/languages el flycheck-checker emacs-lisp-checkdoc\7f116468
+Ref: ce\7f116468
+Ref: Emacs Lisp-Footnote-1\7f116730
+Ref: Emacs Lisp-Footnote-2\7f116773
+Ref: Emacs Lisp-Footnote-3\7f116850
+Ref: Emacs Lisp-Footnote-4\7f116900
+Node: Erlang\7f116937
+Ref: guide/languages erlang\7f117034
+Ref: d2\7f117034
+Ref: guide/languages cask\7f117034
+Ref: d3\7f117034
+Ref: guide/languages el flycheck-checker erlang\7f117059
+Ref: d4\7f117059
+Ref: Erlang-Footnote-1\7f117240
+Node: ERuby\7f117271
+Ref: guide/languages eruby\7f117365
+Ref: d5\7f117365
+Ref: guide/languages el flycheck-checker eruby-erubis\7f117388
+Ref: d6\7f117388
+Ref: ERuby-Footnote-1\7f117589
+Node: Fortran\7f117631
+Ref: guide/languages fortran\7f117721
+Ref: d7\7f117721
+Ref: guide/languages el flycheck-checker fortran-gfortran\7f117748
+Ref: d8\7f117748
+Ref: guide/languages el variable flycheck-gfortran-args\7f117977
+Ref: d9\7f117977
+Ref: guide/languages el variable flycheck-gfortran-include-path\7f118427
+Ref: da\7f118427
+Ref: guide/languages el variable flycheck-gfortran-language-standard\7f119144
+Ref: db\7f119144
+Ref: guide/languages el variable flycheck-gfortran-layout\7f119854
+Ref: dc\7f119854
+Ref: guide/languages el variable flycheck-gfortran-warnings\7f120373
+Ref: dd\7f120373
+Ref: Fortran-Footnote-1\7f121030
+Ref: Fortran-Footnote-2\7f121079
+Node: Go\7f121128
+Ref: guide/languages go\7f121217
+Ref: de\7f121217
+Ref: guide/languages el flycheck-checker go-gofmt\7f121234
+Ref: df\7f121234
+Ref: guide/languages el flycheck-checker go-golint\7f122071
+Ref: e0\7f122071
+Ref: guide/languages el flycheck-checker go-vet\7f122532
+Ref: e1\7f122532
+Ref: guide/languages el variable flycheck-go-vet-print-functions\7f123076
+Ref: e5\7f123076
+Ref: guide/languages el flycheck-checker go-build\7f124064
+Ref: e2\7f124064
+Ref: guide/languages el flycheck-checker go-test\7f124507
+Ref: e3\7f124507
+Ref: guide/languages el flycheck-checker go-errcheck\7f124948
+Ref: e4\7f124948
+Ref: Go-Footnote-1\7f125128
+Ref: Go-Footnote-2\7f125165
+Ref: Go-Footnote-3\7f125204
+Ref: Go-Footnote-4\7f125238
+Ref: Go-Footnote-5\7f125298
+Ref: Go-Footnote-6\7f125331
+Ref: Go-Footnote-7\7f125364
+Node: Haml\7f125408
+Ref: guide/languages haml\7f125500
+Ref: e6\7f125500
+Ref: guide/languages el flycheck-checker haml\7f125521
+Ref: e7\7f125521
+Ref: Haml-Footnote-1\7f125686
+Node: Handlebars\7f125711
+Ref: guide/languages handlebars\7f125808
+Ref: e8\7f125808
+Ref: guide/languages el flycheck-checker handlebars\7f125841
+Ref: e9\7f125841
+Ref: Handlebars-Footnote-1\7f126032
+Node: Haskell\7f126065
+Ref: guide/languages haskell\7f126162
+Ref: ea\7f126162
+Ref: guide/languages el flycheck-checker haskell-ghc\7f126189
+Ref: eb\7f126189
+Ref: guide/languages el variable flycheck-ghc-args\7f126649
+Ref: ed\7f126649
+Ref: guide/languages el variable flycheck-ghc-language-extensions\7f127084
+Ref: ee\7f127084
+Ref: guide/languages el variable flycheck-ghc-no-user-package-database\7f127778
+Ref: ef\7f127778
+Ref: guide/languages el variable flycheck-ghc-package-databases\7f128392
+Ref: f0\7f128392
+Ref: guide/languages el variable flycheck-ghc-search-path\7f129091
+Ref: f1\7f129091
+Ref: guide/languages el flycheck-checker haskell-hlint\7f129962
+Ref: ec\7f129962
+Ref: Haskell-Footnote-1\7f130252
+Ref: Haskell-Footnote-2\7f130288
+Ref: Haskell-Footnote-3\7f130341
+Ref: Haskell-Footnote-4\7f130385
+Ref: Haskell-Footnote-5\7f130440
+Node: HTML\7f130483
+Ref: guide/languages hdevtools\7f130580
+Ref: f2\7f130580
+Ref: guide/languages html\7f130580
+Ref: f3\7f130580
+Ref: guide/languages el flycheck-checker html-tidy\7f130601
+Ref: f4\7f130601
+Ref: guide/languages el variable flycheck-tidyrc\7f130799
+Ref: f5\7f130799
+Ref: HTML-Footnote-1\7f131094
+Node: Javascript\7f131136
+Ref: guide/languages javascript\7f131230
+Ref: f6\7f131230
+Ref: guide/languages el flycheck-checker javascript-jshint\7f131263
+Ref: f7\7f131263
+Ref: guide/languages el variable flycheck-jshintrc\7f131465
+Ref: f8\7f131465
+Ref: guide/languages el flycheck-checker javascript-eslint\7f131734
+Ref: f9\7f131734
+Ref: guide/languages el variable flycheck-eslint-rulesdir\7f131925
+Ref: fa\7f131925
+Ref: guide/languages el variable flycheck-eslintrc\7f132846
+Ref: fb\7f132846
+Ref: guide/languages el flycheck-checker javascript-gjslint\7f133244
+Ref: fc\7f133244
+Ref: guide/languages el variable flycheck-gjslintrc\7f133481
+Ref: fd\7f133481
+Ref: Javascript-Footnote-1\7f133788
+Ref: Javascript-Footnote-2\7f133818
+Ref: Javascript-Footnote-3\7f133859
+Ref: Javascript-Footnote-4\7f133953
+Node: JSON\7f134009
+Ref: guide/languages json\7f134103
+Ref: fe\7f134103
+Ref: guide/languages el flycheck-checker json-jsonlint\7f134124
+Ref: ff\7f134124
+Ref: JSON-Footnote-1\7f134317
+Node: LESS\7f134359
+Ref: guide/languages less\7f134446
+Ref: 100\7f134446
+Ref: guide/languages el flycheck-checker less\7f134467
+Ref: 101\7f134467
+Ref: LESS-Footnote-1\7f134671
+Node: Lua\7f134698
+Ref: guide/languages lua\7f134785
+Ref: 102\7f134785
+Ref: guide/languages el flycheck-checker lua\7f134804
+Ref: 103\7f134804
+Ref: Lua-Footnote-1\7f134969
+Node: Make\7f134997
+Ref: guide/languages make\7f135084
+Ref: 104\7f135084
+Ref: guide/languages el flycheck-checker make\7f135105
+Ref: 105\7f135105
+Ref: Make-Footnote-1\7f135438
+Ref: Make-Footnote-2\7f135515
+Ref: Make-Footnote-3\7f135557
+Ref: Make-Footnote-4\7f135623
+Ref: Make-Footnote-5\7f135687
+Node: Perl\7f135745
+Ref: guide/languages openbsd-make\7f135832
+Ref: 106\7f135832
+Ref: guide/languages perl\7f135832
+Ref: 107\7f135832
+Ref: guide/languages el flycheck-checker perl\7f135853
+Ref: 108\7f135853
+Ref: guide/languages el flycheck-checker perl-perlcritic\7f136214
+Ref: 109\7f136214
+Ref: guide/languages el variable flycheck-perlcritic-severity\7f136398
+Ref: 10a\7f136398
+Ref: Perl-Footnote-1\7f137048
+Ref: Perl-Footnote-2\7f137076
+Node: PHP\7f137122
+Ref: guide/languages php\7f137211
+Ref: 10b\7f137211
+Ref: guide/languages el flycheck-checker php\7f137230
+Ref: 10c\7f137230
+Ref: guide/languages el flycheck-checker php-phpmd\7f137791
+Ref: 10d\7f137791
+Ref: guide/languages el variable flycheck-phpmd-rulesets\7f138172
+Ref: 10f\7f138172
+Ref: guide/languages el flycheck-checker php-phpcs\7f138744
+Ref: 10e\7f138744
+Ref: guide/languages el variable flycheck-phpcs-standard\7f138930
+Ref: 110\7f138930
+Ref: PHP-Footnote-1\7f139580
+Ref: PHP-Footnote-2\7f139638
+Ref: PHP-Footnote-3\7f139664
+Ref: PHP-Footnote-4\7f139714
+Node: Puppet\7f139767
+Ref: guide/languages puppet\7f139858
+Ref: 111\7f139858
+Ref: guide/languages el flycheck-checker puppet-parser\7f139883
+Ref: 112\7f139883
+Ref: guide/languages el flycheck-checker puppet-lint\7f140324
+Ref: 113\7f140324
+Ref: Puppet-Footnote-1\7f140503
+Ref: Puppet-Footnote-2\7f140534
+Node: Python\7f140566
+Ref: guide/languages python\7f140655
+Ref: 114\7f140655
+Ref: guide/languages el flycheck-checker python-flake8\7f140680
+Ref: 115\7f140680
+Ref: guide/languages el variable flycheck-flake8-error-level-alist\7f140901
+Ref: 116\7f140901
+Ref: guide/languages el variable flycheck-flake8-maximum-complexity\7f142166
+Ref: 117\7f142166
+Ref: guide/languages el variable flycheck-flake8-maximum-line-length\7f142865
+Ref: 119\7f142865
+Ref: guide/languages el variable flycheck-flake8rc\7f143818
+Ref: 118\7f143818
+Ref: guide/languages el flycheck-checker python-pylint\7f144083
+Ref: 11a\7f144083
+Ref: guide/languages el variable flycheck-pylintrc\7f144334
+Ref: 11b\7f144334
+Ref: guide/languages el flycheck-checker python-pycompile\7f144599
+Ref: 11c\7f144599
+Ref: Python-Footnote-1\7f144910
+Ref: Python-Footnote-2\7f144954
+Ref: Python-Footnote-3\7f144985
+Ref: Python-Footnote-4\7f145045
+Node: R\7f145098
+Ref: guide/languages flycheck-pyflakes\7f145187
+Ref: 11d\7f145187
+Ref: guide/languages r\7f145187
+Ref: 11e\7f145187
+Ref: guide/languages el flycheck-checker r-lintr\7f145202
+Ref: 11f\7f145202
+Ref: guide/languages el variable flycheck-lintr-caching\7f145388
+Ref: 120\7f145388
+Ref: guide/languages el variable flycheck-lintr-linters\7f146055
+Ref: 121\7f146055
+Ref: R-Footnote-1\7f146617
+Node: Racket\7f146660
+Ref: guide/languages racket\7f146751
+Ref: 122\7f146751
+Ref: guide/languages el flycheck-checker racket\7f146776
+Ref: 123\7f146776
+Ref: Racket-Footnote-1\7f146954
+Node: RPM SPEC\7f146986
+Ref: guide/languages rpm-spec\7f147092
+Ref: 124\7f147092
+Ref: guide/languages el flycheck-checker rpm-rpmlint\7f147121
+Ref: 125\7f147121
+Ref: RPM SPEC-Footnote-1\7f147317
+Node: ReStructuredText\7f147366
+Ref: guide/languages restructuredtext\7f147470
+Ref: 126\7f147470
+Ref: guide/languages el flycheck-checker rst\7f147515
+Ref: 127\7f147515
+Ref: guide/languages el flycheck-checker rst-sphinx\7f147668
+Ref: 128\7f147668
+Ref: guide/languages el variable flycheck-sphinx-warn-on-missing-references\7f147874
+Ref: 129\7f147874
+Ref: ReStructuredText-Footnote-1\7f148526
+Ref: ReStructuredText-Footnote-2\7f148567
+Node: Ruby\7f148597
+Ref: guide/languages ruby\7f148697
+Ref: 12a\7f148697
+Ref: guide/languages el flycheck-checker ruby-rubocop\7f148718
+Ref: 12b\7f148718
+Ref: guide/languages el variable flycheck-rubocop-lint-only\7f149190
+Ref: 12d\7f149190
+Ref: guide/languages el variable flycheck-rubocoprc\7f149857
+Ref: 12e\7f149857
+Ref: guide/languages el flycheck-checker ruby-rubylint\7f150122
+Ref: 12c\7f150122
+Ref: guide/languages el variable flycheck-rubylintrc\7f150474
+Ref: 12f\7f150474
+Ref: guide/languages el flycheck-checker ruby\7f150845
+Ref: 130\7f150845
+Ref: guide/languages el flycheck-checker ruby-jruby\7f151644
+Ref: 131\7f151644
+Ref: Ruby-Footnote-1\7f152285
+Ref: Ruby-Footnote-2\7f152320
+Ref: Ruby-Footnote-3\7f152371
+Ref: Ruby-Footnote-4\7f152406
+Node: Rust\7f152432
+Ref: guide/languages rust\7f152520
+Ref: 132\7f152520
+Ref: guide/languages el flycheck-checker rust\7f152541
+Ref: 133\7f152541
+Ref: guide/languages el variable flycheck-rust-check-tests\7f152753
+Ref: 134\7f152753
+Ref: guide/languages el variable flycheck-rust-crate-root\7f153544
+Ref: 135\7f153544
+Ref: guide/languages el variable flycheck-rust-crate-type\7f154437
+Ref: 136\7f154437
+Ref: guide/languages el variable flycheck-rust-library-path\7f154941
+Ref: 137\7f154941
+Ref: Rust-Footnote-1\7f155826
+Ref: Rust-Footnote-2\7f155859
+Node: Sass\7f155909
+Ref: guide/languages flycheck-rust\7f155998
+Ref: 138\7f155998
+Ref: guide/languages sass\7f155998
+Ref: 139\7f155998
+Ref: guide/languages el flycheck-checker sass\7f156019
+Ref: 13a\7f156019
+Ref: guide/languages el variable flycheck-sass-compass\7f156179
+Ref: 13b\7f156179
+Ref: Sass-Footnote-1\7f156770
+Node: Scala\7f156799
+Ref: guide/languages scala\7f156888
+Ref: 13c\7f156888
+Ref: guide/languages el flycheck-checker scala\7f156911
+Ref: 13d\7f156911
+Ref: guide/languages el flycheck-checker scala-scalastyle\7f157344
+Ref: 13e\7f157344
+Ref: guide/languages el variable flycheck-scalastyle-jar\7f157701
+Ref: 13f\7f157701
+Ref: guide/languages el variable flycheck-scalastylerc\7f158356
+Ref: 140\7f158356
+Ref: Scala-Footnote-1\7f158793
+Ref: Scala-Footnote-2\7f158828
+Node: Scss\7f158862
+Ref: guide/languages scss\7f158969
+Ref: 141\7f158969
+Ref: guide/languages el flycheck-checker scss\7f158990
+Ref: 142\7f158990
+Ref: guide/languages el variable flycheck-scss-compass\7f159150
+Ref: 143\7f159150
+Ref: Scss-Footnote-1\7f159741
+Node: Shell script languages\7f159770
+Ref: guide/languages shell-script-languages\7f159876
+Ref: 144\7f159876
+Ref: guide/languages el flycheck-checker sh-bash\7f159933
+Ref: 145\7f159933
+Ref: guide/languages el flycheck-checker sh-posix-dash\7f160368
+Ref: 147\7f160368
+Ref: guide/languages el flycheck-checker sh-posix-bash\7f160891
+Ref: 148\7f160891
+Ref: guide/languages el flycheck-checker sh-zsh\7f161430
+Ref: 149\7f161430
+Ref: guide/languages el flycheck-checker sh-shellcheck\7f161848
+Ref: 146\7f161848
+Ref: guide/languages el variable flycheck-shellcheck-excluded-warnings\7f162048
+Ref: 14a\7f162048
+Ref: Shell script languages-Footnote-1\7f162793
+Ref: Shell script languages-Footnote-2\7f162835
+Ref: Shell script languages-Footnote-3\7f162885
+Ref: Shell script languages-Footnote-4\7f162967
+Ref: Shell script languages-Footnote-5\7f163009
+Ref: Shell script languages-Footnote-6\7f163105
+Ref: Shell script languages-Footnote-7\7f163187
+Ref: Shell script languages-Footnote-8\7f163215
+Node: Slim\7f163263
+Ref: guide/languages gnu-bash-posix-mode\7f163374
+Ref: 14b\7f163374
+Ref: guide/languages slim\7f163374
+Ref: 14c\7f163374
+Ref: guide/languages el flycheck-checker slim\7f163395
+Ref: 14d\7f163395
+Ref: Slim-Footnote-1\7f163564
+Node: TeX/LaTeX\7f163593
+Ref: guide/languages tex-latex\7f163689
+Ref: 14e\7f163689
+Ref: guide/languages el flycheck-checker tex-chktex\7f163762
+Ref: 14f\7f163762
+Ref: guide/languages el variable flycheck-chktexrc\7f163968
+Ref: 150\7f163968
+Ref: guide/languages el flycheck-checker tex-lacheck\7f164230
+Ref: 151\7f164230
+Ref: TeX/LaTeX-Footnote-1\7f164419
+Ref: TeX/LaTeX-Footnote-2\7f164457
+Ref: TeX/LaTeX-Footnote-3\7f164493
+Ref: TeX/LaTeX-Footnote-4\7f164531
+Node: Texinfo\7f164571
+Ref: guide/languages tex-live\7f164670
+Ref: 152\7f164670
+Ref: guide/languages texinfo\7f164670
+Ref: 153\7f164670
+Ref: guide/languages el flycheck-checker texinfo\7f164697
+Ref: 154\7f164697
+Ref: Texinfo-Footnote-1\7f164879
+Node: Verilog\7f164924
+Ref: guide/languages verilog\7f165017
+Ref: 155\7f165017
+Ref: guide/languages el flycheck-checker verilog-verilator\7f165044
+Ref: 156\7f165044
+Ref: Verilog-Footnote-1\7f165266
+Node: XML\7f165313
+Ref: guide/languages xml\7f165403
+Ref: 157\7f165403
+Ref: guide/languages el flycheck-checker xml-xmlstarlet\7f165422
+Ref: 158\7f165422
+Ref: guide/languages el flycheck-checker xml-xmllint\7f165595
+Ref: 159\7f165595
+Ref: XML-Footnote-1\7f165827
+Ref: XML-Footnote-2\7f165867
+Node: YAML\7f165899
+Ref: guide/languages yaml\7f165973
+Ref: 15a\7f165973
+Ref: guide/languages el flycheck-checker yaml-jsyaml\7f165994
+Ref: 15b\7f165994
+Ref: guide/languages el flycheck-checker yaml-ruby\7f166138
+Ref: 15c\7f166138
+Ref: YAML-Footnote-1\7f166443
+Ref: YAML-Footnote-2\7f166485
+Node: Glossary\7f166557
+Ref: guide/glossary glossary\7f166661
+Ref: 15d\7f166661
+Ref: guide/glossary doc\7f166661
+Ref: 15e\7f166661
+Ref: guide/glossary term-syntax-checker\7f166684
+Ref: 64\7f166684
+Ref: guide/glossary term-registered-syntax-checker\7f166793
+Ref: 60\7f166793
+Ref: guide/glossary term-disabled-syntax-checker\7f166949
+Ref: 15f\7f166949
+Ref: guide/glossary term-enabled-syntax-checker\7f167129
+Ref: 62\7f167129
+Ref: guide/glossary term-suitable-syntax-checker\7f167254
+Ref: 53\7f167254
+Ref: guide/glossary term-chaining\7f167548
+Ref: a0\7f167548
+Node: Flycheck releases\7f168135
+Ref: guide/releases/index flycheck-releases\7f168238
+Ref: 160\7f168238
+Ref: guide/releases/index doc\7f168238
+Ref: 161\7f168238
+Node: Release announcements\7f168423
+Ref: guide/releases/index release-announcements\7f168518
+Ref: 162\7f168518
+Node: Flycheck 0 22\7f168845
+Ref: guide/releases/flycheck-0 22 doc\7f168940
+Ref: 163\7f168940
+Ref: guide/releases/flycheck-0 22 flycheck-0-22\7f168940
+Ref: 164\7f168940
+Node: Breaking changes\7f169539
+Ref: guide/releases/flycheck-0 22 breaking-changes\7f169624
+Ref: 166\7f169624
+Node: Setup<2>\7f171090
+Ref: guide/releases/flycheck-0 22 setup\7f171200
+Ref: 16a\7f171200
+Node: Language support\7f171435
+Ref: guide/releases/flycheck-0 22 language-support\7f171557
+Ref: 16b\7f171557
+Node: Ada<2>\7f171800
+Ref: guide/releases/flycheck-0 22 ada\7f171878
+Ref: 16c\7f171878
+Node: C/C++<2>\7f172007
+Ref: guide/releases/flycheck-0 22 c-c\7f172107
+Ref: 16d\7f172107
+Node: Emacs Lisp<2>\7f172496
+Ref: guide/releases/flycheck-0 22 emacs-lisp\7f172600
+Ref: 16e\7f172600
+Node: Haskell<2>\7f173075
+Ref: guide/releases/flycheck-0 22 haskell\7f173181
+Ref: 16f\7f173181
+Node: Fortran<2>\7f173394
+Ref: guide/releases/flycheck-0 22 fortran\7f173496
+Ref: 170\7f173496
+Node: Python<2>\7f173645
+Ref: guide/releases/flycheck-0 22 python\7f173744
+Ref: 171\7f173744
+Node: Rust<2>\7f174384
+Ref: guide/releases/flycheck-0 22 rust\7f174485
+Ref: 172\7f174485
+Node: TeX/LaTeX<2>\7f174589
+Ref: guide/releases/flycheck-0 22 tex-latex\7f174672
+Ref: 173\7f174672
+Node: Syntax checking improvements\7f174774
+Ref: guide/releases/flycheck-0 22 syntax-checking-improvements\7f174911
+Ref: 174\7f174911
+Node: Error list improvements\7f175339
+Ref: guide/releases/flycheck-0 22 error-list-improvements\7f175483
+Ref: 175\7f175483
+Node: Generic syntax checkers\7f175730
+Ref: guide/releases/flycheck-0 22 generic-syntax-checkers\7f175855
+Ref: 176\7f175855
+Node: Error IDs\7f176572
+Ref: guide/releases/flycheck-0 22 error-ids\7f176704
+Ref: 178\7f176704
+Node: Unit test library for Flycheck\7f177805
+Ref: guide/releases/flycheck-0 22 unit-test-library-for-flycheck\7f177905
+Ref: 17d\7f177905
+Node: Flycheck 0 21\7f178314
+Ref: guide/releases/flycheck-0 21 doc\7f178431
+Ref: 17f\7f178431
+Ref: guide/releases/flycheck-0 21 flycheck-0-21\7f178431
+Ref: 180\7f178431
+Node: Breaking changes<2>\7f178979
+Ref: guide/releases/flycheck-0 21 breaking-changes\7f179078
+Ref: 181\7f179078
+Node: Language support<2>\7f180096
+Ref: guide/releases/flycheck-0 21 language-support\7f180222
+Ref: 182\7f180222
+Node: C/C++<3>\7f180527
+Ref: guide/releases/flycheck-0 21 c-c\7f180606
+Ref: 183\7f180606
+Node: D<2>\7f180966
+Ref: guide/releases/flycheck-0 21 d\7f181059
+Ref: 184\7f181059
+Node: Go<2>\7f181248
+Ref: guide/releases/flycheck-0 21 go\7f181340
+Ref: 185\7f181340
+Node: HTML<2>\7f181448
+Ref: guide/releases/flycheck-0 21 html\7f181540
+Ref: 186\7f181540
+Node: Less\7f181630
+Ref: guide/releases/flycheck-0 21 less\7f181730
+Ref: 187\7f181730
+Node: Shell scripts\7f181832
+Ref: guide/releases/flycheck-0 21 shell-scripts\7f181916
+Ref: 188\7f181916
+Node: Error list changes\7f182307
+Ref: guide/releases/flycheck-0 21 error-list-changes\7f182442
+Ref: 189\7f182442
+Node: Error navigation and display\7f183317
+Ref: guide/releases/flycheck-0 21 error-navigation-and-display\7f183472
+Ref: 18a\7f183472
+Node: Syntax checker definition and extension\7f184152
+Ref: guide/releases/flycheck-0 21 syntax-checker-definition-and-extension\7f184314
+Ref: 18b\7f184314
+Node: Obtaining the new release\7f185060
+Ref: guide/releases/flycheck-0 21 obtaining-the-new-release\7f185185
+Ref: 18d\7f185185
+Node: Flycheck 0 20\7f185391
+Ref: guide/releases/flycheck-0 20 flycheck-0-20\7f185508
+Ref: 18e\7f185508
+Ref: guide/releases/flycheck-0 20 doc\7f185508
+Ref: 18f\7f185508
+Node: Breaking changes<3>\7f186080
+Ref: guide/releases/flycheck-0 20 breaking-changes\7f186179
+Ref: 190\7f186179
+Node: Language support<3>\7f187056
+Ref: guide/releases/flycheck-0 20 language-support\7f187190
+Ref: 191\7f187190
+Node: C/C++<4>\7f187482
+Ref: guide/releases/flycheck-0 20 c-c\7f187564
+Ref: 192\7f187564
+Node: Rust<3>\7f188078
+Ref: guide/releases/flycheck-0 20 rust\7f188177
+Ref: 193\7f188177
+Node: Scala<2>\7f188573
+Ref: guide/releases/flycheck-0 20 scala\7f188673
+Ref: 194\7f188673
+Ref: Scala<2>-Footnote-1\7f188809
+Node: Sass/SCSS\7f188844
+Ref: guide/releases/flycheck-0 20 scalastyle\7f188950
+Ref: 195\7f188950
+Ref: guide/releases/flycheck-0 20 sass-scss\7f188950
+Ref: 196\7f188950
+Node: Javascript<2>\7f189121
+Ref: guide/releases/flycheck-0 20 javascript\7f189226
+Ref: 197\7f189226
+Ref: Javascript<2>-Footnote-1\7f189507
+Ref: Javascript<2>-Footnote-2\7f189534
+Node: Ruby<2>\7f189578
+Ref: guide/releases/flycheck-0 20 ruby\7f189665
+Ref: 198\7f189665
+Ref: guide/releases/flycheck-0 20 configuring-eslint\7f189665
+Ref: 199\7f189665
+Node: Error list improvements<2>\7f189830
+Ref: guide/releases/flycheck-0 20 error-list-improvements\7f189972
+Ref: 19a\7f189972
+Node: User interface improvements\7f190643
+Ref: guide/releases/flycheck-0 20 user-interface-improvements\7f190792
+Ref: 19b\7f190792
+Node: Miscellaneous new features\7f191605
+Ref: guide/releases/flycheck-0 20 miscellaneous-new-features\7f191747
+Ref: 19d\7f191747
+Node: Miscellaneous fixes\7f192087
+Ref: guide/releases/flycheck-0 20 miscellaneous-fixes\7f192208
+Ref: 19f\7f192208
+Node: Get it\7f192430
+Ref: guide/releases/flycheck-0 20 get-it\7f192516
+Ref: 1a0\7f192516
+Node: Flycheck 0 19\7f192684
+Ref: guide/releases/flycheck-0 19 flycheck-0-19\7f192801
+Ref: 1a1\7f192801
+Ref: guide/releases/flycheck-0 19 doc\7f192801
+Ref: 1a2\7f192801
+Node: Breaking changes<4>\7f193077
+Ref: guide/releases/flycheck-0 19 breaking-changes\7f193166
+Ref: 1a3\7f193166
+Node: Languages\7f193350
+Ref: guide/releases/flycheck-0 19 languages\7f193460
+Ref: 1a4\7f193460
+Node: C/C++<5>\7f193613
+Ref: guide/releases/flycheck-0 19 c-c\7f193691
+Ref: 1a5\7f193691
+Node: Emacs Lisp<3>\7f194032
+Ref: guide/releases/flycheck-0 19 emacs-lisp\7f194124
+Ref: 1a6\7f194124
+Node: Go<3>\7f194282
+Ref: guide/releases/flycheck-0 19 go\7f194376
+Ref: 1a7\7f194376
+Node: Haskell<3>\7f194608
+Ref: guide/releases/flycheck-0 19 haskell\7f194696
+Ref: 1a8\7f194696
+Node: Rust<4>\7f194859
+Ref: guide/releases/flycheck-0 19 rust\7f194933
+Ref: 1a9\7f194933
+Node: New features\7f195075
+Ref: guide/releases/flycheck-0 19 new-features\7f195175
+Ref: 1aa\7f195175
+Node: Bug fixes\7f196284
+Ref: guide/releases/flycheck-0 19 bug-fixes\7f196387
+Ref: 1ab\7f196387
+Node: Misc changes\7f196646
+Ref: guide/releases/flycheck-0 19 misc-changes\7f196746
+Ref: 1ac\7f196746
+Ref: Misc changes-Footnote-1\7f196957
+Node: Get it<2>\7f196994
+Ref: guide/releases/flycheck-0 19 get-it\7f197076
+Ref: 1ad\7f197076
+Ref: guide/releases/flycheck-0 19 github-profile\7f197076
+Ref: 1ae\7f197076
+Node: Flycheck 0 18\7f197138
+Ref: guide/releases/flycheck-0 18 doc\7f197255
+Ref: 1af\7f197255
+Ref: guide/releases/flycheck-0 18 flycheck-0-18\7f197255
+Ref: 1b0\7f197255
+Node: Breaking changes<5>\7f197672
+Ref: guide/releases/flycheck-0 18 breaking-changes\7f197770
+Ref: 1b1\7f197770
+Node: Syntax checkers<2>\7f198495
+Ref: guide/releases/flycheck-0 18 syntax-checkers\7f198614
+Ref: 1b2\7f198614
+Ref: Syntax checkers<2>-Footnote-1\7f199776
+Ref: Syntax checkers<2>-Footnote-2\7f199815
+Ref: Syntax checkers<2>-Footnote-3\7f199861
+Node: Bug fixes<2>\7f199908
+Ref: guide/releases/flycheck-0 18 shellcheck\7f200017
+Ref: 1b3\7f200017
+Ref: guide/releases/flycheck-0 18 bug-fixes\7f200017
+Ref: 1b4\7f200017
+Node: Get it<3>\7f200693
+Ref: guide/releases/flycheck-0 18 get-it\7f200775
+Ref: 1b5\7f200775
+Node: Flycheck 0 17\7f200835
+Ref: guide/releases/flycheck-0 17 flycheck-0-17\7f200952
+Ref: 1b6\7f200952
+Ref: guide/releases/flycheck-0 17 doc\7f200952
+Ref: 1b7\7f200952
+Node: Breaking changes<6>\7f201338
+Ref: guide/releases/flycheck-0 17 breaking-changes\7f201435
+Ref: 1b8\7f201435
+Node: New online manual\7f202060
+Ref: guide/releases/flycheck-0 17 new-online-manual\7f202184
+Ref: 1b9\7f202184
+Ref: New online manual-Footnote-1\7f204074
+Ref: New online manual-Footnote-2\7f204104
+Ref: New online manual-Footnote-3\7f204149
+Ref: New online manual-Footnote-4\7f204198
+Ref: New online manual-Footnote-5\7f204243
+Node: Syntax checkers<3>\7f204273
+Ref: guide/releases/flycheck-0 17 syntax-checkers\7f204403
+Ref: 1ba\7f204403
+Ref: guide/releases/flycheck-0 17 llvm-documentation\7f204403
+Ref: 1bb\7f204403
+Ref: Syntax checkers<3>-Footnote-1\7f205028
+Node: Extending syntax checkers\7f205084
+Ref: guide/releases/flycheck-0 17 extending-syntax-checkers\7f205229
+Ref: 1bc\7f205229
+Node: Other bug fixes and improvements\7f205298
+Ref: guide/releases/flycheck-0 17 other-bug-fixes-and-improvements\7f205416
+Ref: 1bd\7f205416
+Ref: Other bug fixes and improvements-Footnote-1\7f206078
+Ref: Other bug fixes and improvements-Footnote-2\7f206134
+Ref: Other bug fixes and improvements-Footnote-3\7f206190
+Node: Flycheck 0 16\7f206246
+Ref: guide/releases/flycheck-0 16 flycheck-0-16\7f206363
+Ref: 1be\7f206363
+Ref: guide/releases/flycheck-0 16 doc\7f206363
+Ref: 1bf\7f206363
+Node: Breaking changes<7>\7f206982
+Ref: guide/releases/flycheck-0 16 breaking-changes\7f207080
+Ref: 1c0\7f207080
+Ref: Breaking changes<7>-Footnote-1\7f207366
+Ref: Breaking changes<7>-Footnote-2\7f207421
+Node: Syntax checkers<4>\7f207477
+Ref: guide/releases/flycheck-0 16 syntax-checkers\7f207599
+Ref: 1c1\7f207599
+Ref: guide/releases/flycheck-0 16 flycheck-hdevtools\7f207599
+Ref: 1c2\7f207599
+Node: New languages and checkers\7f207749
+Ref: guide/releases/flycheck-0 16 new-languages-and-checkers\7f207863
+Ref: 1c3\7f207863
+Ref: New languages and checkers-Footnote-1\7f208239
+Ref: New languages and checkers-Footnote-2\7f208268
+Ref: New languages and checkers-Footnote-3\7f208297
+Ref: New languages and checkers-Footnote-4\7f208330
+Ref: New languages and checkers-Footnote-5\7f208372
+Ref: New languages and checkers-Footnote-6\7f208405
+Ref: New languages and checkers-Footnote-7\7f208437
+Ref: New languages and checkers-Footnote-8\7f208482
+Ref: New languages and checkers-Footnote-9\7f208528
+Ref: New languages and checkers-Footnote-10\7f208569
+Ref: New languages and checkers-Footnote-11\7f208621
+Node: Better Haskell support\7f208664
+Ref: guide/releases/flycheck-0 16 js-yaml\7f208812
+Ref: 1c4\7f208812
+Ref: guide/releases/flycheck-0 16 better-haskell-support\7f208812
+Ref: 1c5\7f208812
+Ref: Better Haskell support-Footnote-1\7f209420
+Node: Miscellaneous new options\7f209473
+Ref: guide/releases/flycheck-0 16 miscellaneous-new-options\7f209586
+Ref: 1c6\7f209586
+Ref: guide/releases/flycheck-0 16 flycheck-haskell\7f209586
+Ref: 1c7\7f209586
+Node: New features<2>\7f210032
+Ref: guide/releases/flycheck-0 16 new-features\7f210154
+Ref: 1c8\7f210154
+Node: Syntax checker executables<2>\7f210305
+Ref: guide/releases/flycheck-0 16 syntax-checker-executables\7f210427
+Ref: 1c9\7f210427
+Node: Disable syntax checkers easily\7f210612
+Ref: guide/releases/flycheck-0 16 disable-syntax-checkers-easily\7f210734
+Ref: 1ca\7f210734
+Node: Improved error list\7f211623
+Ref: guide/releases/flycheck-0 16 improved-error-list\7f211736
+Ref: 1cb\7f211736
+Ref: Improved error list-Footnote-1\7f212322
+Node: Get it<4>\7f212378
+Ref: guide/releases/flycheck-0 16 get-it\7f212467
+Ref: 1cc\7f212467
+Node: Flycheck 0 15\7f212529
+Ref: guide/releases/flycheck-0 15 flycheck-0-15\7f212624
+Ref: 1cd\7f212624
+Ref: guide/releases/flycheck-0 15 doc\7f212624
+Ref: 1ce\7f212624
+Node: Breaking changes<8>\7f213278
+Ref: guide/releases/flycheck-0 15 breaking-changes\7f213377
+Ref: 1cf\7f213377
+Node: New syntax checkers\7f214216
+Ref: guide/releases/flycheck-0 15 new-syntax-checkers\7f214338
+Ref: 1d1\7f214338
+Ref: New syntax checkers-Footnote-1\7f214873
+Ref: New syntax checkers-Footnote-2\7f214902
+Ref: New syntax checkers-Footnote-3\7f214952
+Node: New error list\7f214978
+Ref: guide/releases/flycheck-0 15 new-error-list\7f215094
+Ref: 1d0\7f215094
+Ref: guide/releases/flycheck-0 15 id1\7f215094
+Ref: 1d2\7f215094
+Node: C/C++ support\7f215863
+Ref: guide/releases/flycheck-0 15 c-c-support\7f215983
+Ref: 1d3\7f215983
+Node: New info level messages\7f217327
+Ref: guide/releases/flycheck-0 15 new-info-level-messages\7f217452
+Ref: 1d4\7f217452
+Ref: New info level messages-Footnote-1\7f218672
+Ref: New info level messages-Footnote-2\7f218723
+Node: Custom error levels\7f218772
+Ref: guide/releases/flycheck-0 15 custom-error-levels\7f218902
+Ref: 1d5\7f218902
+Ref: guide/releases/flycheck-0 15 id2\7f218902
+Ref: 1d6\7f218902
+Node: Other improvements\7f219613
+Ref: guide/releases/flycheck-0 15 other-improvements\7f219729
+Ref: 1d7\7f219729
+Node: Get it<5>\7f220717
+Ref: guide/releases/flycheck-0 15 get-it\7f220805
+Ref: 1d8\7f220805
+Node: Changelog\7f220865
+Ref: guide/releases/index id1\7f220960
+Ref: 1d9\7f220960
+Ref: guide/releases/index changelog\7f220960
+Ref: 165\7f220960
+Node: master in development\7f222086
+Ref: guide/releases/index master-in-development\7f222180
+Ref: 1da\7f222180
+Ref: master in development-Footnote-1\7f222758
+Ref: master in development-Footnote-2\7f222814
+Ref: master in development-Footnote-3\7f222870
+Ref: master in development-Footnote-4\7f222926
+Ref: master in development-Footnote-5\7f222982
+Node: 0 22 Dec 23 2014\7f223038
+Ref: guide/releases/index dec-23-2014\7f223157
+Ref: 1db\7f223157
+Ref: 0 22 Dec 23 2014-Footnote-1\7f226492
+Ref: 0 22 Dec 23 2014-Footnote-2\7f226548
+Ref: 0 22 Dec 23 2014-Footnote-3\7f226604
+Ref: 0 22 Dec 23 2014-Footnote-4\7f226660
+Ref: 0 22 Dec 23 2014-Footnote-5\7f226716
+Ref: 0 22 Dec 23 2014-Footnote-6\7f226772
+Ref: 0 22 Dec 23 2014-Footnote-7\7f226828
+Ref: 0 22 Dec 23 2014-Footnote-8\7f226884
+Ref: 0 22 Dec 23 2014-Footnote-9\7f226940
+Ref: 0 22 Dec 23 2014-Footnote-10\7f226996
+Ref: 0 22 Dec 23 2014-Footnote-11\7f227053
+Ref: 0 22 Dec 23 2014-Footnote-12\7f227110
+Ref: 0 22 Dec 23 2014-Footnote-13\7f227167
+Ref: 0 22 Dec 23 2014-Footnote-14\7f227224
+Ref: 0 22 Dec 23 2014-Footnote-15\7f227281
+Ref: 0 22 Dec 23 2014-Footnote-16\7f227338
+Ref: 0 22 Dec 23 2014-Footnote-17\7f227395
+Ref: 0 22 Dec 23 2014-Footnote-18\7f227452
+Ref: 0 22 Dec 23 2014-Footnote-19\7f227509
+Ref: 0 22 Dec 23 2014-Footnote-20\7f227566
+Ref: 0 22 Dec 23 2014-Footnote-21\7f227623
+Ref: 0 22 Dec 23 2014-Footnote-22\7f227680
+Ref: 0 22 Dec 23 2014-Footnote-23\7f227737
+Ref: 0 22 Dec 23 2014-Footnote-24\7f227794
+Ref: 0 22 Dec 23 2014-Footnote-25\7f227851
+Node: 0 21 Oct 26 2014\7f227908
+Ref: guide/releases/index oct-26-2014\7f228022
+Ref: 1dc\7f228022
+Ref: 0 21 Oct 26 2014-Footnote-1\7f230565
+Ref: 0 21 Oct 26 2014-Footnote-2\7f230621
+Ref: 0 21 Oct 26 2014-Footnote-3\7f230677
+Ref: 0 21 Oct 26 2014-Footnote-4\7f230733
+Ref: 0 21 Oct 26 2014-Footnote-5\7f230789
+Ref: 0 21 Oct 26 2014-Footnote-6\7f230845
+Ref: 0 21 Oct 26 2014-Footnote-7\7f230901
+Ref: 0 21 Oct 26 2014-Footnote-8\7f230957
+Ref: 0 21 Oct 26 2014-Footnote-9\7f231013
+Ref: 0 21 Oct 26 2014-Footnote-10\7f231069
+Ref: 0 21 Oct 26 2014-Footnote-11\7f231126
+Ref: 0 21 Oct 26 2014-Footnote-12\7f231183
+Ref: 0 21 Oct 26 2014-Footnote-13\7f231240
+Ref: 0 21 Oct 26 2014-Footnote-14\7f231297
+Ref: 0 21 Oct 26 2014-Footnote-15\7f231354
+Ref: 0 21 Oct 26 2014-Footnote-16\7f231411
+Ref: 0 21 Oct 26 2014-Footnote-17\7f231468
+Ref: 0 21 Oct 26 2014-Footnote-18\7f231525
+Ref: 0 21 Oct 26 2014-Footnote-19\7f231582
+Ref: 0 21 Oct 26 2014-Footnote-20\7f231639
+Ref: 0 21 Oct 26 2014-Footnote-21\7f231696
+Node: 0 20 Aug 12 2014\7f231753
+Ref: guide/releases/index aug-12-2014\7f231867
+Ref: 1dd\7f231867
+Ref: 0 20 Aug 12 2014-Footnote-1\7f235447
+Ref: 0 20 Aug 12 2014-Footnote-2\7f235503
+Ref: 0 20 Aug 12 2014-Footnote-3\7f235559
+Ref: 0 20 Aug 12 2014-Footnote-4\7f235615
+Ref: 0 20 Aug 12 2014-Footnote-5\7f235671
+Ref: 0 20 Aug 12 2014-Footnote-6\7f235727
+Ref: 0 20 Aug 12 2014-Footnote-7\7f235783
+Ref: 0 20 Aug 12 2014-Footnote-8\7f235839
+Ref: 0 20 Aug 12 2014-Footnote-9\7f235895
+Ref: 0 20 Aug 12 2014-Footnote-10\7f235951
+Ref: 0 20 Aug 12 2014-Footnote-11\7f236008
+Ref: 0 20 Aug 12 2014-Footnote-12\7f236065
+Ref: 0 20 Aug 12 2014-Footnote-13\7f236122
+Ref: 0 20 Aug 12 2014-Footnote-14\7f236179
+Ref: 0 20 Aug 12 2014-Footnote-15\7f236236
+Ref: 0 20 Aug 12 2014-Footnote-16\7f236293
+Ref: 0 20 Aug 12 2014-Footnote-17\7f236350
+Ref: 0 20 Aug 12 2014-Footnote-18\7f236407
+Ref: 0 20 Aug 12 2014-Footnote-19\7f236464
+Ref: 0 20 Aug 12 2014-Footnote-20\7f236521
+Ref: 0 20 Aug 12 2014-Footnote-21\7f236578
+Ref: 0 20 Aug 12 2014-Footnote-22\7f236635
+Ref: 0 20 Aug 12 2014-Footnote-23\7f236692
+Ref: 0 20 Aug 12 2014-Footnote-24\7f236749
+Ref: 0 20 Aug 12 2014-Footnote-25\7f236806
+Ref: 0 20 Aug 12 2014-Footnote-26\7f236863
+Ref: 0 20 Aug 12 2014-Footnote-27\7f236920
+Ref: 0 20 Aug 12 2014-Footnote-28\7f236977
+Node: 0 19 Jun 12 2014\7f237034
+Ref: guide/releases/index jun-12-2014\7f237148
+Ref: 1de\7f237148
+Ref: 0 19 Jun 12 2014-Footnote-1\7f239018
+Ref: 0 19 Jun 12 2014-Footnote-2\7f239074
+Ref: 0 19 Jun 12 2014-Footnote-3\7f239130
+Ref: 0 19 Jun 12 2014-Footnote-4\7f239186
+Ref: 0 19 Jun 12 2014-Footnote-5\7f239242
+Ref: 0 19 Jun 12 2014-Footnote-6\7f239298
+Ref: 0 19 Jun 12 2014-Footnote-7\7f239354
+Ref: 0 19 Jun 12 2014-Footnote-8\7f239410
+Ref: 0 19 Jun 12 2014-Footnote-9\7f239466
+Ref: 0 19 Jun 12 2014-Footnote-10\7f239522
+Ref: 0 19 Jun 12 2014-Footnote-11\7f239579
+Ref: 0 19 Jun 12 2014-Footnote-12\7f239636
+Ref: 0 19 Jun 12 2014-Footnote-13\7f239693
+Ref: 0 19 Jun 12 2014-Footnote-14\7f239750
+Node: 0 18 Mar 24 2014\7f239807
+Ref: guide/releases/index mar-24-2014\7f239920
+Ref: 1df\7f239920
+Ref: 0 18 Mar 24 2014-Footnote-1\7f241936
+Ref: 0 18 Mar 24 2014-Footnote-2\7f241992
+Ref: 0 18 Mar 24 2014-Footnote-3\7f242047
+Ref: 0 18 Mar 24 2014-Footnote-4\7f242103
+Ref: 0 18 Mar 24 2014-Footnote-5\7f242159
+Ref: 0 18 Mar 24 2014-Footnote-6\7f242215
+Ref: 0 18 Mar 24 2014-Footnote-7\7f242271
+Ref: 0 18 Mar 24 2014-Footnote-8\7f242327
+Ref: 0 18 Mar 24 2014-Footnote-9\7f242383
+Ref: 0 18 Mar 24 2014-Footnote-10\7f242439
+Node: 0 17 Feb 1 2014\7f242496
+Ref: guide/releases/index feb-1-2014\7f242609
+Ref: 1e0\7f242609
+Ref: 0 17 Feb 1 2014-Footnote-1\7f244303
+Ref: 0 17 Feb 1 2014-Footnote-2\7f244333
+Ref: 0 17 Feb 1 2014-Footnote-3\7f244389
+Ref: 0 17 Feb 1 2014-Footnote-4\7f244445
+Ref: 0 17 Feb 1 2014-Footnote-5\7f244501
+Ref: 0 17 Feb 1 2014-Footnote-6\7f244557
+Ref: 0 17 Feb 1 2014-Footnote-7\7f244613
+Ref: 0 17 Feb 1 2014-Footnote-8\7f244669
+Ref: 0 17 Feb 1 2014-Footnote-9\7f244725
+Node: 0 16 Jan 11 2014\7f244781
+Ref: guide/releases/index sphinx\7f244894
+Ref: 1e1\7f244894
+Ref: guide/releases/index jan-11-2014\7f244894
+Ref: 1e2\7f244894
+Ref: 0 16 Jan 11 2014-Footnote-1\7f247726
+Ref: 0 16 Jan 11 2014-Footnote-2\7f247781
+Ref: 0 16 Jan 11 2014-Footnote-3\7f247837
+Ref: 0 16 Jan 11 2014-Footnote-4\7f247893
+Ref: 0 16 Jan 11 2014-Footnote-5\7f247949
+Ref: 0 16 Jan 11 2014-Footnote-6\7f248005
+Ref: 0 16 Jan 11 2014-Footnote-7\7f248061
+Ref: 0 16 Jan 11 2014-Footnote-8\7f248117
+Ref: 0 16 Jan 11 2014-Footnote-9\7f248173
+Ref: 0 16 Jan 11 2014-Footnote-10\7f248229
+Ref: 0 16 Jan 11 2014-Footnote-11\7f248286
+Ref: 0 16 Jan 11 2014-Footnote-12\7f248343
+Ref: 0 16 Jan 11 2014-Footnote-13\7f248400
+Ref: 0 16 Jan 11 2014-Footnote-14\7f248457
+Ref: 0 16 Jan 11 2014-Footnote-15\7f248514
+Ref: 0 16 Jan 11 2014-Footnote-16\7f248571
+Ref: 0 16 Jan 11 2014-Footnote-17\7f248628
+Ref: 0 16 Jan 11 2014-Footnote-18\7f248685
+Ref: 0 16 Jan 11 2014-Footnote-19\7f248742
+Ref: 0 16 Jan 11 2014-Footnote-20\7f248799
+Ref: 0 16 Jan 11 2014-Footnote-21\7f248856
+Ref: 0 16 Jan 11 2014-Footnote-22\7f248913
+Node: 0 15 Nov 15 2013\7f248970
+Ref: guide/releases/index nov-15-2013\7f249086
+Ref: 1e3\7f249086
+Ref: guide/releases/index flycheck-hdevtools\7f249086
+Ref: 1e4\7f249086
+Ref: 0 15 Nov 15 2013-Footnote-1\7f253294
+Ref: 0 15 Nov 15 2013-Footnote-2\7f253350
+Ref: 0 15 Nov 15 2013-Footnote-3\7f253406
+Ref: 0 15 Nov 15 2013-Footnote-4\7f253462
+Ref: 0 15 Nov 15 2013-Footnote-5\7f253518
+Ref: 0 15 Nov 15 2013-Footnote-6\7f253574
+Ref: 0 15 Nov 15 2013-Footnote-7\7f253630
+Ref: 0 15 Nov 15 2013-Footnote-8\7f253671
+Ref: 0 15 Nov 15 2013-Footnote-9\7f253727
+Ref: 0 15 Nov 15 2013-Footnote-10\7f253783
+Ref: 0 15 Nov 15 2013-Footnote-11\7f253840
+Ref: 0 15 Nov 15 2013-Footnote-12\7f253897
+Ref: 0 15 Nov 15 2013-Footnote-13\7f253954
+Ref: 0 15 Nov 15 2013-Footnote-14\7f254011
+Ref: 0 15 Nov 15 2013-Footnote-15\7f254068
+Ref: 0 15 Nov 15 2013-Footnote-16\7f254125
+Ref: 0 15 Nov 15 2013-Footnote-17\7f254182
+Ref: 0 15 Nov 15 2013-Footnote-18\7f254239
+Ref: 0 15 Nov 15 2013-Footnote-19\7f254296
+Ref: 0 15 Nov 15 2013-Footnote-20\7f254353
+Ref: 0 15 Nov 15 2013-Footnote-21\7f254410
+Ref: 0 15 Nov 15 2013-Footnote-22\7f254467
+Ref: 0 15 Nov 15 2013-Footnote-23\7f254524
+Ref: 0 15 Nov 15 2013-Footnote-24\7f254581
+Ref: 0 15 Nov 15 2013-Footnote-25\7f254638
+Ref: 0 15 Nov 15 2013-Footnote-26\7f254695
+Ref: 0 15 Nov 15 2013-Footnote-27\7f254752
+Ref: 0 15 Nov 15 2013-Footnote-28\7f254809
+Ref: 0 15 Nov 15 2013-Footnote-29\7f254866
+Ref: 0 15 Nov 15 2013-Footnote-30\7f254923
+Node: 0 14 1 Aug 16 2013\7f254980
+Ref: guide/releases/index grizzl\7f255096
+Ref: 1e5\7f255096
+Ref: guide/releases/index aug-16-2013\7f255096
+Ref: 1e6\7f255096
+Ref: 0 14 1 Aug 16 2013-Footnote-1\7f255256
+Node: 0 14 Aug 15 2013\7f255312
+Ref: guide/releases/index aug-15-2013\7f255428
+Ref: 1e7\7f255428
+Ref: 0 14 Aug 15 2013-Footnote-1\7f258398
+Ref: 0 14 Aug 15 2013-Footnote-2\7f258454
+Ref: 0 14 Aug 15 2013-Footnote-3\7f258510
+Ref: 0 14 Aug 15 2013-Footnote-4\7f258566
+Ref: 0 14 Aug 15 2013-Footnote-5\7f258622
+Ref: 0 14 Aug 15 2013-Footnote-6\7f258678
+Ref: 0 14 Aug 15 2013-Footnote-7\7f258734
+Ref: 0 14 Aug 15 2013-Footnote-8\7f258790
+Ref: 0 14 Aug 15 2013-Footnote-9\7f258846
+Ref: 0 14 Aug 15 2013-Footnote-10\7f258902
+Ref: 0 14 Aug 15 2013-Footnote-11\7f258959
+Ref: 0 14 Aug 15 2013-Footnote-12\7f259016
+Ref: 0 14 Aug 15 2013-Footnote-13\7f259073
+Ref: 0 14 Aug 15 2013-Footnote-14\7f259130
+Ref: 0 14 Aug 15 2013-Footnote-15\7f259187
+Ref: 0 14 Aug 15 2013-Footnote-16\7f259244
+Ref: 0 14 Aug 15 2013-Footnote-17\7f259301
+Ref: 0 14 Aug 15 2013-Footnote-18\7f259358
+Ref: 0 14 Aug 15 2013-Footnote-19\7f259415
+Ref: 0 14 Aug 15 2013-Footnote-20\7f259472
+Ref: 0 14 Aug 15 2013-Footnote-21\7f259529
+Ref: 0 14 Aug 15 2013-Footnote-22\7f259586
+Node: 0 13 Jun 28 2013\7f259643
+Ref: guide/releases/index jun-28-2013\7f259757
+Ref: 1e8\7f259757
+Ref: 0 13 Jun 28 2013-Footnote-1\7f262377
+Ref: 0 13 Jun 28 2013-Footnote-2\7f262433
+Ref: 0 13 Jun 28 2013-Footnote-3\7f262489
+Ref: 0 13 Jun 28 2013-Footnote-4\7f262545
+Ref: 0 13 Jun 28 2013-Footnote-5\7f262601
+Ref: 0 13 Jun 28 2013-Footnote-6\7f262657
+Ref: 0 13 Jun 28 2013-Footnote-7\7f262713
+Node: 0 12 May 18 2013\7f262769
+Ref: guide/releases/index may-18-2013\7f262883
+Ref: 1e9\7f262883
+Ref: 0 12 May 18 2013-Footnote-1\7f263712
+Ref: 0 12 May 18 2013-Footnote-2\7f263768
+Ref: 0 12 May 18 2013-Footnote-3\7f263824
+Ref: 0 12 May 18 2013-Footnote-4\7f263880
+Node: 0 11 May 01 2013\7f263936
+Ref: guide/releases/index may-01-2013\7f264050
+Ref: 1ea\7f264050
+Ref: 0 11 May 01 2013-Footnote-1\7f265016
+Ref: 0 11 May 01 2013-Footnote-2\7f265072
+Ref: 0 11 May 01 2013-Footnote-3\7f265128
+Ref: 0 11 May 01 2013-Footnote-4\7f265184
+Ref: 0 11 May 01 2013-Footnote-5\7f265230
+Node: 0 10 Apr 21 2013\7f265286
+Ref: guide/releases/index apr-21-2013\7f265399
+Ref: 1eb\7f265399
+Ref: guide/releases/index projectile\7f265399
+Ref: 1ec\7f265399
+Ref: 0 10 Apr 21 2013-Footnote-1\7f267052
+Ref: 0 10 Apr 21 2013-Footnote-2\7f267108
+Ref: 0 10 Apr 21 2013-Footnote-3\7f267164
+Ref: 0 10 Apr 21 2013-Footnote-4\7f267220
+Ref: 0 10 Apr 21 2013-Footnote-5\7f267276
+Ref: 0 10 Apr 21 2013-Footnote-6\7f267332
+Ref: 0 10 Apr 21 2013-Footnote-7\7f267390
+Ref: 0 10 Apr 21 2013-Footnote-8\7f267446
+Ref: 0 10 Apr 21 2013-Footnote-9\7f267501
+Node: 0 9 Apr 13 2013\7f267557
+Ref: guide/releases/index apr-13-2013\7f267668
+Ref: 1ed\7f267668
+Ref: guide/releases/index google-this\7f267668
+Ref: 1ee\7f267668
+Ref: 0 9 Apr 13 2013-Footnote-1\7f268056
+Ref: 0 9 Apr 13 2013-Footnote-2\7f268112
+Node: 0 8 Apr 9 2013\7f268168
+Ref: guide/releases/index apr-9-2013\7f268280
+Ref: 1ef\7f268280
+Ref: 0 8 Apr 9 2013-Footnote-1\7f269408
+Ref: 0 8 Apr 9 2013-Footnote-2\7f269463
+Ref: 0 8 Apr 9 2013-Footnote-3\7f269519
+Ref: 0 8 Apr 9 2013-Footnote-4\7f269574
+Ref: 0 8 Apr 9 2013-Footnote-5\7f269629
+Ref: 0 8 Apr 9 2013-Footnote-6\7f269684
+Ref: 0 8 Apr 9 2013-Footnote-7\7f269739
+Ref: 0 8 Apr 9 2013-Footnote-8\7f269794
+Node: 0 7 1 Feb 23 2013\7f269850
+Ref: guide/releases/index feb-23-2013\7f269962
+Ref: 1f0\7f269962
+Ref: 0 7 1 Feb 23 2013-Footnote-1\7f270589
+Ref: 0 7 1 Feb 23 2013-Footnote-2\7f270644
+Node: 0 7 Feb 14 2013\7f270699
+Ref: guide/releases/index feb-14-2013\7f270814
+Ref: 1f1\7f270814
+Ref: 0 7 Feb 14 2013-Footnote-1\7f271572
+Ref: 0 7 Feb 14 2013-Footnote-2\7f271627
+Ref: 0 7 Feb 14 2013-Footnote-3\7f271682
+Ref: 0 7 Feb 14 2013-Footnote-4\7f271737
+Ref: 0 7 Feb 14 2013-Footnote-5\7f271792
+Node: 0 6 1 Jan 30 2013\7f271847
+Ref: guide/releases/index jan-30-2013\7f271960
+Ref: 1f2\7f271960
+Node: 0 6 Jan 29 2013\7f272048
+Ref: guide/releases/index jan-29-2013\7f272161
+Ref: 1f3\7f272161
+Ref: 0 6 Jan 29 2013-Footnote-1\7f274183
+Ref: 0 6 Jan 29 2013-Footnote-2\7f274238
+Ref: 0 6 Jan 29 2013-Footnote-3\7f274293
+Ref: 0 6 Jan 29 2013-Footnote-4\7f274348
+Ref: 0 6 Jan 29 2013-Footnote-5\7f274403
+Ref: 0 6 Jan 29 2013-Footnote-6\7f274458
+Ref: 0 6 Jan 29 2013-Footnote-7\7f274513
+Ref: 0 6 Jan 29 2013-Footnote-8\7f274568
+Ref: 0 6 Jan 29 2013-Footnote-9\7f274623
+Ref: 0 6 Jan 29 2013-Footnote-10\7f274678
+Ref: 0 6 Jan 29 2013-Footnote-11\7f274734
+Ref: 0 6 Jan 29 2013-Footnote-12\7f274790
+Ref: 0 6 Jan 29 2013-Footnote-13\7f274846
+Ref: 0 6 Jan 29 2013-Footnote-14\7f274902
+Ref: 0 6 Jan 29 2013-Footnote-15\7f274958
+Ref: 0 6 Jan 29 2013-Footnote-16\7f275014
+Ref: 0 6 Jan 29 2013-Footnote-17\7f275070
+Ref: 0 6 Jan 29 2013-Footnote-18\7f275126
+Ref: 0 6 Jan 29 2013-Footnote-19\7f275182
+Node: 0 5 Dec 28 2012\7f275238
+Ref: guide/releases/index dec-28-2012\7f275349
+Ref: 1f4\7f275349
+Ref: 0 5 Dec 28 2012-Footnote-1\7f276170
+Ref: 0 5 Dec 28 2012-Footnote-2\7f276225
+Ref: 0 5 Dec 28 2012-Footnote-3\7f276280
+Ref: 0 5 Dec 28 2012-Footnote-4\7f276335
+Ref: 0 5 Dec 28 2012-Footnote-5\7f276390
+Ref: 0 5 Dec 28 2012-Footnote-6\7f276445
+Ref: 0 5 Dec 28 2012-Footnote-7\7f276500
+Ref: 0 5 Dec 28 2012-Footnote-8\7f276555
+Ref: 0 5 Dec 28 2012-Footnote-9\7f276610
+Node: 0 4 Nov 21 2012\7f276665
+Ref: guide/releases/index nov-21-2012\7f276776
+Ref: 1f5\7f276776
+Ref: guide/releases/index flymake-cursor\7f276776
+Ref: 1f6\7f276776
+Ref: 0 4 Nov 21 2012-Footnote-1\7f277240
+Ref: 0 4 Nov 21 2012-Footnote-2\7f277294
+Ref: 0 4 Nov 21 2012-Footnote-3\7f277348
+Ref: 0 4 Nov 21 2012-Footnote-4\7f277402
+Ref: 0 4 Nov 21 2012-Footnote-5\7f277456
+Ref: 0 4 Nov 21 2012-Footnote-6\7f277511
+Ref: 0 4 Nov 21 2012-Footnote-7\7f277566
+Node: 0 3 Nov 21 2012\7f277621
+Ref: guide/releases/index id2\7f277732
+Ref: 1f7\7f277732
+Ref: 0 3 Nov 21 2012-Footnote-1\7f277910
+Node: 0 2 Oct 25 2012\7f277964
+Ref: guide/releases/index oct-25-2012\7f278075
+Ref: 1f8\7f278075
+Ref: 0 2 Oct 25 2012-Footnote-1\7f278283
+Node: 0 1 Oct 11 2012\7f278337
+Ref: guide/releases/index oct-11-2012\7f278424
+Ref: 1f9\7f278424
+Node: Extending Flycheck\7f278667
+Ref: dev/extending doc\7f278774
+Ref: 1fa\7f278774
+Ref: dev/extending extending-flycheck\7f278774
+Ref: 1fb\7f278774
+Node: Defining new syntax checkers\7f279655
+Ref: dev/extending defining-new-syntax-checkers\7f279784
+Ref: a\7f279784
+Ref: dev/extending id1\7f279784
+Ref: 1ff\7f279784
+Ref: Defining new syntax checkers-Footnote-1\7f284145
+Node: Finding the right error patterns\7f284176
+Ref: dev/extending pylint\7f284311
+Ref: 202\7f284311
+Ref: dev/extending finding-the-right-error-patterns\7f284311
+Ref: 203\7f284311
+Ref: dev/extending el function flycheck-compile\7f284896
+Ref: 19c\7f284896
+Node: Trying a new syntax checker\7f285541
+Ref: dev/extending trying-a-new-syntax-checker\7f285716
+Ref: 205\7f285716
+Node: Registering new syntax checkers\7f286254
+Ref: dev/extending registering-new-syntax-checkers\7f286388
+Ref: 206\7f286388
+Ref: dev/extending id2\7f286388
+Ref: 207\7f286388
+Node: Advanced syntax checker definitions\7f287888
+Ref: dev/extending advanced-syntax-checker-definitions\7f288055
+Ref: 208\7f288055
+Node: Parsing structured output format\7f288336
+Ref: dev/extending id3\7f288509
+Ref: 209\7f288509
+Ref: dev/extending parsing-structured-output-format\7f288509
+Ref: 204\7f288509
+Ref: Parsing structured output format-Footnote-1\7f289643
+Node: Passing options and configuration files to syntax checkers\7f289674
+Ref: dev/extending passing-options-and-configuration-files-to-syntax-checkers\7f289895
+Ref: 20b\7f289895
+Ref: dev/extending jshint\7f289895
+Ref: 20c\7f289895
+Ref: Passing options and configuration files to syntax checkers-Footnote-1\7f293139
+Ref: Passing options and configuration files to syntax checkers-Footnote-2\7f293182
+Node: Controlling the use of a syntax checker\7f293213
+Ref: dev/extending rubocop\7f293439
+Ref: 20f\7f293439
+Ref: dev/extending controlling-the-use-of-a-syntax-checker\7f293439
+Ref: 210\7f293439
+Node: Applying more than one syntax checker\7f294370
+Ref: dev/extending applying-more-than-one-syntax-checker\7f294529
+Ref: 211\7f294529
+Ref: Applying more than one syntax checker-Footnote-1\7f297837
+Node: Other ways to extend Flycheck\7f297885
+Ref: dev/extending shellcheck\7f298015
+Ref: 213\7f298015
+Ref: dev/extending other-ways-to-extend-flycheck\7f298015
+Ref: 214\7f298015
+Node: Use arbitrary functions to check buffers\7f298167
+Ref: dev/extending use-arbitrary-functions-to-check-buffers\7f298305
+Ref: 215\7f298305
+Node: Hooking into Flycheck\7f298528
+Ref: dev/extending hooking-into-flycheck\7f298666
+Ref: 216\7f298666
+Node: Status changes\7f298873
+Ref: dev/extending status-changes\7f298972
+Ref: 217\7f298972
+Ref: Status changes-Footnote-1\7f299573
+Node: Error processing\7f299634
+Ref: dev/extending error-processing\7f299755
+Ref: 219\7f299755
+Node: Error display\7f301299
+Ref: dev/extending error-display\7f301397
+Ref: 21c\7f301397
+Ref: Error display-Footnote-1\7f301683
+Node: Flycheck API\7f301736
+Ref: dev/api flycheck-pos-tip\7f301842
+Ref: 21d\7f301842
+Ref: dev/api doc\7f301842
+Ref: 21e\7f301842
+Ref: dev/api flycheck-api\7f301842
+Ref: 1fc\7f301842
+Ref: dev/api id1\7f301842
+Ref: 21f\7f301842
+Node: Syntax checks\7f302379
+Ref: dev/api syntax-checks\7f302478
+Ref: 220\7f302478
+Ref: dev/api api-syntax-checks\7f302478
+Ref: 221\7f302478
+Ref: dev/api el variable flycheck-after-syntax-check-hook\7f303216
+Ref: 222\7f303216
+Ref: dev/api el variable flycheck-before-syntax-check-hook\7f304001
+Ref: 218\7f304001
+Ref: dev/api el variable flycheck-syntax-check-failed-hook\7f304588
+Ref: 223\7f304588
+Node: Generic syntax checkers<2>\7f305111
+Ref: dev/api generic-syntax-checkers\7f305242
+Ref: 224\7f305242
+Ref: dev/api api-generic-syntax-checkers\7f305242
+Ref: 225\7f305242
+Ref: dev/api el function flycheck-define-generic-checker\7f305452
+Ref: 1b\7f305452
+Ref: dev/api el function flycheck-registered-checker-p\7f313293
+Ref: 66\7f313293
+Ref: dev/api el function flycheck-add-mode\7f313577
+Ref: 18c\7f313577
+Ref: dev/api el function flycheck-add-next-checker\7f313874
+Ref: 212\7f313874
+Node: Status callback protocol\7f314717
+Ref: dev/api status-callback-protocol\7f314845
+Ref: 227\7f314845
+Ref: dev/api api-status-callback-protocol\7f314845
+Ref: 226\7f314845
+Ref: dev/api el function status-callback\7f315080
+Ref: 228\7f315080
+Node: Predicates for syntax checkers\7f316299
+Ref: dev/api predicates-for-syntax-checkers\7f316449
+Ref: 229\7f316449
+Ref: dev/api el function flycheck-buffer-saved-p\7f316596
+Ref: 22a\7f316596
+Node: Error filters\7f316897
+Ref: dev/api error-filters\7f317014
+Ref: 22b\7f317014
+Ref: dev/api el function flycheck-sanitize-errors\7f317135
+Ref: 22c\7f317135
+Ref: dev/api el function flycheck-increment-error-columns\7f317399
+Ref: 22d\7f317399
+Ref: dev/api el function flycheck-collapse-error-message-whitespace\7f317611
+Ref: 22e\7f317611
+Ref: dev/api el function flycheck-dedent-error-messages\7f317751
+Ref: 22f\7f317751
+Ref: dev/api el function flycheck-fold-include-levels\7f318056
+Ref: 230\7f318056
+Ref: dev/api el function flycheck-dequalify-error-ids\7f318536
+Ref: 17b\7f318536
+Ref: dev/api el function flycheck-remove-error-ids\7f319008
+Ref: 17c\7f319008
+Node: Command syntax checkers\7f319097
+Ref: dev/api api-command-syntax-checkers\7f319221
+Ref: 231\7f319221
+Ref: dev/api command-syntax-checkers\7f319221
+Ref: 232\7f319221
+Ref: dev/api el function flycheck-define-command-checker\7f319523
+Ref: 177\7f319523
+Ref: dev/api el function flycheck-def-executable-var\7f322997
+Ref: 233\7f322997
+Ref: dev/api el function flycheck-define-checker\7f323796
+Ref: 19\7f323796
+Node: Command arguments\7f324351
+Ref: dev/api command-arguments\7f324474
+Ref: 235\7f324474
+Ref: dev/api el function flycheck-substitute-argument\7f324768
+Ref: 201\7f324768
+Node: Options for command syntax checkers\7f329816
+Ref: dev/api options-for-command-syntax-checkers\7f329995
+Ref: 237\7f329995
+Ref: dev/api el function flycheck-def-option-var\7f330183
+Ref: 20d\7f330183
+Ref: dev/api el function flycheck-def-args-var\7f330810
+Ref: 238\7f330810
+Ref: dev/api el function flycheck-option-int\7f331315
+Ref: 239\7f331315
+Ref: dev/api el function flycheck-option-comma-separated-list\7f331496
+Ref: 23a\7f331496
+Node: Configuration files for command syntax checkers\7f332102
+Ref: dev/api configuration-files-for-command-syntax-checkers\7f332302
+Ref: 23b\7f332302
+Ref: dev/api api-configuration-files\7f332302
+Ref: 20e\7f332302
+Ref: dev/api el function flycheck-def-config-file-var\7f332503
+Ref: 23c\7f332503
+Ref: dev/api el function flycheck-locate-config-file\7f333287
+Ref: 236\7f333287
+Node: Error parsing with regular expressions\7f333614
+Ref: dev/api error-parsing-with-regular-expressions\7f333792
+Ref: 23d\7f333792
+Ref: dev/api el function flycheck-rx-to-string\7f334189
+Ref: 200\7f334189
+Ref: dev/api el function flycheck-parse-with-patterns\7f335060
+Ref: 234\7f335060
+Node: Error parsers\7f335568
+Ref: dev/api error-parsers\7f335690
+Ref: 23e\7f335690
+Ref: dev/api api-error-parsers\7f335690
+Ref: 20a\7f335690
+Ref: dev/api el function flycheck-parse-checkstyle\7f335915
+Ref: 17a\7f335915
+Ref: dev/api el function flycheck-error-parser\7f336358
+Ref: 23f\7f336358
+Ref: dev/api el function flycheck-parse-xml-string\7f336666
+Ref: 240\7f336666
+Ref: Error parsers-Footnote-1\7f337126
+Node: Errors\7f337169
+Ref: dev/api errors\7f337289
+Ref: 241\7f337289
+Ref: dev/api api-errors\7f337289
+Ref: 242\7f337289
+Ref: dev/api el variable flycheck-current-errors\7f337414
+Ref: 91\7f337414
+Ref: dev/api el struct flycheck-error\7f337754
+Ref: 169\7f337754
+Ref: dev/api el function flycheck-error-buffer\7f337879
+Ref: 167\7f337879
+Ref: dev/api el function flycheck-error-checker\7f337988
+Ref: 168\7f337988
+Ref: dev/api el function flycheck-error-filename\7f338068
+Ref: 243\7f338068
+Ref: dev/api el function flycheck-error-line\7f338158
+Ref: 244\7f338158
+Ref: dev/api el function flycheck-error-column\7f338241
+Ref: 245\7f338241
+Ref: dev/api el function flycheck-error-message\7f339101
+Ref: 246\7f339101
+Ref: dev/api el function flycheck-error-level\7f339180
+Ref: 247\7f339180
+Ref: dev/api el function flycheck-error-id\7f339341
+Ref: 179\7f339341
+Ref: dev/api el function flycheck-error-new-at\7f339618
+Ref: 248\7f339618
+Ref: dev/api el function flycheck-error-new\7f340644
+Ref: 249\7f340644
+Ref: dev/api el function flycheck-error-with-buffer\7f341106
+Ref: 24a\7f341106
+Ref: dev/api el function flycheck-error-line-region\7f341296
+Ref: 24b\7f341296
+Ref: dev/api el function flycheck-error-column-region\7f341615
+Ref: 24c\7f341615
+Ref: dev/api el function flycheck-error-thing-region\7f341954
+Ref: 24d\7f341954
+Ref: dev/api el function flycheck-error-pos\7f342437
+Ref: 24e\7f342437
+Ref: dev/api el function flycheck-error-format\7f342728
+Ref: 24f\7f342728
+Ref: dev/api el function flycheck-error-<\7f342938
+Ref: 250\7f342938
+Ref: dev/api el function flycheck-error-level-<\7f343113
+Ref: 251\7f343113
+Node: Error processing<2>\7f343496
+Ref: dev/api error-processing\7f343583
+Ref: 252\7f343583
+Ref: dev/api el variable flycheck-process-error-functions\7f343632
+Ref: 21a\7f343632
+Ref: dev/api el function flycheck-add-overlay\7f343677
+Ref: 21b\7f343677
+Node: Error analysis\7f343714
+Ref: dev/api error-analysis\7f343825
+Ref: 253\7f343825
+Ref: dev/api el function flycheck-count-errors\7f343936
+Ref: 92\7f343936
+Ref: dev/api el function flycheck-has-errors-p\7f344196
+Ref: 254\7f344196
+Ref: dev/api el function flycheck-has-max-errors-p\7f344299
+Ref: 255\7f344299
+Ref: dev/api el function auto\7f344340
+Ref: 256\7f344340
+Node: Error levels<2>\7f344361
+Ref: dev/api error-levels\7f344444
+Ref: 257\7f344444
+Ref: dev/api el function flycheck-define-error-level\7f344771
+Ref: 27\7f344771
+Ref: dev/api el function flycheck-error-level-p\7f346548
+Ref: 8b\7f346548
+Node: Flycheck buffer status\7f346650
+Ref: dev/api api-flycheck-buffer-status\7f346756
+Ref: 258\7f346756
+Ref: dev/api flycheck-buffer-status\7f346756
+Ref: 259\7f346756
+Ref: dev/api el variable flycheck-status-changed-functions\7f346813
+Ref: 19e\7f346813
+Ref: dev/api el function flycheck-report-status\7f347413
+Ref: 25a\7f347413
+Ref: dev/api el variable flycheck-last-status-change\7f348297
+Ref: 90\7f348297
+Ref: dev/api el function flycheck-mode-line-status-text\7f348480
+Ref: 8f\7f348480
+Node: Utilities\7f348699
+Ref: dev/api utilities\7f348790
+Ref: 25b\7f348790
+Ref: dev/api api-utilities\7f348790
+Ref: 25c\7f348790
+Ref: dev/api el function flycheck-string-list-p\7f348821
+Ref: 99\7f348821
+Ref: dev/api el function flycheck-symbol-list-p\7f348909
+Ref: 61\7f348909
+Node: Flycheck ERT API\7f348997
+Ref: dev/test-api flycheck-ert-api\7f349108
+Ref: 25d\7f349108
+Ref: dev/test-api doc\7f349108
+Ref: 25e\7f349108
+Ref: dev/test-api flycheck-ert\7f349108
+Ref: 17e\7f349108
+Node: Compatibility\7f349432
+Ref: dev/test-api compatibility\7f349533
+Ref: 25f\7f349533
+Node: Loading and initializing\7f350003
+Ref: dev/test-api loading-and-initializing\7f350125
+Ref: 260\7f350125
+Ref: dev/test-api el function flycheck-ert-initialize\7f350691
+Ref: 262\7f350691
+Node: Utilities<2>\7f350921
+Ref: dev/test-api utilities\7f351049
+Ref: 264\7f351049
+Node: Creating temporary buffers\7f351230
+Ref: dev/test-api creating-temporary-buffers\7f351339
+Ref: 265\7f351339
+Ref: dev/test-api el function flycheck-ert-with-temp-buffer\7f351408
+Ref: 266\7f351408
+Ref: dev/test-api el function flycheck-ert-with-file-buffer\7f351697
+Ref: 267\7f351697
+Node: Scoping resource access\7f351914
+Ref: dev/test-api scoping-resource-access\7f352056
+Ref: 268\7f352056
+Ref: dev/test-api el function flycheck-ert-with-help-buffer\7f352119
+Ref: 269\7f352119
+Ref: dev/test-api el function flycheck-ert-with-env\7f352295
+Ref: 26a\7f352295
+Ref: dev/test-api el function flycheck-ert-with-global-mode\7f352661
+Ref: 26b\7f352661
+Node: Accessing test resources\7f352834
+Ref: dev/test-api test-resources\7f352993
+Ref: 261\7f352993
+Ref: dev/test-api accessing-test-resources\7f352993
+Ref: 26c\7f352993
+Ref: dev/test-api el function flycheck-ert-resource-filename\7f353173
+Ref: 263\7f353173
+Ref: dev/test-api el function flycheck-ert-with-resource-buffer\7f353387
+Ref: 26d\7f353387
+Ref: dev/test-api el function flycheck-ert-locate-config-file\7f353644
+Ref: 26e\7f353644
+Node: Obtaining information about the environment\7f353792
+Ref: dev/test-api obtaining-information-about-the-environment\7f353919
+Ref: 26f\7f353919
+Ref: dev/test-api el variable flycheck-ert-user-error-type\7f354022
+Ref: 270\7f354022
+Ref: dev/test-api el function flycheck-ert-travis-ci-p\7f354119
+Ref: 271\7f354119
+Ref: dev/test-api el function flycheck-ert-check-gpg\7f354213
+Ref: 272\7f354213
+Ref: dev/test-api el function flycheck-ert-extract-version-command\7f354290
+Ref: 273\7f354290
+Node: Defining test cases\7f354659
+Ref: dev/test-api defining-test-cases\7f354754
+Ref: 274\7f354754
+Ref: dev/test-api el function flycheck-ert-def-checker-test\7f354930
+Ref: 275\7f354930
+Node: Checking results of test cases\7f356149
+Ref: dev/test-api checking-results-of-test-cases\7f356284
+Ref: 276\7f356284
+Ref: dev/test-api el function flycheck-ert-syntax-check-timed-out-p\7f356484
+Ref: 277\7f356484
+Node: Invoking syntax checkers in test cases\7f356635
+Ref: dev/test-api invoking-syntax-checkers-in-test-cases\7f356797
+Ref: 278\7f356797
+Ref: dev/test-api el function flycheck-ert-buffer-sync\7f356890
+Ref: 279\7f356890
+Ref: dev/test-api el function flycheck-ert-ensure-clear\7f356994
+Ref: 27a\7f356994
+Node: Writing assertions\7f357138
+Ref: dev/test-api writing-assertions\7f357261
+Ref: 27b\7f357261
+Ref: dev/test-api el function flycheck-ert-should-overlay\7f357314
+Ref: 27c\7f357314
+Ref: dev/test-api el function flycheck-ert-should-errors\7f357470
+Ref: 27d\7f357470
+Ref: dev/test-api el function flycheck-ert-should-syntax-check\7f358111
+Ref: 27e\7f358111
+Ref: dev/test-api el function flycheck-ert-at-nth-error\7f359291
+Ref: 27f\7f359291
+Node: Contribution guidelines\7f359515
+Ref: contrib/guidelines doc\7f359630
+Ref: 280\7f359630
+Ref: contrib/guidelines contribution-guidelines\7f359630
+Ref: 281\7f359630
+Ref: Contribution guidelines-Footnote-1\7f360017
+Node: Reporting issues\7f360069
+Ref: contrib/guidelines id1\7f360173
+Ref: 282\7f360173
+Ref: contrib/guidelines reporting-issues\7f360173
+Ref: 8d\7f360173
+Ref: Reporting issues-Footnote-1\7f360780
+Node: Contributing code\7f360832
+Ref: contrib/guidelines id2\7f360936
+Ref: 283\7f360936
+Ref: contrib/guidelines contributing-code\7f360936
+Ref: 1fd\7f360936
+Node: General\7f361224
+Ref: contrib/guidelines general\7f361306
+Ref: 284\7f361306
+Node: Code style\7f361431
+Ref: contrib/guidelines code-style\7f361537
+Ref: 285\7f361537
+Node: Commit messages\7f361964
+Ref: contrib/guidelines commit-messages\7f362091
+Ref: 286\7f362091
+Ref: Commit messages-Footnote-1\7f363883
+Ref: Commit messages-Footnote-2\7f363961
+Ref: Commit messages-Footnote-3\7f364005
+Node: Contributing syntax checkers\7f364045
+Ref: contrib/guidelines contributing-syntax-checkers\7f364175
+Ref: 1fe\7f364175
+Ref: contrib/guidelines id3\7f364175
+Ref: 287\7f364175
+Node: Pull requests\7f364959
+Ref: contrib/guidelines id4\7f365065
+Ref: 288\7f365065
+Ref: contrib/guidelines pull-requests\7f365065
+Ref: 289\7f365065
+Ref: Pull requests-Footnote-1\7f365660
+Node: Testing Flycheck\7f365721
+Ref: contrib/testing testing-flycheck\7f365841
+Ref: 28a\7f365841
+Ref: contrib/testing doc\7f365841
+Ref: 28b\7f365841
+Ref: contrib/testing pull-request\7f365841
+Ref: 28c\7f365841
+Node: Test suite layout\7f366176
+Ref: contrib/testing test-suite-layout\7f366269
+Ref: 28d\7f366269
+Node: Test running\7f367121
+Ref: contrib/testing test-running\7f367247
+Ref: 28e\7f367247
+Ref: contrib/testing id1\7f367247
+Ref: 28f\7f367247
+Ref: Test running-Footnote-1\7f368403
+Node: Virtual test environment\7f368439
+Ref: contrib/testing id2\7f368557
+Ref: 291\7f368557
+Ref: contrib/testing virtual-test-environment\7f368557
+Ref: 290\7f368557
+Ref: Virtual test environment-Footnote-1\7f370662
+Ref: Virtual test environment-Footnote-2\7f370698
+Ref: Virtual test environment-Footnote-3\7f370734
+Ref: Virtual test environment-Footnote-4\7f370769
+Ref: Virtual test environment-Footnote-5\7f370805
+Node: Travis CI\7f370829
+Ref: contrib/testing homebrew\7f370926
+Ref: 292\7f370926
+Ref: contrib/testing travis-ci\7f370926
+Ref: 293\7f370926
+Node: Writing documentation\7f371451
+Ref: contrib/docs writing-documentation\7f371565
+Ref: 294\7f371565
+Ref: contrib/docs doc\7f371565
+Ref: 295\7f371565
+Node: Build environment setup\7f371792
+Ref: contrib/docs doc-build-env\7f371909
+Ref: 296\7f371909
+Ref: contrib/docs build-environment-setup\7f371909
+Ref: 297\7f371909
+Ref: Build environment setup-Footnote-1\7f373056
+Ref: Build environment setup-Footnote-2\7f373086
+Ref: Build environment setup-Footnote-3\7f373148
+Ref: Build environment setup-Footnote-4\7f373201
+Ref: Build environment setup-Footnote-5\7f373230
+Node: Building HTML and Texinfo\7f373284
+Ref: contrib/docs building-docs\7f373430
+Ref: 298\7f373430
+Ref: contrib/docs building-html-and-texinfo\7f373430
+Ref: 299\7f373430
+Ref: Building HTML and Texinfo-Footnote-1\7f374171
+Node: Verifying references\7f374197
+Ref: contrib/docs verifying-references\7f374311
+Ref: 29a\7f374311
+Node: Maintenance tasks\7f374671
+Ref: contrib/maintenance maintenance-tasks\7f374795
+Ref: 29b\7f374795
+Ref: contrib/maintenance doc\7f374795
+Ref: 29c\7f374795
+Node: Rebuilding the Texinfo\7f375031
+Ref: contrib/maintenance rebuilding-the-texinfo\7f375139
+Ref: 29d\7f375139
+Ref: Rebuilding the Texinfo-Footnote-1\7f375642
+Node: Rasterized logo files\7f375668
+Ref: contrib/maintenance rasterized-logo-files\7f375776
+Ref: 29e\7f375776
+Ref: contrib/maintenance melpa\7f375776
+Ref: 29f\7f375776
+Ref: Rasterized logo files-Footnote-1\7f376552
+Ref: Rasterized logo files-Footnote-2\7f376588
+Node: GNU General Public License\7f376622
+Ref: gpl gnu-general-public-license\7f376755
+Ref: 2a0\7f376755
+Ref: gpl doc\7f376755
+Ref: 2a1\7f376755
+Ref: gpl inkscape\7f376755
+Ref: 2a2\7f376755
+Node: GNU Free Documentation License\7f414729
+Ref: fdl doc\7f414850
+Ref: 2a3\7f414850
+Ref: fdl gnu-free-documentation-license\7f414850
+Ref: 2a4\7f414850
+Node: Index\7f439738
+\1f
+End Tag Table
+
+\1f
+Local Variables:
+coding: utf-8
+End:
diff --git a/elpa/flycheck-20150125.601/flycheck.info-1 b/elpa/flycheck-20150125.601/flycheck.info-1
new file mode 100644 (file)
index 0000000..568c1f6
--- /dev/null
@@ -0,0 +1,9340 @@
+This is flycheck.info, produced by makeinfo version 5.2 from
+flycheck.texi.
+
+This manual is for Flycheck version 0.23-cvs.
+
+Copyright © 2014-2015 Sebastian Wiesner
+
+     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>.
+
+INFO-DIR-SECTION Emacs
+START-INFO-DIR-ENTRY
+* flycheck: (flycheck.info). On the fly syntax checking for GNU Emacs
+END-INFO-DIR-ENTRY
+
+
+   Generated by Sphinx 1.2.3.
+
+\1f
+File: flycheck.info,  Node: Top,  Next: Introduction,  Up: (dir)
+
+Flycheck
+********
+
+This manual is for Flycheck version 0.23-cvs.
+
+Copyright © 2014-2015 Sebastian Wiesner
+
+     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>.
+
+* Menu:
+
+* Introduction:: 
+* Flycheck versus Flymake:: 
+* Installation:: 
+* Quickstart:: 
+* Usage:: 
+* Supported languages:: 
+* Glossary:: 
+* Flycheck releases:: 
+* Extending Flycheck:: 
+* Flycheck API:: 
+* Flycheck ERT API:: 
+* Contribution guidelines:: 
+* Testing Flycheck:: 
+* Writing documentation:: 
+* Maintenance tasks:: 
+* GNU General Public License:: 
+* GNU Free Documentation License:: 
+* Index:: 
+
+ — The Detailed Node Listing —
+
+Introduction
+
+* Features:: 
+* 3rd party extensions:: 
+
+Flycheck versus Flymake
+
+* Overview:: 
+* Detailed review:: 
+
+Detailed review
+
+* Relation to Emacs:: 
+* Enabling syntax checking:: 
+* Syntax checkers:: 
+* Functions as syntax checkers:: 
+* Customization of syntax checkers:: 
+* Syntax checker selection:: 
+* Error levels:: 
+* Error identifiers:: 
+* Error parsing:: 
+* Error message display:: 
+* Error list:: 
+* Resource consumption:: 
+* Unit tests:: 
+
+Syntax checkers
+
+* Built-in syntax checkers:: 
+* Definition of new syntax checkers:: 
+
+Customization of syntax checkers
+
+* Executables of syntax checkers:: 
+
+Syntax checker selection
+
+* Custom predicates:: 
+* Manual selection:: 
+* Multiple syntax checkers per buffer:: 
+
+Resource consumption
+
+* Syntax checking:: 
+* Checking for changes:: 
+
+Installation
+
+* Prerequisites:: 
+* Package installation:: 
+* Setup:: 
+
+Prerequisites
+
+* Emacs:: 
+* Operating system:: 
+* Syntax checking tools:: 
+
+Package installation
+
+* Manual:: 
+* Cask:: 
+
+Quickstart
+
+* Enable Flycheck:: 
+* Install some syntax checker tools:: 
+* Check syntax in a buffer:: 
+* Navigate and list errors:: 
+* Explore the menu:: 
+* Further reading:: 
+
+Usage
+
+* Enabling syntax checking: Enabling syntax checking<2>. 
+* Checking buffers:: 
+* Selecting syntax checkers:: 
+* Configuring syntax checkers:: 
+* Error reporting:: 
+* Listing errors:: 
+* Copying (killing) errors: Copying killing errors. 
+* Navigating and jumping to errors:: 
+* Mode line reporting:: 
+
+Configuring syntax checkers
+
+* Syntax checker executables:: 
+* Syntax checker options:: 
+* Syntax checker configuration files:: 
+
+Supported languages
+
+* Ada:: 
+* AsciiDoc:: 
+* C/C++:: 
+* CFEngine:: 
+* Chef:: 
+* Coffeescript:: 
+* Coq:: 
+* CSS:: 
+* D:: 
+* Elixir:: 
+* Emacs Lisp:: 
+* Erlang:: 
+* ERuby:: 
+* Fortran:: 
+* Go:: 
+* Haml:: 
+* Handlebars:: 
+* Haskell:: 
+* HTML:: 
+* Javascript:: 
+* JSON:: 
+* LESS:: 
+* Lua:: 
+* Make:: 
+* Perl:: 
+* PHP:: 
+* Puppet:: 
+* Python:: 
+* R:: 
+* Racket:: 
+* RPM SPEC:: 
+* ReStructuredText:: 
+* Ruby:: 
+* Rust:: 
+* Sass:: 
+* Scala:: 
+* Scss:: 
+* Shell script languages:: 
+* Slim:: 
+* TeX/LaTeX:: 
+* Texinfo:: 
+* Verilog:: 
+* XML:: 
+* YAML:: 
+
+Flycheck releases
+
+* Release announcements:: 
+* Changelog:: 
+
+Release announcements
+
+* Flycheck 0.22: Flycheck 0 22. 
+* Flycheck 0.21: Flycheck 0 21. 
+* Flycheck 0.20: Flycheck 0 20. 
+* Flycheck 0.19: Flycheck 0 19. 
+* Flycheck 0.18: Flycheck 0 18. 
+* Flycheck 0.17: Flycheck 0 17. 
+* Flycheck 0.16: Flycheck 0 16. 
+* Flycheck 0.15: Flycheck 0 15. 
+
+Flycheck 0.22
+
+* Breaking changes:: 
+* Setup: Setup<2>. 
+* Language support:: 
+* Syntax checking improvements:: 
+* Error list improvements:: 
+* Generic syntax checkers:: 
+* Error IDs:: 
+* Unit test library for Flycheck:: 
+
+Language support
+
+* Ada: Ada<2>. 
+* C/C++: C/C++<2>. 
+* Emacs Lisp: Emacs Lisp<2>. 
+* Haskell: Haskell<2>. 
+* Fortran: Fortran<2>. 
+* Python: Python<2>. 
+* Rust: Rust<2>. 
+* TeX/LaTeX: TeX/LaTeX<2>. 
+
+Flycheck 0.21
+
+* Breaking changes: Breaking changes<2>. 
+* Language support: Language support<2>. 
+* Error list changes:: 
+* Error navigation and display:: 
+* Syntax checker definition and extension:: 
+* Obtaining the new release:: 
+
+Language support
+
+* C/C++: C/C++<3>. 
+* D: D<2>. 
+* Go: Go<2>. 
+* HTML: HTML<2>. 
+* Less:: 
+* Shell scripts:: 
+
+Flycheck 0.20
+
+* Breaking changes: Breaking changes<3>. 
+* Language support: Language support<3>. 
+* Error list improvements: Error list improvements<2>. 
+* User interface improvements:: 
+* Miscellaneous new features:: 
+* Miscellaneous fixes:: 
+* Get it:: 
+
+Language support
+
+* C/C++: C/C++<4>. 
+* Rust: Rust<3>. 
+* Scala: Scala<2>. 
+* Sass/SCSS:: 
+* Javascript: Javascript<2>. 
+* Ruby: Ruby<2>. 
+
+Flycheck 0.19
+
+* Breaking changes: Breaking changes<4>. 
+* Languages:: 
+* New features:: 
+* Bug fixes:: 
+* Misc changes:: 
+* Get it: Get it<2>. 
+
+Languages
+
+* C/C++: C/C++<5>. 
+* Emacs Lisp: Emacs Lisp<3>. 
+* Go: Go<3>. 
+* Haskell: Haskell<3>. 
+* Rust: Rust<4>. 
+
+Flycheck 0.18
+
+* Breaking changes: Breaking changes<5>. 
+* Syntax checkers: Syntax checkers<2>. 
+* Bug fixes: Bug fixes<2>. 
+* Get it: Get it<3>. 
+
+Flycheck 0.17
+
+* Breaking changes: Breaking changes<6>. 
+* New online manual:: 
+* Syntax checkers: Syntax checkers<3>. 
+* Extending syntax checkers:: 
+* Other bug fixes and improvements:: 
+
+Flycheck 0.16
+
+* Breaking changes: Breaking changes<7>. 
+* Syntax checkers: Syntax checkers<4>. 
+* New features: New features<2>. 
+* Improved error list:: 
+* Get it: Get it<4>. 
+
+Syntax checkers
+
+* New languages and checkers:: 
+* Better Haskell support:: 
+* Miscellaneous new options:: 
+
+New features
+
+* Syntax checker executables: Syntax checker executables<2>. 
+* Disable syntax checkers easily:: 
+
+Flycheck 0.15
+
+* Breaking changes: Breaking changes<8>. 
+* New syntax checkers:: 
+* New error list:: 
+* C/C++ support:: 
+* New info level messages:: 
+* Custom error levels:: 
+* Other improvements:: 
+* Get it: Get it<5>. 
+
+Changelog
+
+* master (in development): master in development. 
+* 0.22 (Dec 23, 2014): 0 22 Dec 23 2014. 
+* 0.21 (Oct 26, 2014): 0 21 Oct 26 2014. 
+* 0.20 (Aug 12, 2014): 0 20 Aug 12 2014. 
+* 0.19 (Jun 12, 2014): 0 19 Jun 12 2014. 
+* 0.18 (Mar 24, 2014): 0 18 Mar 24 2014. 
+* 0.17 (Feb 1, 2014): 0 17 Feb 1 2014. 
+* 0.16 (Jan 11, 2014): 0 16 Jan 11 2014. 
+* 0.15 (Nov 15, 2013): 0 15 Nov 15 2013. 
+* 0.14.1 (Aug 16, 2013): 0 14 1 Aug 16 2013. 
+* 0.14 (Aug 15, 2013): 0 14 Aug 15 2013. 
+* 0.13 (Jun 28, 2013): 0 13 Jun 28 2013. 
+* 0.12 (May 18, 2013): 0 12 May 18 2013. 
+* 0.11 (May 01, 2013): 0 11 May 01 2013. 
+* 0.10 (Apr 21, 2013): 0 10 Apr 21 2013. 
+* 0.9 (Apr 13, 2013): 0 9 Apr 13 2013. 
+* 0.8 (Apr 9, 2013): 0 8 Apr 9 2013. 
+* 0.7.1 (Feb 23, 2013): 0 7 1 Feb 23 2013. 
+* 0.7 (Feb 14, 2013): 0 7 Feb 14 2013. 
+* 0.6.1 (Jan 30, 2013): 0 6 1 Jan 30 2013. 
+* 0.6 (Jan 29, 2013): 0 6 Jan 29 2013. 
+* 0.5 (Dec 28, 2012): 0 5 Dec 28 2012. 
+* 0.4 (Nov 21, 2012): 0 4 Nov 21 2012. 
+* 0.3 (Nov 21, 2012): 0 3 Nov 21 2012. 
+* 0.2 (Oct 25, 2012): 0 2 Oct 25 2012. 
+* 0.1 (Oct 11, 2012): 0 1 Oct 11 2012. 
+
+Extending Flycheck
+
+* Defining new syntax checkers:: 
+* Advanced syntax checker definitions:: 
+* Other ways to extend Flycheck:: 
+
+Defining new syntax checkers
+
+* Finding the right error patterns:: 
+* Trying a new syntax checker:: 
+* Registering new syntax checkers:: 
+
+Advanced syntax checker definitions
+
+* Parsing structured output format:: 
+* Passing options and configuration files to syntax checkers:: 
+* Controlling the use of a syntax checker:: 
+* Applying more than one syntax checker:: 
+
+Other ways to extend Flycheck
+
+* Use arbitrary functions to check buffers:: 
+* Hooking into Flycheck:: 
+
+Hooking into Flycheck
+
+* Status changes:: 
+* Error processing:: 
+* Error display:: 
+
+Flycheck API
+
+* Syntax checks:: 
+* Generic syntax checkers: Generic syntax checkers<2>. 
+* Command syntax checkers:: 
+* Errors:: 
+* Flycheck buffer status:: 
+* Utilities:: 
+
+Generic syntax checkers
+
+* Status callback protocol:: 
+* Predicates for syntax checkers:: 
+* Error filters:: 
+
+Command syntax checkers
+
+* Command arguments:: 
+* Options for command syntax checkers:: 
+* Configuration files for command syntax checkers:: 
+* Error parsing with regular expressions:: 
+* Error parsers:: 
+
+Errors
+
+* Error processing: Error processing<2>. 
+* Error analysis:: 
+* Error levels: Error levels<2>. 
+
+Flycheck ERT API
+
+* Compatibility:: 
+* Loading and initializing:: 
+* Utilities: Utilities<2>. 
+* Defining test cases:: 
+
+Utilities
+
+* Creating temporary buffers:: 
+* Scoping resource access:: 
+* Accessing test resources:: 
+* Obtaining information about the environment:: 
+
+Defining test cases
+
+* Checking results of test cases:: 
+* Invoking syntax checkers in test cases:: 
+* Writing assertions:: 
+
+Contribution guidelines
+
+* Reporting issues:: 
+* Contributing code:: 
+
+Contributing code
+
+* General:: 
+* Code style:: 
+* Commit messages:: 
+* Contributing syntax checkers:: 
+* Pull requests:: 
+
+Testing Flycheck
+
+* Test suite layout:: 
+* Test running:: 
+* Virtual test environment:: 
+* Travis CI:: 
+
+Writing documentation
+
+* Build environment setup:: 
+* Building HTML and Texinfo:: 
+* Verifying references:: 
+
+Maintenance tasks
+
+* Rebuilding the Texinfo:: 
+* Rasterized logo files:: 
+
+
+\1f
+File: flycheck.info,  Node: Introduction,  Next: Flycheck versus Flymake,  Prev: Top,  Up: Top
+
+1 Introduction
+**************
+
+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.
+
+* Menu:
+
+* Features:: 
+* 3rd party extensions:: 
+
+\1f
+File: flycheck.info,  Node: Features,  Next: 3rd party extensions,  Up: Introduction
+
+1.1 Features
+============
+
+   - 44 languages with 74 syntax checkers, see *note Supported
+     languages: 5.
+
+   - *note Fully automatic, fail-safe, on-the-fly syntax checking in
+     background: 6.
+
+   - *note Nice error indication and highlighting: 7.
+
+   - Optional error list popup
+
+   - *note Many customization options: 8.
+
+   - *note A comprehensive manual: 9.
+
+   - *note A simple API to define new syntax checkers: a.
+
+   - A “doesn’t get in your way” guarantee
+
+\1f
+File: flycheck.info,  Node: 3rd party extensions,  Prev: Features,  Up: Introduction
+
+1.2 3rd party extensions
+========================
+
+The following extensions provide additional cool features for Flycheck:
+
+   - flycheck-cask(1) makes Flycheck use Cask packages in Cask(2)
+     projects.
+
+   - flycheck-color-mode-line(3) colors the mode line according to the
+     Flycheck status.
+
+   - flycheck-d-unittest(4) adds a Flycheck checker to run unit tests
+     for D programs on the fly.
+
+   - flycheck-google-cpplint(5) adds a syntax checker for Google’s C++
+     style checker.
+
+   - flycheck-haskell(6) improves Haskell support in Flycheck, by
+     configuring Flycheck according to the current Cabal project, and
+     using Cabal sandbox packages.
+
+   - flycheck-hdevtools(7) adds a Flycheck syntax checker for Haskell
+     based on hdevtools(8).
+
+   - flycheck-irony(9) adds a Flycheck syntax checker for C, C++ and
+     Objective C using Irony Mode(10).
+
+   - flycheck-ledger(11) adds a syntax checker for the Ledger(12)
+     accounting tool.
+
+   - flycheck-mercury(13) adds a Flycheck syntax checker for the Mercury
+     Language(14).
+
+   - flycheck-ocaml(15) adds a syntax checker for OCaml.
+
+   - flycheck-pos-tip(16) shows Flycheck error messages in a popup.
+
+   - flycheck-pyflakes(17) adds a Python syntax checker using Pyflakes.
+
+   - flycheck-rust(18) improves Rust support in Flycheck, by configuring
+     Flycheck according to Cargo settings and layouts.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck-cask
+
+   (2) https://github.com/cask/cask
+
+   (3) https://github.com/flycheck/flycheck-color-mode-line
+
+   (4) https://github.com/flycheck/flycheck-d-unittest
+
+   (5) https://github.com/flycheck/flycheck-google-cpplint
+
+   (6) https://github.com/flycheck/flycheck-haskell
+
+   (7) https://github.com/flycheck/flycheck-hdevtools
+
+   (8) https://github.com/bitc/hdevtools/
+
+   (9) https://github.com/Sarcasm/flycheck-irony
+
+   (10) https://github.com/Sarcasm/irony-mode
+
+   (11) https://github.com/purcell/flycheck-ledger
+
+   (12) http://ledger-cli.org/
+
+   (13) https://github.com/flycheck/flycheck-mercury
+
+   (14) http://mercurylang.org/
+
+   (15) https://github.com/flycheck/flycheck-ocaml
+
+   (16) https://github.com/flycheck/flycheck-pos-tip
+
+   (17) https://github.com/Wilfred/flycheck-pyflakes
+
+   (18) https://github.com/flycheck/flycheck-rust
+
+\1f
+File: flycheck.info,  Node: Flycheck versus Flymake,  Next: Installation,  Prev: Introduction,  Up: Top
+
+2 Flycheck versus Flymake
+*************************
+
+This article provides information about Flycheck compares to the
+_built-in_ Flymake mode.  It does not consider the improved Flymake
+fork(1) or third-party extensions such as flymake-easy(2) or
+flymake-cursor(3), but references them at appropriate places.
+
+We aim for this comparison to be neutral and complete, but do not
+provide any guarantee for completeness or correctness of the following
+information.  Moreover, we consider Flycheck superior to Flymake in all
+aspects.  As such, you may find this page biased towards Flycheck.
+Please excuse this as well as any factual mistake or lack of
+information.  Please suggest improvements.
+
+* Menu:
+
+* Overview:: 
+* Detailed review:: 
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/illusori/emacs-flymake
+
+   (2) https://github.com/purcell/flymake-easy
+
+   (3) http://www.emacswiki.org/emacs/flymake-cursor.el
+
+\1f
+File: flycheck.info,  Node: Overview,  Next: Detailed review,  Up: Flycheck versus Flymake
+
+2.1 Overview
+============
+
+This table intends to give an overview about the differences and
+similarities between Flycheck and the default install of Flymake.  It is
+not a direct comparision to third-party extensions such as flymake-easy,
+flymake-cursor, or forks of Flymake.  For a more comprehensive look
+compared to those extensions, please read the details in the main
+article and the footnotes.
+
+Please do _not_ only use this table to make your personal judgment, but
+also read the detailed review in the following sections, at least with
+regards to the features you are interested in.
+
+                                       Flycheck                  Flymake
+                                                                 
+                                                                 
+Supported Emacs versions               24+                       22+
+                                                                 
+                                                                 
+Built-in                               no (1)                    yes
+                                                                 
+                                                                 
+Automatically enabled in supported     yes                       no
+languages                                                        
+
+Checks after                           save, newline, change     save, newline, change
+                                                                 
+                                                                 
+Checks in background                   yes                       yes
+                                                                 
+                                                                 
+Automatic syntax checker selection     By major mode and         By file name patterns
+                                       custom predicates         (2)
+                                                                 
+                                                                 
+Manual syntax checker selection        yes                       *no*
+                                                                 
+                                                                 
+Multiple syntax checkers per buffer    yes                       *no* (3)
+                                                                 
+                                                                 
+Supported languages                    > 30                      ~5 (4)
+                                                                 
+                                                                 
+Checking remote files via Tramp        no                        partly?
+                                                                 
+                                                                 
+Definition of new syntax checkers      Via a single              By a function
+                                       declarative macro         definition and various
+                                                                 variables (5)
+                                                                 
+                                                                 
+Functions as syntax checkers           yes                       *no*
+                                                                 
+                                                                 
+Customization of syntax checkers       yes                       no
+                                                                 
+                                                                 
+Error levels                           Errors, warnings,         Errors and warnings (6)
+                                       information, and custom   
+                                       levels
+                                       
+                                                                 
+Error identifiers                      yes                       no
+                                                                 
+                                                                 
+Error parsing                          Regular expressions, or   Regular expressions
+                                       custom error parsers      
+                                       (e.g.  XML, JSON, etc.)
+                                       
+                                                                 
+Multiline error messages               yes                       *no* (7)
+                                                                 
+                                                                 
+Error highlighting in the buffer       yes                       yes
+                                                                 
+                                                                 
+Fringe icons for errors                yes                       yes
+                                                                 
+                                                                 
+Error messages display                 Via tooltip and echo      In tooltip (8)
+                                       area, fully               
+                                       customizable
+                                       
+                                                                 
+List all errors in the buffer          yes                       *no*
+                                                                 
+                                                                 
+Resource consumption                   low                       high (9)
+                                                                 
+                                                                 
+Unit tests                             all syntax checkers,      *none?*
+                                       and large parts of the    
+                                       underlying processing
+                                       
+
+   ---------- Footnotes ----------
+
+   (1) Flycheck is *unlikely to ever become part of Emacs*.
+
+   (2) The 3rd party library flymake-easy
+(https://github.com/purcell/flymake-easy) allows to use syntax checkers
+per major mode.
+
+   (3) Various 3rd party packages thus use custom shell scripts to call
+multiple syntax checking tools at once.
+
+   (4) However, the Flymake page
+(http://www.emacswiki.org/emacs/FlyMake) in the EmacsWiki provides
+recipes for many other languages, although of varying quality.
+Furthermore, the popular ELPA archive MELPA provides many packages which
+add more languages to Flymake.  There is also a Flymake fork
+(https://github.com/illusori/emacs-flymake), which supports more
+languages out of the box, among other fixes and improvements.
+
+   (5) flymake-easy (https://github.com/purcell/flymake-easy) provides a
+function to define a new syntax checker, which sets all required
+variables at once.
+
+   (6) The Flymake fork (https://github.com/illusori/emacs-flymake) adds
+support for info messages.
+
+   (7) flymake-easy (https://github.com/purcell/flymake-easy)
+_overrides_ internal functions of Flymake to add support for multiline
+error messages.
+
+   (8) The 3rd party library flymake-cursor
+(http://www.emacswiki.org/emacs/flymake-cursor.el) shows Flymake error
+messages at point in the echo area.
+
+   (9) A third-party Flymake fork
+(https://github.com/illusori/emacs-flymake) mostly fixes the performance
+and resource consumption issues in Flymake.
+
+\1f
+File: flycheck.info,  Node: Detailed review,  Prev: Overview,  Up: Flycheck versus Flymake
+
+2.2 Detailed review
+===================
+
+* Menu:
+
+* Relation to Emacs:: 
+* Enabling syntax checking:: 
+* Syntax checkers:: 
+* Functions as syntax checkers:: 
+* Customization of syntax checkers:: 
+* Syntax checker selection:: 
+* Error levels:: 
+* Error identifiers:: 
+* Error parsing:: 
+* Error message display:: 
+* Error list:: 
+* Resource consumption:: 
+* Unit tests:: 
+
+\1f
+File: flycheck.info,  Node: Relation to Emacs,  Next: Enabling syntax checking,  Up: Detailed review
+
+2.2.1 Relation to Emacs
+-----------------------
+
+*Flymake* is part of GNU Emacs since GNU Emacs 22.  As such,
+contributions to Flymake are subject to the FSF policies on GNU
+projects.  Most notably, contributors are required to assign their
+copyright to the FSF by signing a contributor agreement.
+
+*Flycheck* is not part of GNU Emacs, and is *unlikely to ever be*.
+However, it is free software as well, and publicly developed on the
+well-known code hosting platform Github(1).  Contributing to Flycheck
+does not require a copyright assignments.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck
+
+\1f
+File: flycheck.info,  Node: Enabling syntax checking,  Next: Syntax checkers,  Prev: Relation to Emacs,  Up: Detailed review
+
+2.2.2 Enabling syntax checking
+------------------------------
+
+*Flymake* is not enabled automatically for supported languages.  It must
+be be enabled for each mode individually and *carefully*, because it
+does not deal well with unavailable syntax checker tools.  In a GUI
+frame, it signals errors in GUI dialogs.  In a TTY frame, it does not
+signal any error at all, but instead silently hangs.  The same occurs,
+when a syntax checker tool becomes unavailable after Flymake Mode is
+enabled, for instance, because the underlying tool was uninstalled.
+
+The third-party library flymake-easy(1) provides an alternate way to
+enable Flymake Mode, which gracefully handles unavailable syntax
+checkers.  It does not check whether the tool still exists before a
+syntax check, though, and thus does still exposes above behavior, when a
+tool becomes unavailable after the mode was enabled.
+
+*Flycheck* provides a global mode (see *note global-flycheck-mode: 15.),
+which enables syntax checking in every supported language.  If a syntax
+checking tool is not available, Flycheck fails gracefully, does not
+enable syntax checking, and just indicates the failure in the mode line.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/purcell/flymake-easy
+
+\1f
+File: flycheck.info,  Node: Syntax checkers,  Next: Functions as syntax checkers,  Prev: Enabling syntax checking,  Up: Detailed review
+
+2.2.3 Syntax checkers
+---------------------
+
+* Menu:
+
+* Built-in syntax checkers:: 
+* Definition of new syntax checkers:: 
+
+\1f
+File: flycheck.info,  Node: Built-in syntax checkers,  Next: Definition of new syntax checkers,  Up: Syntax checkers
+
+2.2.3.1 Built-in syntax checkers
+................................
+
+*Flymake* supports Java, Makefiles, Perl, PHP, TeX/LaTeX and XML.
+Notably, it does _not_ support Emacs Lisp.  A third-party Flymake
+fork(1) supports more languages, though.  Furthermore there are many
+recipes for other languages on the Flymake page(2) in the EmacsWiki, and
+many extension packages for other languages in the popular ELPA archive
+MELPA(3).
+
+*Flycheck* provides support for 44 languages (see *note Supported
+languages: 5.) with 74 syntax checkers, most of them contributed by the
+community.  Notably, Flycheck does _not_ support Java and Makefiles.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/illusori/emacs-flymake
+
+   (2) http://www.emacswiki.org/emacs/FlyMake
+
+   (3) http://melpa.org/
+
+\1f
+File: flycheck.info,  Node: Definition of new syntax checkers,  Prev: Built-in syntax checkers,  Up: Syntax checkers
+
+2.2.3.2 Definition of new syntax checkers
+.........................................
+
+*Flymake* does not provide a single function to define a new syntax
+checker.  Instead, one has to define an “init” function, which returns
+the command, and add this function to ‘flymake-allowed-file-name-masks’.
+Additionally, one has to add the error patterns to
+‘flymake-err-line-patterns’.  As such, defining a syntax checker is
+difficult for users who are not familiar with Emacs Lisp.
+flymake-easy(1) provides an easier way to define new syntax checkers,
+though.
+
+*Flycheck* provides a single function *note flycheck-define-checker: 19.
+to define a new syntax checker.  This function uses a declarative
+syntax, which is easy to understand even for users unfamiliar with Emacs
+Lisp.  In fact, many syntax checkers in Flycheck were contributed by the
+community(2).
+
+For example, the Perl checker in Flymake is defined as follows.
+
+     (defun flymake-perl-init ()
+       (let* ((temp-file   (flymake-init-create-temp-buffer-copy
+                            'flymake-create-temp-inplace))
+              (local-file  (file-relative-name
+                            temp-file
+                            (file-name-directory buffer-file-name))))
+         (list "perl" (list "-wc " local-file))))
+
+     (defcustom flymake-allowed-file-name-masks
+       '(;; …
+         ("\\.p[ml]\\'" flymake-perl-init)
+         ;; …
+         ))
+
+     (defvar flymake-err-line-patterns ; regexp file-idx line-idx col-idx (optional) text-idx(optional), match-end to end of string is error text
+       (append
+        '(;; …
+          ;; perl
+          ("\\(.*\\) at \\([^ \n]+\\) line \\([0-9]+\\)[,.\n]" 2 3 nil 1)
+          ;; …
+          )
+        ;; …
+       ))
+
+Whereas Flycheck’s definition of the same checker looks like this:
+
+     (flycheck-define-checker perl
+       "A Perl syntax checker using the Perl interpreter.
+
+     See URL `http://www.perl.org'."
+       :command ("perl" "-w" "-c" source)
+       :error-patterns
+       ((error line-start (minimal-match (message))
+               " at " (file-name) " line " line
+               (or "." (and ", " (zero-or-more not-newline))) line-end))
+       :modes (perl-mode cperl-mode))
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/purcell/flymake-easy
+
+   (2) 
+https://github.com/flycheck/flycheck/issues?labels=checker&milestone=&page=1&state=closed
+
+\1f
+File: flycheck.info,  Node: Functions as syntax checkers,  Next: Customization of syntax checkers,  Prev: Syntax checkers,  Up: Detailed review
+
+2.2.4 Functions as syntax checkers
+----------------------------------
+
+*Flymake* cannot check a buffer with a custom Emacs Lisp function.
+
+*Flycheck* provides the *note flycheck-define-generic-checker: 1b.
+function to define a syntax checker based on an arbitrary Emacs Lisp
+function.  Flycheck supports synchronous as well as asynchronous
+functions, and provides simple callback-based protocol to communicate
+the status of syntax checks.  This allows Flycheck to use persistent
+background processes for syntax checking.  For instance,
+flycheck-ocaml(1) uses a running Merlin(2) process to check OCaml
+buffers, which is much easier and faster than invoking the OCaml
+compiler.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck-ocaml
+
+   (2) https://github.com/the-lambda-church/merlin
+
+\1f
+File: flycheck.info,  Node: Customization of syntax checkers,  Next: Syntax checker selection,  Prev: Functions as syntax checkers,  Up: Detailed review
+
+2.2.5 Customization of syntax checkers
+--------------------------------------
+
+*Flymake* does not provide built-in means to customize syntax checkers.
+Instead, when defining a new syntax checker, the user needs to declare
+customization variables explicitly and explicitly check their value in
+the init function.
+
+*Flycheck* provides built-in functions to add customization variables to
+syntax checkers and splice the value of these variables into the
+argument list of a syntax checking tool.  Many syntax checkers in
+Flycheck provide customization variables.  For instance, you can
+customize the enabled warnings for C with *note flycheck-clang-warnings:
+1d.  Flycheck also tries to automatically find configuration files for
+syntax checkers.
+
+* Menu:
+
+* Executables of syntax checkers:: 
+
+\1f
+File: flycheck.info,  Node: Executables of syntax checkers,  Up: Customization of syntax checkers
+
+2.2.5.1 Executables of syntax checkers
+......................................
+
+*Flymake* does not provide built-in means to change the executable of a
+syntax checker.
+
+*Flycheck* implicitly defines a variable to set the path of a syntax
+checker tool for each defined syntax checker, and provides the
+interactive command *note flycheck-set-checker-executable: 1f. to change
+the executable used in a buffer.
+
+\1f
+File: flycheck.info,  Node: Syntax checker selection,  Next: Error levels,  Prev: Customization of syntax checkers,  Up: Detailed review
+
+2.2.6 Syntax checker selection
+------------------------------
+
+*Flymake* selects syntax checkers based on file name patterns in
+‘flymake-allowed-file-name-masks’.  Effectively, this duplicates the
+existing logic Emacs uses to choose the right major mode, but lacks its
+flexibility and power.  For instance, Flymake cannot pick a syntax
+checker based on the shebang of a file.
+
+*Flycheck* uses the major mode to select a syntax checker.  This reuses
+the existing sophisticated logic Emcas uses to choose and configure
+major modes.  Flycheck can easily select a Python syntax checker for a
+Python script without file extension, but with proper shebang, simply
+because Emacs correctly chooses Python Mode for such a file.
+
+* Menu:
+
+* Custom predicates:: 
+* Manual selection:: 
+* Multiple syntax checkers per buffer:: 
+
+\1f
+File: flycheck.info,  Node: Custom predicates,  Next: Manual selection,  Up: Syntax checker selection
+
+2.2.6.1 Custom predicates
+.........................
+
+*Flymake* does not allow for custom predicates to implement more complex
+logic for syntax checker selection.  For instance, Flymake cannot use
+different syntax checkers for buffer depending on the value of a local
+variable.
+
+However, flymake-easy(1) patches Flymake to allow for custom syntax
+checkers per buffer.  This does not happen automatically though.  The
+user still needs to explicitly register a syntax checker in a major mode
+hook.
+
+*Flycheck* supports custom predicate function.  It uses these to
+implement the shell script syntax checkers, for instance.  Emacs uses a
+single major mode for various shell script types (e.g.  Bash, Zsh, POSIX
+Shell, etc.), so Flycheck additionally uses a custom predicate to look
+at the value of the variable ‘sh-shell’ in Sh Mode buffers, to determine
+which shell to use for syntax checking.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/purcell/flymake-easy
+
+\1f
+File: flycheck.info,  Node: Manual selection,  Next: Multiple syntax checkers per buffer,  Prev: Custom predicates,  Up: Syntax checker selection
+
+2.2.6.2 Manual selection
+........................
+
+*Flymake* does not provide means to manually select a specific syntax
+checker, either interactively, or via local variables.
+
+*Flycheck* provides the local variable *note flycheck-checker: 23. to
+explicitly use a specific syntax checker for a buffer, and the command
+*note flycheck-select-checker: 24. to set this variable interactively.
+
+\1f
+File: flycheck.info,  Node: Multiple syntax checkers per buffer,  Prev: Manual selection,  Up: Syntax checker selection
+
+2.2.6.3 Multiple syntax checkers per buffer
+...........................................
+
+*Flymake* can only use a single syntax checker per buffer.  Effectively,
+the user can only use a single tool to check a buffer, for instance
+either PHP Mess Detector or PHP CheckStyle.  Third party extensions to
+Flycheck work around this limitation by supplying custom shell scripts
+to call multiple syntax checking tools at once.
+
+*Flycheck* can easily apply multiple syntax checkers per buffer.  For
+instance, Flycheck will check PHP files with PHP CLI first to find
+syntax errors, then with PHP MessDetector to additionally find idiomatic
+and semantic errors, and eventually with PHP CheckStyle to find
+stylistic errors.  The user will see all errors reported by all of these
+utilities in the buffer.
+
+\1f
+File: flycheck.info,  Node: Error levels,  Next: Error identifiers,  Prev: Syntax checker selection,  Up: Detailed review
+
+2.2.7 Error levels
+------------------
+
+*Flymake* supports error and warning messages.  The pattern of warning
+messages is _hard-coded_ in Emacs 24.3, and only became customizable in
+upcoming Emacs 24.4.  The patterns to parse messages are kept separate
+from the actual syntax checker.
+
+The third-party Flymake fork(1) also supports info messages, and makes
+the pattern of warning messages customizable as well.
+
+*Flycheck* supports error, warning and info messages.  The patterns to
+parse messages of different levels are part of the syntax checker
+definition, and thus specific to each syntax checker.  Flycheck allows
+to define new error levels for use in custom syntax checkers with *note
+flycheck-define-error-level: 27.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/illusori/emacs-flymake
+
+\1f
+File: flycheck.info,  Node: Error identifiers,  Next: Error parsing,  Prev: Error levels,  Up: Detailed review
+
+2.2.8 Error identifiers
+-----------------------
+
+*Flymake* does not support unique identifiers for different kinds of
+errors.
+
+*Flycheck* supports unique identifiers for different kinds of errors, if
+a syntax checker provides these.  The identifiers appear in the error
+list and in error display, and can be copied independently, for instance
+for use in an inline suppression comment, or to search the web for a
+particular kind of error.
+
+\1f
+File: flycheck.info,  Node: Error parsing,  Next: Error message display,  Prev: Error identifiers,  Up: Detailed review
+
+2.2.9 Error parsing
+-------------------
+
+*Flymake* parses the output of syntax checker tools with regular
+expressions only.  As it splits the output by lines regardless of the
+regular expressions, it does not support error messages spanning
+multiple lines (such as returned by the Emacs Lisp byte compiler or by
+the Glasgow Haskell Compiler).
+
+flymake-easy(1) overrides internal Flymake functions to support
+multiline error messages.
+
+*Flycheck* can use regular expressions as well as custom parsing
+functions.  By means of such functions, it can parse JSON, XML or other
+structured output formats.  Flycheck includes some ready-to-use parsing
+functions for well-known output formats, such as Checkstyle XML. By
+parsing structured output format, Flycheck can handle arbitrarily
+complex error messages.  Also, with regular expressions it uses the
+error patterns to split the output into tokens, and thus handles
+multiline messages just as well.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/purcell/flymake-easy
+
+\1f
+File: flycheck.info,  Node: Error message display,  Next: Error list,  Prev: Error parsing,  Up: Detailed review
+
+2.2.10 Error message display
+----------------------------
+
+In GUI frames, *Flymake* shows error messages in a tool tip, if the user
+hovers the mouse over an error location.  It does not provide means to
+show error messages in a TTY frame, or with the keyboard only.
+
+The third-party library flymake-cursor(1) shows Flymake error messages
+at point in the echo area, by overriding internal Flymake functions.
+
+*Flycheck* shows error message tool tips as well, but also displays
+error messages in the echo area, if the point is at an error location.
+This feature is fully customizable via *note
+flycheck-display-errors-function: 2b.
+
+   ---------- Footnotes ----------
+
+   (1) http://www.emacswiki.org/emacs/flymake-cursor.el
+
+\1f
+File: flycheck.info,  Node: Error list,  Next: Resource consumption,  Prev: Error message display,  Up: Detailed review
+
+2.2.11 Error list
+-----------------
+
+*Flymake* does not provide means to list all errors in the current
+buffer.
+
+*Flycheck* can list all errors in the current buffer in a separate
+window.  This error list is automatically updated after each syntax
+check, and follows the focus.
+
+\1f
+File: flycheck.info,  Node: Resource consumption,  Next: Unit tests,  Prev: Error list,  Up: Detailed review
+
+2.2.12 Resource consumption
+---------------------------
+
+* Menu:
+
+* Syntax checking:: 
+* Checking for changes:: 
+
+\1f
+File: flycheck.info,  Node: Syntax checking,  Next: Checking for changes,  Up: Resource consumption
+
+2.2.12.1 Syntax checking
+........................
+
+*Flymake* starts a syntax check after every change, regardless of
+whether the buffer is visible in a window or not.  It does not limit the
+number of concurrent syntax checks.  As such, Flymake starts many
+concurrent syntax checks, if many buffers are changed at the same time
+(e.g.  after a VCS revert), which is known to freeze Emacs temporarily.
+
+The third-party Flymake fork(1) limits the number of concurrent syntax
+checks.  It does not take care to check visible buffers first, though.
+
+*Flycheck* does not conduct syntax checks in buffers which are not
+visible in any window.  Instead it defers syntax checks in such buffers
+until after the buffer is visible again.  Hence, Flycheck does only
+start as many concurrent syntax checks as there are visible windows in
+the current Emacs session.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/illusori/emacs-flymake
+
+\1f
+File: flycheck.info,  Node: Checking for changes,  Prev: Syntax checking,  Up: Resource consumption
+
+2.2.12.2 Checking for changes
+.............................
+
+*Flymake* uses a _separate_ timer (in ‘flymake-timer’) to periodically
+check for changes in each buffer.  These timers run even if the
+corresponding buffers do not change.  This is known to cause
+considerable CPU load with many open buffers.
+
+The third-party Flymake fork(1) uses a single global timer to check for
+changes.  This greatly reduces the CPU load, but still consumes some
+marginal CPU, even if Emacs is idle and not in use currently.
+
+*Flycheck* does not use timers at all to check for changes.  Instead it
+registers a handler for Emacs’ built-in ‘after-change-functions’ hook,
+which is run after changes to the buffer.  This handler is only invoked
+when the buffer actually changed, and starts a one-shot timer to delay
+the syntax check until the editing stopped for a short time, to save
+resources and avoid checking half-finished editing.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/illusori/emacs-flymake
+
+\1f
+File: flycheck.info,  Node: Unit tests,  Prev: Resource consumption,  Up: Detailed review
+
+2.2.13 Unit tests
+-----------------
+
+*Flymake* does not have a test suite at all.
+
+*Flycheck* has unit tests for all built-in syntax checkers, and for
+large parts of the underlying machinery and API. Contributed syntax
+checkers are required to have test cases.  The tests are continuously
+run on Travis CI(1).
+
+   ---------- Footnotes ----------
+
+   (1) https://travis-ci.org/flycheck/flycheck
+
+\1f
+File: flycheck.info,  Node: Installation,  Next: Quickstart,  Prev: Flycheck versus Flymake,  Up: Top
+
+3 Installation
+**************
+
+* Menu:
+
+* Prerequisites:: 
+* Package installation:: 
+* Setup:: 
+
+\1f
+File: flycheck.info,  Node: Prerequisites,  Next: Package installation,  Up: Installation
+
+3.1 Prerequisites
+=================
+
+* Menu:
+
+* Emacs:: 
+* Operating system:: 
+* Syntax checking tools:: 
+
+\1f
+File: flycheck.info,  Node: Emacs,  Next: Operating system,  Up: Prerequisites
+
+3.1.1 Emacs
+-----------
+
+Flycheck supports Emacs 24.  It is tested with Emacs 24.3, and Emacs
+snapshot builds.  It should work with GNU Emacs 24.1 and 24.2 as well,
+but it is not tested against these versions.  If it does not work with
+these versions, please report an issue.
+
+     Warning: Flycheck also does not support GNU Emacs 23 and other
+     flavors of Emacs (e.g.  XEmacs, Aquamacs, etc.).  Don’t try, it
+     will *not* work.
+
+\1f
+File: flycheck.info,  Node: Operating system,  Next: Syntax checking tools,  Prev: Emacs,  Up: Prerequisites
+
+3.1.2 Operating system
+----------------------
+
+Flycheck supports any Unix-like operating system.  It is extensively
+tested on Linux and OS X.
+
+     Warning: Flycheck tries to maintain compatibility with Windows, and
+     generally works well on Windows.  Pull requests which fix or
+     improve Windows compatibility are *very* welcome.
+
+     However, Flycheck does *not* explicitly support Windows.  If there
+     are any issues or problems with Windows, *you are on your own*.  We
+     can neither answer questions about Windows support, nor can we fix
+     Windows-specific issues.
+
+\1f
+File: flycheck.info,  Node: Syntax checking tools,  Prev: Operating system,  Up: Prerequisites
+
+3.1.3 Syntax checking tools
+---------------------------
+
+For almost all supported languages, Flycheck also needs additional
+*external* checker programs.  See *note Supported languages: 39. for a
+list of supported languages and the corresponding checkers programs, and
+use *note flycheck-describe-checker: 3a. to get help about specific
+checkers inside Emacs.
+
+For instance, for Python you need either Flake8(1) or Pylint(2), which
+can be installed with ‘pip install flake8’ and ‘pip install pylint’
+respectively.
+
+Generally you can install the required external checker programs with
+the standard package manager of the corresponding programming languages
+(e.g.  Rubygems for Ruby, NPM for Javascript).  Many checker programs
+are also available in the package repositories of popular Linux
+distributions, or as Formula for the OS X package manager Homebrew(3).
+
+   ---------- Footnotes ----------
+
+   (1) https://flake8.readthedocs.org/
+
+   (2) http://www.pylint.org/
+
+   (3) http://brew.sh/
+
+\1f
+File: flycheck.info,  Node: Package installation,  Next: Setup,  Prev: Prerequisites,  Up: Installation
+
+3.2 Package installation
+========================
+
+* Menu:
+
+* Manual:: 
+* Cask:: 
+
+\1f
+File: flycheck.info,  Node: Manual,  Next: Cask,  Up: Package installation
+
+3.2.1 Manual
+------------
+
+Install the ELPA package from MELPA(1) or MELPA Stable(2) using ‘M-x
+package-install RET flycheck’.
+
+     Warning: Flycheck is available from Marmalade(3) as well, but this
+     repository is *not recommended*.  Due to frequent outages the
+     package is not guaranteed to be updated regularly.
+
+Neither of these repositories is included in GNU Emacs by default.  You
+need to enable these repositories explicitly.  For instance, to add the
+MELPA repository, add the following code to ‘init.el’:
+
+     (require 'package)
+     (add-to-list 'package-archives
+                  '("melpa" . "http://melpa.org/packages/") t)
+     (package-initialize)
+
+   ---------- Footnotes ----------
+
+   (1) http://melpa.org
+
+   (2) http://stable.melpa.org
+
+   (3) https://marmalade-repo.org/
+
+\1f
+File: flycheck.info,  Node: Cask,  Prev: Manual,  Up: Package installation
+
+3.2.2 Cask
+----------
+
+If you use *note Cask: 3e, just add the following to your ‘Cask’ file,
+and run ‘cask install’:
+
+     (source gnu)
+     (source melpa)
+
+     (depends-on "flycheck")
+
+\1f
+File: flycheck.info,  Node: Setup,  Prev: Package installation,  Up: Installation
+
+3.3 Setup
+=========
+
+Use ‘M-x flycheck-mode’ to enable Flycheck in the current buffer, and
+‘M-x global-flycheck-mode’ to enable Flycheck for the entire current
+Emacs session.
+
+To permanently enable Flycheck, add the following to your ‘init.el’:
+
+     (add-hook 'after-init-hook #'global-flycheck-mode)
+
+\1f
+File: flycheck.info,  Node: Quickstart,  Next: Usage,  Prev: Installation,  Up: Top
+
+4 Quickstart
+************
+
+* Menu:
+
+* Enable Flycheck:: 
+* Install some syntax checker tools:: 
+* Check syntax in a buffer:: 
+* Navigate and list errors:: 
+* Explore the menu:: 
+* Further reading:: 
+
+\1f
+File: flycheck.info,  Node: Enable Flycheck,  Next: Install some syntax checker tools,  Up: Quickstart
+
+4.1 Enable Flycheck
+===================
+
+Enable Flycheck globally by adding the following to your ‘init.el’, and
+restart Emacs:
+
+     (add-hook 'after-init-hook #'global-flycheck-mode)
+
+\1f
+File: flycheck.info,  Node: Install some syntax checker tools,  Next: Check syntax in a buffer,  Prev: Enable Flycheck,  Up: Quickstart
+
+4.2 Install some syntax checker tools
+=====================================
+
+Install some syntax checking tools for the programming or markup
+language you are using.  Take a look at the *note list of supported
+languages: 5. to check what languages and tools are supported.
+
+For Python:
+
+     $ pip install --user pylint
+
+Or for Ruby:
+
+     $ gem install rubocop ruby-lint
+
+Or for Haskell:
+
+     $ brew install haskell-platform
+     $ cabal install hlint
+
+The *note language list: 5. also lists the available options for each
+syntax checker.  Take a look at these to tune the syntax checkers to
+your needs, and read *note how to use these options: 45.
+
+\1f
+File: flycheck.info,  Node: Check syntax in a buffer,  Next: Navigate and list errors,  Prev: Install some syntax checker tools,  Up: Quickstart
+
+4.3 Check syntax in a buffer
+============================
+
+Run ‘M-x flycheck-verify-setup’ in a buffer to check whether Flycheck is
+correctly setup to check the buffer.
+
+If everything is fine Flycheck will now check syntax using these tools,
+when you visit a buffer in any of these languages.  Syntax checking
+happens *automatically* when you save the buffer or make any changes.
+Flycheck highlights errors and warnings in the buffer, indicates them in
+the fringe, and reports their numbers in the mode line.
+
+You can also manually check a buffer with ‘C-c ! c’ (*note
+flycheck-buffer: 47.).
+
+\1f
+File: flycheck.info,  Node: Navigate and list errors,  Next: Explore the menu,  Prev: Check syntax in a buffer,  Up: Quickstart
+
+4.4 Navigate and list errors
+============================
+
+Use ‘C-c ! n’ (*note flycheck-next-error: 49.) and ‘C-c ! p’ (*note
+flycheck-previous-error: 4a.) to navigate between error locations.  If
+you keep the point at an error location, Flycheck will show the error
+message in the echo area after a short delay.  You can also hover error
+locations with the mouse and see the error message in a tooltip.
+
+To get an overview of all errors and warnings in the current buffer,
+type ‘C-c ! l’ (*note flycheck-list-errors: 4b.) to pop up a list of all
+errors in your current buffer.  The error list updates automatically
+when you fix errors or introduce new ones, or when you switch to another
+buffer.
+
+\1f
+File: flycheck.info,  Node: Explore the menu,  Next: Further reading,  Prev: Navigate and list errors,  Up: Quickstart
+
+4.5 Explore the menu
+====================
+
+All Flycheck commands are available in the Emacs menu at _Tools ‣ Syntax
+Checking_.  Explore this menu to see what features Flycheck has to
+offer.
+
+The menu can also be opened by clicking on the mode line lighter of
+Flycheck.
+
+\1f
+File: flycheck.info,  Node: Further reading,  Prev: Explore the menu,  Up: Quickstart
+
+4.6 Further reading
+===================
+
+   - *note Usage: 4e. describes all commands and options in detail.
+
+   - *note Supported languages: 39. has a list of all supported
+     languages, and the corresponding syntax checker tools and their
+     options.
+
+\1f
+File: flycheck.info,  Node: Usage,  Next: Supported languages,  Prev: Quickstart,  Up: Top
+
+5 Usage
+*******
+
+This chapter explains in-depth how to use Flycheck for your daily work.
+
+     Note: All commands in this chapter are documented with their
+     standard key prefix ‘C-c !’.  If you do not like this prefix, you
+     can change it with *note flycheck-keymap-prefix: 50, but take care
+     to remember your custom prefix while reading this chapter.
+
+      -- User Option: flycheck -keymap-prefix
+
+               Variable properties: This variable may be risky if used
+               as a file-local variable.
+
+          Prefix for key bindings of Flycheck.
+
+          Changing this variable outside Customize does not have any
+          effect.  To change the keymap prefix from Lisp, you need to
+          explicitly re-define the prefix key:
+
+              (define-key flycheck-mode-map flycheck-keymap-prefix nil)
+              (setq flycheck-keymap-prefix (kbd "C-c f"))
+              (define-key flycheck-mode-map flycheck-keymap-prefix
+                          flycheck-command-map)
+
+          Please note that Flycheck’s manual documents the default
+          keybindings.  Changing this variable is at your own risk.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.19 of the flycheck package.
+
+* Menu:
+
+* Enabling syntax checking: Enabling syntax checking<2>. 
+* Checking buffers:: 
+* Selecting syntax checkers:: 
+* Configuring syntax checkers:: 
+* Error reporting:: 
+* Listing errors:: 
+* Copying (killing) errors: Copying killing errors. 
+* Navigating and jumping to errors:: 
+* Mode line reporting:: 
+
+\1f
+File: flycheck.info,  Node: Enabling syntax checking<2>,  Next: Checking buffers,  Up: Usage
+
+5.1 Enabling syntax checking
+============================
+
+*note global-flycheck-mode: 15. enables syntax checking in all buffers
+whenever possible:
+
+ -- Command: M -x global-flycheck-mode
+
+     Toggle Flycheck Mode for *all* live buffers, and for new buffers.
+
+     With Global Flycheck Mode, Flycheck Mode is automatically enabled
+     in all buffers, for which a *note suitable syntax checker: 53.
+     exists and is enabled.
+
+          Note: Flycheck Mode will *not* be enabled in buffers for
+          remote or encrypted files.  The former is flaky and might be
+          very slow, and the latter might leak confidential data to
+          temporary directories.
+
+          You can still explicitly enable Flycheck Mode in such buffers
+          with *note flycheck-mode: 54.  This is *not* recommended
+          though.
+
+      -- User Option: global -flycheck-mode
+
+          Whether Flycheck Mode is enabled globally.
+
+To permanently enable syntax checking, either customize *note
+global-flycheck-mode: 55. with ‘M-x customize-variable RET
+global-flycheck-mode’ and select _Save for Future Sessions_, or add the
+following code to your init file:
+
+     (add-hook 'after-init-hook #'global-flycheck-mode)
+
+You can also explicitly enable syntax checking just for the current
+buffer with the local minor mode *note flycheck-mode: 54.:
+
+ -- Command: M -x flycheck-mode
+
+     Toggle Flycheck Mode for the current buffer.
+
+      -- User Option: flycheck -mode
+
+          Whether Flycheck Mode is enabled in the current buffer.
+
+\1f
+File: flycheck.info,  Node: Checking buffers,  Next: Selecting syntax checkers,  Prev: Enabling syntax checking<2>,  Up: Usage
+
+5.2 Checking buffers
+====================
+
+When *note flycheck-mode: 54. is enabled, Flycheck automatically checks
+a buffer whenever
+
+   - the buffer is saved (e.g.  ‘C-x C-s’),
+
+   - new lines are inserted,
+
+   - or a short time (see *note flycheck-idle-change-delay: 58.) after
+     the last change to the buffer.
+
+You can customize this behaviour with the option *note
+flycheck-check-syntax-automatically: 59.:
+
+ -- User Option: flycheck -check-syntax-automatically
+
+          Variable properties: This variable is safe as a file local
+          variable if its value satisfies the predicate ‘symbolp’.
+
+     When Flycheck should check syntax automatically.
+
+     This variable is a list of events that may trigger syntax checks.
+     The following events are known:
+
+     ‘`save'’
+          Check syntax immediately after the buffer was saved.
+
+     ‘`idle-change'’
+          Check syntax a short time (see *note ‘flycheck-idle-change-delay’: 58.)
+          after the last change to the buffer.
+
+     ‘`new-line'’
+          Check syntax immediately after a new line was inserted into
+          the buffer.
+
+     ‘`mode-enabled'’
+          Check syntax immediately when *note ‘flycheck-mode’: 54. is enabled.
+
+     Flycheck performs a syntax checks only on events, which are
+     contained in this list.  For instance, if the value of this
+     variable is ‘(mode-enabled save)’, Flycheck will only check if
+     the mode is enabled or the buffer was saved, but never after
+     changes to the buffer contents.
+
+     If nil, never check syntax automatically.  In this case, use
+     *note ‘flycheck-buffer’: 47. to start a syntax check manually.
+
+     This user option was introduced, or its default value was changed,
+     in version 0.12 of the flycheck package.
+
+ -- User Option: flycheck -idle-change-delay
+
+          Variable properties: This variable is safe as a file local
+          variable if its value satisfies the predicate ‘numberp’.
+
+     How many seconds to wait before checking syntax automatically.
+
+     After the buffer was changed, Flycheck will wait as many seconds
+     as the value of this variable before starting a syntax check.  If
+     the buffer is modified during this time, Flycheck will wait
+     again.
+
+     This variable has no effect, if ‘`idle-change'’ is not contained in
+     *note ‘flycheck-check-syntax-automatically’: 59.
+
+     This user option was introduced, or its default value was changed,
+     in version 0.13 of the flycheck package.
+
+You can also always check the current buffer manually:
+
+ -- Command: C -c ! c
+ -- Command: M -x flycheck-buffer
+
+     Check syntax in the current buffer.
+
+     The syntax checker used for the syntax check is cached in
+     ‘`flycheck-last-checker'’ and re-used for the next check, if
+     possible.
+
+     Note: If syntax checking does not work, check your setup:
+
+      -- Command: C -c ! v
+      -- Command: M -x flycheck-verify-setup
+
+          Check whether Flycheck can be used in this buffer.
+
+          Display a new buffer listing all syntax checkers that could be
+          applicable in the current buffer.  For each syntax checkers,
+          possible problems are shown.
+
+During syntax checks, Flycheck generates some temporary files for syntax
+checker input and output.  Use *note flycheck-temp-prefix: 5b. to change
+the prefix of these temporary files:
+
+ -- User Option: flycheck -temp-prefix
+
+          Variable properties: This variable may be risky if used as a
+          file-local variable.
+
+     Prefix for temporary files created by Flycheck.
+
+     This user option was introduced, or its default value was changed,
+     in version 0.19 of the flycheck package.
+
+\1f
+File: flycheck.info,  Node: Selecting syntax checkers,  Next: Configuring syntax checkers,  Prev: Checking buffers,  Up: Usage
+
+5.3 Selecting syntax checkers
+=============================
+
+Whenever it checks a buffer, Flycheck selects a *note suitable syntax
+checker: 53. from *note flycheck-checkers: 5e.:
+
+ -- User Option: flycheck -checkers
+
+          Variable properties: This variable may be risky if used as a
+          file-local variable.
+
+     Syntax checkers available for automatic selection.
+
+     A list of Flycheck syntax checkers to choose from when syntax
+     checking a buffer.  Flycheck will automatically select a suitable
+     syntax checker from this list, unless *note ‘flycheck-checker’: 23. is set,
+     either directly or with *note ‘flycheck-select-checker’: 24.
+
+     You should not need to change this variable normally.  In order
+     to disable syntax checkers, please use
+     *note ‘flycheck-disabled-checkers’: 5f.  This variable is intended for 3rd
+     party extensions to tell Flycheck about new syntax checkers.
+
+     Syntax checkers in this list must be defined with
+     *note ‘flycheck-define-checker’: 19.
+
+     An item in this list is a *note registered syntax checker: 60.
+
+To disable a *note registered syntax checker: 60, add it to *note
+flycheck-disabled-checkers: 5f.:
+
+ -- User Option: flycheck -disabled-checkers
+
+          Variable properties: Automatically becomes buffer-local when
+          set.  This variable is safe as a file local variable if its
+          value satisfies the predicate *note flycheck-symbol-list-p:
+          61.
+
+     Syntax checkers excluded from automatic selection.
+
+     A list of Flycheck syntax checkers to exclude from automatic
+     selection.  Flycheck will never automatically select a syntax
+     checker in this list, regardless of the value of
+     *note ‘flycheck-checkers’: 5e.
+
+     However, syntax checkers in this list are still available for
+     manual selection with *note ‘flycheck-select-checker’: 24.
+
+     Use this variable to disable syntax checkers, instead of removing
+     the syntax checkers from *note ‘flycheck-checkers’: 5e.  You may also use
+     this option as a file or directory local variable to disable
+     specific checkers in individual files and directories
+     respectively.
+
+     This user option was introduced, or its default value was changed,
+     in version 0.16 of the flycheck package.
+
+A syntax checker in *note flycheck-checkers: 5e. that is *not* in *note
+flycheck-disabled-checkers: 5f. is an *note enabled syntax checker: 62.
+
+Flycheck starts to check the current buffer with the first enabled and
+suitable syntax checker from *note flycheck-checkers: 5e.  See
+‘Languages and syntax checkers’ for a list of all available syntax
+checkers.  If there is no enabled and suitable checker for the current,
+Flycheck does not check this buffer.  It does *not* signal an error.
+Instead a special mode line indicator informs about this state.  See
+*note Mode line reporting: 63. for details.
+
+You can also force Flycheck to use a specific syntax checker for the
+current buffer with *note flycheck-select-checker: 24.:
+
+ -- Command: C -c ! s
+ -- Command: M -x flycheck-select-checker
+
+     Select the syntax checker for the current buffer by setting *note
+     flycheck-checker: 23, and run a syntax check with the new syntax
+     checker.
+
+     Prompt for a syntax checker and set *note flycheck-checker: 23.
+
+     Any *note syntax checker: 64. can be selected with this command,
+     regardless of whether it is enabled.
+
+ -- Command: C -u C-c ! s
+
+ -- Command: C -u M-x flycheck-select-checker
+
+     Deselect the current syntax checker, and run a syntax check with an
+     automatically selected syntax checker.
+
+     Set *note flycheck-checker: 23. to ‘nil’.
+
+ -- Function: flycheck -select-checker checker
+
+     Select CHECKER for the current buffer.
+
+     CHECKER is a syntax checker symbol (see *note ‘flycheck-checkers’: 5e.) or
+     nil.  In the former case, use CHECKER for the current buffer,
+     otherwise deselect the current syntax checker (if any) and use
+     automatic checker selection via *note ‘flycheck-checkers’: 5e.
+
+     If called interactively prompt for CHECKER.  With prefix arg
+     deselect the current syntax checker and enable automatic
+     selection again.
+
+     Set *note ‘flycheck-checker’: 23. to CHECKER and automatically start a new
+     syntax check if the syntax checker changed.
+
+     CHECKER will be used, even if it is not contained in
+     *note ‘flycheck-checkers’: 5e, or if it is disabled via
+     *note ‘flycheck-disabled-checkers’: 5f.
+
+You can change the completion system used by *note
+flycheck-select-checker: 24.:
+
+ -- User Option: flycheck -completion-system
+
+     The completion system to use.
+
+     ‘`ido'’
+          Use IDO.
+
+          IDO is a built-in alternative completion system, without
+          good flex matching and a powerful UI.  You may want to
+          install flx-ido (see URL ‘https://github.com/lewang/flx’(1)) to
+          improve the flex matching in IDO.
+
+     ‘`grizzl'’
+          Use Grizzl.
+
+          Grizzl is an alternative completion system with powerful
+          flex matching, but a very limited UI.  See URL
+          ‘https://github.com/d11wtq/grizzl’(2).
+
+     nil
+          Use the standard unfancy ‘`completing-read'’.
+
+          ‘`completing-read'’ has a very simple and primitive UI, and
+          does not offer flex matching.  This is the default setting,
+          though, to match Emacs’ defaults.  With this system, you may
+          want enable option ‘`icomplete-mode'’ to improve the display
+          of completion candidates at least.
+
+     This user option was introduced, or its default value was changed,
+     in version 0.17 of the flycheck package.
+
+*note flycheck-select-checker: 24. sets the local variable *note
+flycheck-checker: 23. for the current buffer.  You can also set this
+variable explicitly, via *note (emacs)File Variables:: or *note
+(emacs)Directory Variables::, to enforce a specific syntax checker per
+file or per directory:
+
+ -- Variable: flycheck -checker
+
+          Variable properties: Automatically becomes buffer-local when
+          set.  This variable is safe as a file local variable if its
+          value satisfies the predicate *note
+          flycheck-registered-checker-p: 66.
+
+     Syntax checker to use for the current buffer.
+
+     If unset or nil, automatically select a suitable syntax checker
+     from *note ‘flycheck-checkers’: 5e. on every syntax check.
+
+     If set to a syntax checker only use this syntax checker and never
+     select one from *note ‘flycheck-checkers’: 5e. automatically.  The syntax
+     checker is used regardless of whether it is contained in
+     *note ‘flycheck-checkers’: 5e. or *note ‘flycheck-disabled-checkers’: 5f.  If the
+     syntax checker is unusable in the current buffer an error is
+     signaled.
+
+     A syntax checker assigned to this variable must be defined with
+     *note ‘flycheck-define-checker’: 19.
+
+     Use the command *note ‘flycheck-select-checker’: 24. to select a syntax
+     checker for the current buffer, or set this variable as file
+     local variable to always use a specific syntax checker for a
+     file.  See Info Node *note (emacs)Specifying File Variables:: for more
+     information about file variables.
+
+Like everything else in Emacs, a syntax checker has online
+documentation, which you can via with *note flycheck-describe-checker:
+3a.:
+
+ -- Command: C -c ! ?
+ -- Command: M -x flycheck-describe-checker
+
+     Show the documentation of a syntax checker.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/lewang/flx
+
+   (2) https://github.com/d11wtq/grizzl
+
+\1f
+File: flycheck.info,  Node: Configuring syntax checkers,  Next: Error reporting,  Prev: Selecting syntax checkers,  Up: Usage
+
+5.4 Configuring syntax checkers
+===============================
+
+* Menu:
+
+* Syntax checker executables:: 
+* Syntax checker options:: 
+* Syntax checker configuration files:: 
+
+\1f
+File: flycheck.info,  Node: Syntax checker executables,  Next: Syntax checker options,  Up: Configuring syntax checkers
+
+5.4.1 Syntax checker executables
+--------------------------------
+
+For each syntax checker, there is a buffer-local, customizable variable
+‘flycheck-CHECKER-executable’, where CHECKER is the name of the syntax
+checker.
+
+The value of this variable is either nil, or a string.  In the former
+case, Flycheck uses the default executable from the syntax checker
+definition when executing the syntax checker.  In the latter case, it
+uses the value of the variable as executable.
+
+Use these variables to override the executable from the definition per
+buffer.  For instance, you could use a different Emacs version with the
+‘emacs-lisp’ or ‘emacs-lisp-checkdoc’.
+
+You can either set these variables directly in your ‘init.el’, or change
+them interactively:
+
+ -- Command: C -c ! e
+ -- Command: M -x flycheck-set-checker-executable
+
+     Set the executable of a syntax checker in the current buffer.
+
+     Prompt for a syntax checker and an executable file, and set the
+     executable variable of the syntax checker.
+
+ -- Command: C -u C-c ! e
+
+ -- Command: C -u M-x flycheck-set-checker-executable
+
+     Reset the executable of a syntax checker in the current buffer.
+
+     Prompt for a syntax checker and reset its executable to the
+     default.
+
+\1f
+File: flycheck.info,  Node: Syntax checker options,  Next: Syntax checker configuration files,  Prev: Syntax checker executables,  Up: Configuring syntax checkers
+
+5.4.2 Syntax checker options
+----------------------------
+
+Some syntax checkers can be configured via options.  See *note Supported
+languages: 39. for a complete list of options for each syntax checkers.
+
+All options are customizable via ‘M-x customize-group RET
+flycheck-options’, and automatically buffer-local to easily set them in
+hooks.
+
+Options are mainly intended to be used by *note extensions: b, and via
+File or Directory Local variables.  See *note (emacs)File Variables::
+and *note (emacs)Directory Variables:: respectively.
+
+\1f
+File: flycheck.info,  Node: Syntax checker configuration files,  Prev: Syntax checker options,  Up: Configuring syntax checkers
+
+5.4.3 Syntax checker configuration files
+----------------------------------------
+
+Some syntax checkers also read configuration files, denoted by
+associated _configuration file variables_.  See *note Supported
+languages: 39. of these variables.
+
+All options are customizable via ‘M-x customize-group RET
+flycheck-config-files’, and automatically buffer-local to easily set
+them in hooks.  You may also set them via File or Directory Local
+variables.  See *note (emacs)File Variables:: and *note (emacs)Directory
+Variables:: respectively.
+
+When set to a string, Flycheck tries to locate the configuration file
+using the functions in *note flycheck-locate-config-file-functions: 6d.
+and passes the name of the file to the syntax checker:
+
+ -- User Option: flycheck -locate-config-file-functions
+
+          Variable properties: This variable may be risky if used as a
+          file-local variable.
+
+     Functions to locate syntax checker configuration files.
+
+     Each function in this hook must accept two arguments: The value
+     of the configuration file variable, and the syntax checker
+     symbol.  It must return either a string with an absolute path to
+     the configuration file, or nil, if it cannot locate the
+     configuration file.
+
+     The functions in this hook are called in order of appearance, until a
+     function returns non-nil.  The configuration file returned by that
+     function is then given to the syntax checker if it exists.
+
+     This variable is an abnormal hook.  See Info
+     node *note (elisp)Hooks::.
+
+With the default value of this variable, configuration files are located
+by the following algorithm:
+
+  1. If the configuration file variable contains a path a directory
+     separator, expand the path against the buffer’s default directory
+     and use the resulting path as configuration file.
+
+  2. If the buffer has a file name, search the buffer’s directory and
+     any ancestors thereof for the configuration file.
+
+  3. Eventually attempt to locate the configuration file in the user’s
+     home directory.
+
+If any of these steps succeeds, the subsequent steps are not executed.
+
+\1f
+File: flycheck.info,  Node: Error reporting,  Next: Listing errors,  Prev: Configuring syntax checkers,  Up: Usage
+
+5.5 Error reporting
+===================
+
+When a syntax check in the current buffer has finished, Flycheck
+highlights the locations of errors and warnings in the buffer according
+to *note flycheck-highlighting-mode: 6f, and indicates these locations
+in the fringe according to *note flycheck-indication-mode: 70.
+Additionally it shows the number of errors and warnings in the mode
+line.
+
+     Note: To avoid flooding the buffer with excessive errors, Flycheck
+     discards errors and warnings and *disables* the corresponding
+     syntax checker subsequently, if the total number of reported errors
+     of any level exceeds *note flycheck-checker-error-threshold: 71.:
+
+      -- User Option: flycheck -checker-error-threshold
+
+               Variable properties: This variable may be risky if used
+               as a file-local variable.
+
+          Maximum errors allowed per syntax checker.
+
+          The value of this variable is either an integer denoting the
+          maximum number of errors per syntax checker and buffer, or nil to
+          not limit the errors reported from a syntax checker.
+
+          If this variable is a number and a syntax checker reports more
+          errors than the value of this variable, its errors are not
+          discarded, and not highlighted in the buffer or available in the
+          error list.  The affected syntax checker is also disabled for
+          future syntax checks of the buffer.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.22 of the flycheck package.
+
+ -- User Option: flycheck -highlighting-mode
+
+          Variable properties: This variable is safe as a file local
+          variable if its value satisfies the predicate ‘symbolp’.
+
+     The highlighting mode for Flycheck errors and warnings.
+
+     The highlighting mode controls how Flycheck highlights errors in
+     buffers.  The following modes are known:
+
+     ‘`columns'’
+          Highlight the error column.  If the error does not have a column,
+          highlight the whole line.
+
+     ‘`symbols'’
+          Highlight the symbol at the error column, if there is any,
+          otherwise behave like ‘`columns'’.  This is the default.
+
+     ‘`sexps'’
+          Highlight the expression at the error column, if there is
+          any, otherwise behave like ‘`columns'’.  Note that this mode
+          can be *very* slow in some major modes.
+
+     ‘`lines'’
+          Highlight the whole line.
+
+     nil
+          Do not highlight errors at all.  However, errors will still
+          be reported in the mode line and in error message popups,
+          and indicated according to *note ‘flycheck-indication-mode’: 70.
+
+     This user option was introduced, or its default value was changed,
+     in version 0.14 of the flycheck package.
+
+ -- Face: flycheck -error
+ -- Face: flycheck -warning
+ -- Face: flycheck -info
+
+     The faces to use to highlight errors, warnings and info messages
+     respectively.
+
+          Note: The default faces provided by GNU Emacs are ill-suited
+          to highlight errors because these are relatively pale and do
+          not specify a background color or underline.  Hence highlights
+          are easy to overlook and even *invisible* for white space.
+
+     For best error highlighting customize these faces, or choose a
+     color theme that has reasonable Flycheck faces.  The popular
+     Solarized(1) and Zenburn(2) themes are known to have good Flycheck
+     faces.
+
+ -- User Option: flycheck -indication-mode
+
+          Variable properties: This variable is safe as a file local
+          variable if its value satisfies the predicate ‘symbolp’.
+
+     The indication mode for Flycheck errors and warnings.
+
+     This variable controls how Flycheck indicates errors in buffers.
+     May either be ‘`left-fringe'’, ‘`right-fringe'’, or nil.
+
+     If set to ‘`left-fringe'’ or ‘`right-fringe'’, indicate errors and
+     warnings via icons in the left and right fringe respectively.
+
+     If set to nil, do not indicate errors and warnings, but just
+     highlight them according to *note ‘flycheck-highlighting-mode’: 6f.
+
+ -- Face: flycheck -fringe-error
+ -- Face: flycheck -fringe-warning
+ -- Face: flycheck -fringe-info
+
+     The faces of fringe indicators for errors, warnings and info
+     messages respectively.
+
+If you hover a highlighted error with the mouse, a tooltip with the
+top-most error message is shown.  Alternatively, you can move the point
+onto an error location to see the error message.  Flycheck displays
+errors at point after a short delay:
+
+ -- User Option: flycheck -display-errors-delay
+
+          Variable properties: This variable is safe as a file local
+          variable if its value satisfies the predicate ‘numberp’.
+
+     Delay in seconds before displaying errors at point.
+
+     Use floating point numbers to express fractions of seconds.
+
+     This user option was introduced, or its default value was changed,
+     in version 0.15 of the flycheck package.
+
+By default, Flycheck shows the messages and IDs of the errors at point
+in the minibuffer, but this behaviour is entirely customizable via the
+*note flycheck-display-errors-function: 2b. option:
+
+ -- User Option: flycheck -display-errors-function
+
+          Variable properties: This variable may be risky if used as a
+          file-local variable.
+
+     Function to display error messages.
+
+     If set to a function, call the function with the list of errors
+     to display as single argument.  Each error is an instance of the
+     ‘`flycheck-error'’ struct.
+
+     If set to nil, do not display errors at all.
+
+     Flycheck provides two built-in functions for this option:
+
+      -- Function: flycheck -display-error-messages errors
+
+          Display the messages of ERRORS.
+
+          Concatenate all non-nil messages of ERRORS separated by empty
+          lines, and display them with ‘`display-message-or-buffer'’, which
+          shows the messages either in the echo area or in a separate
+          buffer, depending on the number of lines.  See Info
+          node *note (elisp)Displaying Messages:: for more information.
+
+          In the latter case, show messages in
+          ‘`flycheck-error-message-buffer'’.
+
+      -- Function: flycheck -display-error-messages-unless-error-list
+               errors
+
+          Show messages of ERRORS unless the error list is visible.
+
+          Like *note ‘flycheck-display-error-messages’: 79, but only if the error
+          list (see *note ‘flycheck-list-errors’: 4b.) is not visible in any window in
+          the current frame.
+
+          See also
+..................
+
+          *note Listing errors: 7b.
+
+     See also
+.............
+
+     The flycheck-pos-tip(3) extension provides a display function to
+     show errors at point in a graphical popup.
+
+     This user option was introduced, or its default value was changed,
+     in version 0.13 of the flycheck package.
+
+You can clear all errors in the current buffer with *note
+flycheck-clear: 7c.:
+
+ -- Command: C -c ! C
+ -- Command: M -x flycheck-clear
+
+     Clear all Flycheck errors and warnings in the current buffer.
+
+     You should not normally need this command, because Flycheck checks
+     the buffer periodically anyway.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/bbatsov/solarized-emacs
+
+   (2) https://github.com/bbatsov/zenburn-emacs
+
+   (3) https://github.com/flycheck/flycheck-pos-tip
+
+\1f
+File: flycheck.info,  Node: Listing errors,  Next: Copying killing errors,  Prev: Error reporting,  Up: Usage
+
+5.6 Listing errors
+==================
+
+To view all errors in the current buffer, pop up the error list with
+*note flycheck-list-errors: 4b.:
+
+ -- Command: C -c ! l
+ -- Command: M -x flycheck-list-errors
+
+     List all errors in the current buffer in a separate buffer.
+
+     The error list automatically refreshes after a syntax check, and
+     follows the current buffer and window, that is, if you switch to
+     another buffer or window, the error list is updated to show the
+     errors of the new buffer or window.
+
+Every time the error list refreshes, *note
+flycheck-error-list-after-refresh-hook: 7e. is run:
+
+ -- Hook: flycheck -error-list-after-refresh-hook
+
+          Variable properties: This variable may be risky if used as a
+          file-local variable.
+
+     Functions to run after the error list was refreshed.
+
+     This hook is run whenever the error list is refreshed.
+
+     This variable is a normal hook.  See Info node *note (elisp)Hooks::.
+
+     This hook was introduced, or its default value was changed, in
+     version 0.21 of the flycheck package.
+
+When you move the point in the current buffer while the error list is
+visible, all errors on the current line are highlighted in the error
+list with *note flycheck-error-list-highlight: 7f.:
+
+ -- Face: flycheck -error-list-highlight
+
+     Flycheck face to highlight errors in the error list.
+
+     This face was introduced, or its default value was changed, in
+     version 0.15 of the flycheck package.
+
+You can customize the appearance of the line and column numbers and of
+the syntax checker name:
+
+ -- Face: flycheck -error-list-line-number
+
+     Face for line numbers in the error list.
+
+     This face was introduced, or its default value was changed, in
+     version 0.16 of the flycheck package.
+
+ -- Face: flycheck -error-list-column-number
+
+     Face for line numbers in the error list.
+
+     This face was introduced, or its default value was changed, in
+     version 0.16 of the flycheck package.
+
+ -- Face: flycheck -error-list-checker-name
+
+     Face for the syntax checker name in the error list.
+
+     This face was introduced, or its default value was changed, in
+     version 0.21 of the flycheck package.
+
+\1f
+File: flycheck.info,  Node: Copying killing errors,  Next: Navigating and jumping to errors,  Prev: Listing errors,  Up: Usage
+
+5.7 Copying (killing) errors
+============================
+
+Frequently, it’s convenient to not only see the error messages, but to
+also copy them into the kill ring:
+
+ -- Command: C -c ! C-w
+ -- Command: M -x flycheck-copy-errors-as-kill
+
+     Copy all Flycheck error messages at the current point into kill
+     ring.
+
+     Each error message is killed separately, so you can use ‘M-y’ to
+     cycle among the killed messages after yanking the first one with
+     ‘C-y’.
+
+ -- Command: C -u C-c ! C-w
+
+ -- Command: C -u M-x flycheck-copy-errors-as-kill
+
+     Copy all Flycheck error messages *and their IDs* at the current
+     point into kill ring.
+
+ -- Command: M -0 C-c ! C-w
+
+ -- Command: M -0 M-x flycheck-copy-errors-as-kill
+
+     Copy all Flycheck error *IDs* at the current point into kill ring.
+     This command is particularly handy to copy an ID in order to add an
+     inline suppression comment.
+
+\1f
+File: flycheck.info,  Node: Navigating and jumping to errors,  Next: Mode line reporting,  Prev: Copying killing errors,  Up: Usage
+
+5.8 Navigating and jumping to errors
+====================================
+
+By default, Flycheck integrates into standard error navigation commands
+of Emacs: ‘M-g n’ (‘next-error’) and ‘M-g p’ (‘previous-error’) will
+navigate between Flycheck warnings and errors in the current buffer.
+See *note (emacs)Compilation Mode:: for more information about these
+commands.
+
+     Note: *Visible* compilation buffers (e.g.  from ‘M-x compile’, ‘M-x
+     grep’, ‘M-x occur’, etc.)  take precedence over Flycheck’s error
+     navigation.
+
+If you find this integration annoying and would rather keep ‘M-g n’
+confined to compilation buffers, you may disable it by setting *note
+flycheck-standard-error-navigation: 88. to nil and re-enabling *note
+flycheck-mode: 54. afterwards:
+
+ -- User Option: flycheck -standard-error-navigation
+
+          Variable properties: This variable is safe as a file local
+          variable if its value satisfies the predicate ‘booleanp’.
+
+     Whether to support error navigation with ‘`next-error'’.
+
+     If non-nil, enable navigation of Flycheck errors with
+     ‘`next-error'’, ‘`previous-error'’ and ‘`first-error'’.  Otherwise,
+     these functions just navigate errors from compilation modes.
+
+     Flycheck error navigation with *note ‘flycheck-next-error’: 49,
+     *note ‘flycheck-previous-error’: 4a. and *note ‘flycheck-first-error’: 89. is always
+     enabled, regardless of the value of this variable.
+
+     Note that this setting only takes effect when *note ‘flycheck-mode’: 54. is
+     enabled.  Changing it will not affect buffers which already have
+     *note ‘flycheck-mode’: 54. enabled.
+
+     This user option was introduced, or its default value was changed,
+     in version 0.15 of the flycheck package.
+
+Since compilation buffers take precedence, Flycheck provides an
+independent set of navigation commands which always navigate Flycheck
+errors regardless of compilation buffers or *note
+flycheck-standard-error-navigation: 88.:
+
+ -- Command: C -c ! n
+ -- Command: M -x flycheck-next-error
+
+     Jump to the next Flycheck error.
+
+     With prefix argument, jump forwards by as many errors as specified
+     by the prefix argument, e.g.  ‘M-3 C-c ! n’ will move to the 3rd
+     error from the current point.
+
+ -- Command: C -c ! p
+ -- Command: M -x flycheck-previous-error
+
+     Jump to the previous Flycheck error.
+
+     With prefix argument, jump backwards by as many errors as specified
+     by the prefix argument, e.g.  ‘M-3 C-c ! p’ will move to the 3rd
+     previous error from the current point.
+
+ -- Command: M -x flycheck-first-error
+
+     Jump to the first Flycheck error.
+
+     With prefix argument, jump forwards to by as many errors as
+     specified by the prefix argument, e.g.  ‘M-3 M-x
+     flycheck-first-error’ moves to the 3rd error from the beginning of
+     the buffer.
+
+If *note flycheck-standard-error-navigation: 88. is ‘nil’, these
+commands are the only way to navigate Flycheck errors.
+
+By default, Flycheck’s error navigation considers all error levels.  You
+can specify a threshold for navigation with *note
+flycheck-navigation-minimum-level: 8a.:
+
+ -- User Option: flycheck -navigation-minimum-level
+
+          Variable properties: This variable is safe as a file local
+          variable if its value satisfies the predicate *note
+          flycheck-error-level-p: 8b.
+
+     The minimum level of errors to navigate.
+
+     If set to an error level, only navigate errors whose error level
+     is at least as severe as this one.  If nil, navigate all errors.
+
+     This user option was introduced, or its default value was changed,
+     in version 0.21 of the flycheck package.
+
+\1f
+File: flycheck.info,  Node: Mode line reporting,  Prev: Navigating and jumping to errors,  Up: Usage
+
+5.9 Mode line reporting
+=======================
+
+Flycheck always indicates its state in the mode line:
+
+‘FlyC’
+
+     There are no errors in the current buffer.
+
+‘FlyC*’
+
+     A syntax check is being performed currently.
+
+‘FlyC:3/4’
+
+     There are three errors and four warnings in the current buffer.
+
+‘FlyC-’
+
+     Automatic syntax checker selection did not find a suitable syntax
+     checker.  See *note Selecting syntax checkers: 5d. for more
+     information.
+
+‘FlyC!’
+
+     The syntax check failed.  Inspect the ‘*Messages*’ buffer for
+     details.
+
+‘FlyC?’
+
+     The syntax check had a dubious result.  The definition of the
+     syntax checker may be flawed.  Inspect the ‘*Messages*’ buffer for
+     details.
+
+     This indicator should *never* be displayed for built-in syntax
+     checkers.  If it is, please report an issue to the Flycheck
+     developers, as by *note Reporting issues: 8d.
+
+Change *note flycheck-mode-line: 8e. to customize the mode line
+reporting:
+
+ -- User Option: flycheck -mode-line
+
+          Variable properties: This variable may be risky if used as a
+          file-local variable.
+
+     Mode line lighter for Flycheck.
+
+     The value of this variable is a mode line template as in
+     ‘`mode-line-format'’.  See Info Node *note (elisp)Mode Line Format:: for
+     more information.  Note that it should contain a _single_ mode
+     line construct only.
+
+     Customize this variable to change how Flycheck reports its status
+     in the mode line.  You may use *note ‘flycheck-mode-line-status-text’: 8f.
+     to obtain a human-readable status text, including an
+     error/warning count.
+
+     You may also assemble your own status text.  The current status
+     of Flycheck is available in *note ‘flycheck-last-status-change’: 90.  The
+     errors in the current buffer are stored in
+     *note ‘flycheck-current-errors’: 91, and the function
+     *note ‘flycheck-count-errors’: 92. may be used to obtain the number of
+     errors grouped by error level.
+
+     Set this variable to nil to disable the mode line completely.
+
+     This user option was introduced, or its default value was changed,
+     in version 0.20 of the flycheck package.
+
+See also
+........
+
+The flycheck-color-mode-line(1) extension changes the background colour
+of the mode line according to the result of the last syntax check.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck-color-mode-line
+
+\1f
+File: flycheck.info,  Node: Supported languages,  Next: Glossary,  Prev: Usage,  Up: Top
+
+6 Supported languages
+*********************
+
+Flycheck supports the following 44 languages with 74 syntax checkers.
+
+Each language has one or more syntax checkers, whose names follow a
+‘LANGUAGE-TOOL’ convention, where LANGUAGE is the programming language
+supported by this syntax checker, and TOOL the specific syntax checker
+tool.
+
+There are some 3rd party extensions which add support for more
+languages:
+
+   - flycheck-ledger(1) adds a syntax checker for the Ledger(2)
+     accounting tool.
+
+   - flycheck-mercury(3) adds a syntax checker for the Mercury(4)
+     language.
+
+   - flycheck-ocaml(5) adds a syntax checker for OCaml, using the
+     Merlin(6) tool.
+
+* Menu:
+
+* Ada:: 
+* AsciiDoc:: 
+* C/C++:: 
+* CFEngine:: 
+* Chef:: 
+* Coffeescript:: 
+* Coq:: 
+* CSS:: 
+* D:: 
+* Elixir:: 
+* Emacs Lisp:: 
+* Erlang:: 
+* ERuby:: 
+* Fortran:: 
+* Go:: 
+* Haml:: 
+* Handlebars:: 
+* Haskell:: 
+* HTML:: 
+* Javascript:: 
+* JSON:: 
+* LESS:: 
+* Lua:: 
+* Make:: 
+* Perl:: 
+* PHP:: 
+* Puppet:: 
+* Python:: 
+* R:: 
+* Racket:: 
+* RPM SPEC:: 
+* ReStructuredText:: 
+* Ruby:: 
+* Rust:: 
+* Sass:: 
+* Scala:: 
+* Scss:: 
+* Shell script languages:: 
+* Slim:: 
+* TeX/LaTeX:: 
+* Texinfo:: 
+* Verilog:: 
+* XML:: 
+* YAML:: 
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/purcell/flycheck-ledger
+
+   (2) http://ledger-cli.org/
+
+   (3) https://github.com/flycheck/flycheck-mercury
+
+   (4) http://mercurylang.org/
+
+   (5) https://github.com/flycheck/flycheck-ocaml
+
+   (6) https://github.com/the-lambda-church/merlin
+
+\1f
+File: flycheck.info,  Node: Ada,  Next: AsciiDoc,  Up: Supported languages
+
+6.1 Ada
+=======
+
+ -- Flycheck Syntax Checker: ada -gnat
+
+     An Ada syntax checker using GNAT.
+
+     Uses the GNAT compiler from GCC.  See URL
+     ‘https://gcc.gnu.org/onlinedocs/gnat_ugn_unw/’(1).
+
+     Options
+............
+
+      -- User Option: flycheck -gnat-args
+
+          A list of additional arguments for Symbol(’ada-gnat’).
+
+          The value of this variable is a list of strings with additional
+          command line arguments.
+
+          This variable is an option for the syntax checker ‘`ada-gnat'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.20 of the flycheck package.
+
+      -- User Option: flycheck -gnat-include-path
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate *note
+               flycheck-string-list-p: 99.
+
+          A list of include directories for GNAT.
+
+          The value of this variable is a list of strings, where each
+          string is a directory to add to the include path of gcc.
+          Relative paths are relative to the file being checked.
+
+          This variable is an option for the syntax checker ‘`ada-gnat'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.20 of the flycheck package.
+
+      -- User Option: flycheck -gnat-language-standard
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘stringp’.
+
+          The language standard to use in GNAT.
+
+          The value of this variable is either a string denoting a language
+          standard, or nil, to use the default standard. When non-nil, pass
+          the language standard via the ‘`-std'’ option.
+
+          This variable is an option for the syntax checker ‘`ada-gnat'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.20 of the flycheck package.
+
+      -- User Option: flycheck -gnat-warnings
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate *note
+               flycheck-string-list-p: 99.
+
+          A list of additional Ada warnings to enable in GNAT.
+
+          The value of this variable is a list of strings, where each
+          string is the name of a warning category to enable. By default,
+          most optional warnings are recommended, as in ‘`-gnata'’.
+
+          Refer to Info Node *note (gnat_ugn_unw)Warning Message Control:: for
+          more information about GNAT warnings.
+
+          This variable is an option for the syntax checker ‘`ada-gnat'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.20 of the flycheck package.
+
+   ---------- Footnotes ----------
+
+   (1) https://gcc.gnu.org/onlinedocs/gnat_ugn_unw/
+
+\1f
+File: flycheck.info,  Node: AsciiDoc,  Next: C/C++,  Prev: Ada,  Up: Supported languages
+
+6.2 AsciiDoc
+============
+
+ -- Flycheck Syntax Checker: asciidoc
+
+     A AsciiDoc syntax checker using the AsciiDoc compiler.
+
+     See URL ‘http://www.methods.co.nz/asciidoc’(1).
+
+   ---------- Footnotes ----------
+
+   (1) http://www.methods.co.nz/asciidoc
+
+\1f
+File: flycheck.info,  Node: C/C++,  Next: CFEngine,  Prev: AsciiDoc,  Up: Supported languages
+
+6.3 C/C++
+=========
+
+ -- Flycheck Syntax Checker: c/c++ -clang
+
+          Chained syntax checkers: The following syntax checkers are
+          *note chained: a0. after this syntax checker:
+
+            1. *note c/c++-cppcheck: a1, if there are no errors above
+               level ‘warning’
+
+          The *first* suitable syntax checker is used.
+
+     A C/C++ syntax checker using Clang.
+
+     See URL ‘http://clang.llvm.org/’(1).
+
+     Options
+............
+
+      -- User Option: flycheck -clang-args
+
+          A list of additional arguments for Symbol(’c/c++-clang’).
+
+          The value of this variable is a list of strings with additional
+          command line arguments.
+
+          This variable is an option for the syntax checker ‘`c/c++-clang'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.22 of the flycheck package.
+
+      -- User Option: flycheck -clang-blocks
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘booleanp’.
+
+          Enable blocks in Clang.
+
+          When non-nil, enable blocks in Clang with ‘`-fblocks'’.  See URL
+          ‘http://clang.llvm.org/docs/BlockLanguageSpec.html’(2) for more
+          information about blocks.
+
+          This variable is an option for the syntax checker ‘`c/c++-clang'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.20 of the flycheck package.
+
+      -- User Option: flycheck -clang-definitions
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate *note
+               flycheck-string-list-p: 99.
+
+          Additional preprocessor definitions for Clang.
+
+          The value of this variable is a list of strings, where each
+          string is an additional definition to pass to Clang, via the ‘`-D'’
+          option.
+
+          This variable is an option for the syntax checker ‘`c/c++-clang'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.15 of the flycheck package.
+
+      -- User Option: flycheck -clang-include-path
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate *note
+               flycheck-string-list-p: 99.
+
+          A list of include directories for Clang.
+
+          The value of this variable is a list of strings, where each
+          string is a directory to add to the include path of Clang.
+          Relative paths are relative to the file being checked.
+
+          This variable is an option for the syntax checker ‘`c/c++-clang'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.14 of the flycheck package.
+
+      -- User Option: flycheck -clang-includes
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate *note
+               flycheck-string-list-p: 99.
+
+          A list of additional include files for Clang.
+
+          The value of this variable is a list of strings, where each
+          string is a file to include before syntax checking.  Relative
+          paths are relative to the file being checked.
+
+          This variable is an option for the syntax checker ‘`c/c++-clang'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.15 of the flycheck package.
+
+      -- User Option: flycheck -clang-language-standard
+
+               Variable properties: Automatically becomes buffer-local
+               when set.  This variable is safe as a file local variable
+               if its value satisfies the predicate ‘stringp’.
+
+          The language standard to use in Clang.
+
+          The value of this variable is either a string denoting a language
+          standard, or nil, to use the default standard.  When non-nil,
+          pass the language standard via the ‘`-std'’ option.
+
+          This variable is an option for the syntax checker ‘`c/c++-clang'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.15 of the flycheck package.
+
+      -- User Option: flycheck -clang-ms-extensions
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘booleanp’.
+
+          Whether to enable Microsoft extensions to C/C++ in Clang.
+
+          When non-nil, enable Microsoft extensions to C/C++ via
+          ‘`-fms-extensions'’.
+
+          This variable is an option for the syntax checker ‘`c/c++-clang'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.16 of the flycheck package.
+
+      -- User Option: flycheck -clang-no-exceptions
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘booleanp’.
+
+          Whether to disable exceptions in Clang.
+
+          When non-nil, disable exceptions for syntax checks, via
+          ‘`-fno-exceptions'’.
+
+          This variable is an option for the syntax checker ‘`c/c++-clang'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.20 of the flycheck package.
+
+      -- User Option: flycheck -clang-no-rtti
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘booleanp’.
+
+          Whether to disable RTTI in Clang.
+
+          When non-nil, disable RTTI for syntax checks, via ‘`-fno-rtti'’.
+
+          This variable is an option for the syntax checker ‘`c/c++-clang'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.15 of the flycheck package.
+
+      -- User Option: flycheck -clang-standard-library
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘stringp’.
+
+          The standard library to use for Clang.
+
+          The value of this variable is the name of a standard library as
+          string, or nil to use the default standard library.
+
+          Refer to the Clang manual at URL
+          ‘http://clang.llvm.org/docs/UsersManual.html’(3) for more
+          information about the standard library.
+
+          This variable is an option for the syntax checker ‘`c/c++-clang'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.15 of the flycheck package.
+
+      -- User Option: flycheck -clang-warnings
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate *note
+               flycheck-string-list-p: 99.
+
+          A list of additional warnings to enable in Clang.
+
+          The value of this variable is a list of strings, where each string
+          is the name of a warning category to enable.  By default, all
+          recommended warnings and some extra warnings are enabled (as by
+          ‘`-Wall'’ and ‘`-Wextra'’ respectively).
+
+          Refer to the Clang manual at URL
+          ‘http://clang.llvm.org/docs/UsersManual.html’(4) for more
+          information about warnings.
+
+          This variable is an option for the syntax checker ‘`c/c++-clang'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.14 of the flycheck package.
+
+ -- Flycheck Syntax Checker: c/c++ -gcc
+
+          Chained syntax checkers: The following syntax checkers are
+          *note chained: a0. after this syntax checker:
+
+            1. *note c/c++-cppcheck: a1, if there are no errors above
+               level ‘warning’
+
+          The *first* suitable syntax checker is used.
+
+     A C/C++ syntax checker using GCC.
+
+     Requires GCC 4.8 or newer.  See URL ‘https://gcc.gnu.org/’(5).
+
+     Options
+............
+
+      -- User Option: flycheck -gcc-args
+
+          A list of additional arguments for Symbol(’c/c++-gcc’).
+
+          The value of this variable is a list of strings with additional
+          command line arguments.
+
+          This variable is an option for the syntax checker ‘`c/c++-gcc'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.22 of the flycheck package.
+
+      -- User Option: flycheck -gcc-definitions
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate *note
+               flycheck-string-list-p: 99.
+
+          Additional preprocessor definitions for GCC.
+
+          The value of this variable is a list of strings, where each
+          string is an additional definition to pass to GCC, via the ‘`-D'’
+          option.
+
+          This variable is an option for the syntax checker ‘`c/c++-gcc'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.20 of the flycheck package.
+
+      -- User Option: flycheck -gcc-include-path
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate *note
+               flycheck-string-list-p: 99.
+
+          A list of include directories for GCC.
+
+          The value of this variable is a list of strings, where each
+          string is a directory to add to the include path of gcc.
+          Relative paths are relative to the file being checked.
+
+          This variable is an option for the syntax checker ‘`c/c++-gcc'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.20 of the flycheck package.
+
+      -- User Option: flycheck -gcc-includes
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate *note
+               flycheck-string-list-p: 99.
+
+          A list of additional include files for GCC.
+
+          The value of this variable is a list of strings, where each
+          string is a file to include before syntax checking.  Relative
+          paths are relative to the file being checked.
+
+          This variable is an option for the syntax checker ‘`c/c++-gcc'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.20 of the flycheck package.
+
+      -- User Option: flycheck -gcc-language-standard
+
+               Variable properties: Automatically becomes buffer-local
+               when set.  This variable is safe as a file local variable
+               if its value satisfies the predicate ‘stringp’.
+
+          The language standard to use in GCC.
+
+          The value of this variable is either a string denoting a language
+          standard, or nil, to use the default standard.  When non-nil,
+          pass the language standard via the ‘`-std'’ option.
+
+          This variable is an option for the syntax checker ‘`c/c++-gcc'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.20 of the flycheck package.
+
+      -- User Option: flycheck -gcc-no-exceptions
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘booleanp’.
+
+          Whether to disable exceptions in GCC.
+
+          When non-nil, disable exceptions for syntax checks, via
+          ‘`-fno-exceptions'’.
+
+          This variable is an option for the syntax checker ‘`c/c++-gcc'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.20 of the flycheck package.
+
+      -- User Option: flycheck -gcc-no-rtti
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘booleanp’.
+
+          Whether to disable RTTI in GCC.
+
+          When non-nil, disable RTTI for syntax checks, via ‘`-fno-rtti'’.
+
+          This variable is an option for the syntax checker ‘`c/c++-gcc'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.20 of the flycheck package.
+
+      -- User Option: flycheck -gcc-openmp
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘booleanp’.
+
+          Whether to enable OpenMP in GCC.
+
+          When non-nil, enable OpenMP for syntax checkers, via
+          ‘`-fopenmp'’.
+
+          This variable is an option for the syntax checker ‘`c/c++-gcc'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.21 of the flycheck package.
+
+      -- User Option: flycheck -gcc-warnings
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate *note
+               flycheck-string-list-p: 99.
+
+          A list of additional warnings to enable in GCC.
+
+          The value of this variable is a list of strings, where each string
+          is the name of a warning category to enable.  By default, all
+          recommended warnings and some extra warnings are enabled (as by
+          ‘`-Wall'’ and ‘`-Wextra'’ respectively).
+
+          Refer to the gcc manual at URL
+          ‘https://gcc.gnu.org/onlinedocs/gcc/’(6) for more information about
+          warnings.
+
+          This variable is an option for the syntax checker ‘`c/c++-gcc'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.20 of the flycheck package.
+
+ -- Flycheck Syntax Checker: c/c++ -cppcheck
+
+     A C/C++ checker using cppcheck.
+
+     See URL ‘http://cppcheck.sourceforge.net/’(7).
+
+     Options
+............
+
+      -- User Option: flycheck -cppcheck-checks
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate *note
+               flycheck-string-list-p: 99.
+
+          Enabled checks for Cppcheck.
+
+          The value of this variable is a list of strings, where each
+          string is the name of an additional check to enable.  By default,
+          all coding style checks are enabled.
+
+          See section "Enable message" in the Cppcheck manual at URL
+          ‘http://cppcheck.sourceforge.net/manual.pdf’(8), and the
+          documentation of the ‘`--enable'’ option for more information,
+          including a list of supported checks.
+
+          This variable is an option for the syntax checker ‘`c/c++-cppcheck'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.14 of the flycheck package.
+
+      -- User Option: flycheck -cppcheck-inconclusive
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘booleanp’.
+
+          Whether to enable Cppcheck inconclusive checks.
+
+          When non-nil, enable Cppcheck inconclusive checks.  This allows Cppcheck to
+          report warnings it’s not certain of, but it may result in false positives.
+
+          This will have no effect when using Cppcheck 1.53 and older.
+
+          This variable is an option for the syntax checker ‘`c/c++-cppcheck'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.19 of the flycheck package.
+
+See also
+........
+
+flycheck-irony(9) adds an alternative syntax checker for C, C++ and
+Objective C which uses Irony Mode(10) server to check buffers.
+
+The flycheck-google-cpplint(11) extension adds a syntax checker using
+Google’s C++ style checker.
+
+   ---------- Footnotes ----------
+
+   (1) http://clang.llvm.org/
+
+   (2) http://clang.llvm.org/docs/BlockLanguageSpec.html
+
+   (3) http://clang.llvm.org/docs/UsersManual.html
+
+   (4) http://clang.llvm.org/docs/UsersManual.html
+
+   (5) https://gcc.gnu.org/
+
+   (6) https://gcc.gnu.org/onlinedocs/gcc/
+
+   (7) http://cppcheck.sourceforge.net/
+
+   (8) http://cppcheck.sourceforge.net/manual.pdf
+
+   (9) https://github.com/Sarcasm/flycheck-irony
+
+   (10) https://github.com/Sarcasm/irony-mode
+
+   (11) https://github.com/flycheck/flycheck-google-cpplint
+
+\1f
+File: flycheck.info,  Node: CFEngine,  Next: Chef,  Prev: C/C++,  Up: Supported languages
+
+6.4 CFEngine
+============
+
+ -- Flycheck Syntax Checker: cfengine
+
+     A CFEngine syntax checker using cf-promises.
+
+     See URL ‘http://cfengine.com/’(1).
+
+   ---------- Footnotes ----------
+
+   (1) http://cfengine.com/
+
+\1f
+File: flycheck.info,  Node: Chef,  Next: Coffeescript,  Prev: CFEngine,  Up: Supported languages
+
+6.5 Chef
+========
+
+See also
+........
+
+Chef(1)
+
+ -- Flycheck Syntax Checker: chef -foodcritic
+
+     A Chef cookbooks syntax checker using Foodcritic.
+
+     See URL ‘http://acrmp.github.io/foodcritic/’(2).
+
+   ---------- Footnotes ----------
+
+   (1) https://www.getchef.com/chef/
+
+   (2) http://acrmp.github.io/foodcritic/
+
+\1f
+File: flycheck.info,  Node: Coffeescript,  Next: Coq,  Prev: Chef,  Up: Supported languages
+
+6.6 Coffeescript
+================
+
+ -- Flycheck Syntax Checker: coffee
+
+          Chained syntax checkers: The following syntax checkers are
+          *note chained: a0. after this syntax checker:
+
+            1. *note coffee-coffeelint: c0, if there are no errors above
+               level ‘warning’
+
+          The *first* suitable syntax checker is used.
+
+     A CoffeeScript syntax checker using coffee.
+
+     See URL ‘http://coffeescript.org/’(1).
+
+ -- Flycheck Syntax Checker: coffee -coffeelint
+
+     A CoffeeScript style checker using coffeelint.
+
+     This syntax checker requires coffeelint 1.0 or newer.
+
+     See URL ‘http://www.coffeelint.org/’(2).
+
+     Configuration file
+.......................
+
+      -- User Option: flycheck -coffeelintrc
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘stringp’.
+
+          Configuration file for ‘`coffee-coffeelint'’.
+
+   ---------- Footnotes ----------
+
+   (1) http://coffeescript.org/
+
+   (2) http://www.coffeelint.org/
+
+\1f
+File: flycheck.info,  Node: Coq,  Next: CSS,  Prev: Coffeescript,  Up: Supported languages
+
+6.7 Coq
+=======
+
+ -- Flycheck Syntax Checker: coq
+
+     A Coq syntax checker using the Coq compiler.
+
+     See URL ‘http://coq.inria.fr/’(1).
+
+   ---------- Footnotes ----------
+
+   (1) http://coq.inria.fr/
+
+\1f
+File: flycheck.info,  Node: CSS,  Next: D,  Prev: Coq,  Up: Supported languages
+
+6.8 CSS
+=======
+
+ -- Flycheck Syntax Checker: css -csslint
+
+     A CSS syntax and style checker using csslint.
+
+     See URL ‘https://github.com/CSSLint/csslint’(1).
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/CSSLint/csslint
+
+\1f
+File: flycheck.info,  Node: D,  Next: Elixir,  Prev: CSS,  Up: Supported languages
+
+6.9 D
+=====
+
+ -- Flycheck Syntax Checker: d -dmd
+
+     A D syntax checker using the DMD compiler.
+
+     Requires DMD 2.066 or newer.  See URL ‘http://dlang.org/’(1).
+
+     Options
+............
+
+      -- User Option: flycheck -dmd-include-path
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate *note
+               flycheck-string-list-p: 99.
+
+          A list of include directories for dmd.
+
+          The value of this variable is a list of strings, where each
+          string is a directory to add to the include path of dmd.
+          Relative paths are relative to the file being checked.
+
+          This variable is an option for the syntax checker ‘`d-dmd'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.18 of the flycheck package.
+
+See also
+........
+
+The flycheck-d-unittest(2) extension adds a syntax checker that runs D
+unit tests on the fly.
+
+   ---------- Footnotes ----------
+
+   (1) http://dlang.org/
+
+   (2) https://github.com/flycheck/flycheck-d-unittest
+
+\1f
+File: flycheck.info,  Node: Elixir,  Next: Emacs Lisp,  Prev: D,  Up: Supported languages
+
+6.10 Elixir
+===========
+
+ -- Flycheck Syntax Checker: elixir
+
+     An Elixir syntax checker using the Elixir interpreter.
+
+     See URL ‘http://elixir-lang.org/’(1).
+
+   ---------- Footnotes ----------
+
+   (1) http://elixir-lang.org/
+
+\1f
+File: flycheck.info,  Node: Emacs Lisp,  Next: Erlang,  Prev: Elixir,  Up: Supported languages
+
+6.11 Emacs Lisp
+===============
+
+See also
+........
+
+Emacs(1), Emacs Lisp reference(2)
+
+ -- Flycheck Syntax Checker: emacs -lisp
+
+          Chained syntax checkers: The following syntax checkers are
+          *note chained: a0. after this syntax checker:
+
+            1. *note emacs-lisp-checkdoc: ce.
+
+          The *first* suitable syntax checker is used.
+
+     An Emacs Lisp syntax checker using the Emacs Lisp Byte compiler.
+
+     See Info Node *note (elisp)Byte Compilation::.
+
+     Options
+............
+
+      -- User Option: flycheck -emacs-lisp-initialize-packages
+
+               Variable properties: This variable may be risky if used
+               as a file-local variable.
+
+          Whether to initialize packages in the Emacs Lisp syntax checker.
+
+          To initialize packages, call ‘`package-initialize'’ before
+          byte-compiling the file to check.
+
+          When nil, never initialize packages.  When ‘`auto'’, initialize
+          packages only when checking files from ‘`user-emacs-directory'’.
+          For any other non-nil value, always initialize packages.
+
+          This variable is an option for the syntax checker ‘`emacs-lisp'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.14 of the flycheck package.
+
+      -- User Option: flycheck -emacs-lisp-load-path
+
+               Variable properties: This variable may be risky if used
+               as a file-local variable.
+
+          Load path to use in the Emacs Lisp syntax checker.
+
+          When set to ‘`inherit'’, use the ‘`load-path'’ of the current Emacs
+          session during syntax checking.
+
+          When set to a list of strings, add each directory in this list to
+          the ‘`load-path'’ before invoking the byte compiler.  Relative
+          paths in this list are expanded against the ‘`default-directory'’
+          of the buffer to check.
+
+          When nil, do not explicitly set the ‘`load-path'’ during syntax
+          checking.  The syntax check only uses the built-in ‘`load-path'’ of
+          Emacs in this case.
+
+          Note that changing this variable can lead to wrong results of the
+          syntax check, e.g. if an unexpected version of a required library
+          is used.
+
+          This variable is an option for the syntax checker ‘`emacs-lisp'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.14 of the flycheck package.
+
+      -- User Option: flycheck -emacs-lisp-package-user-dir
+
+               Variable properties: This variable may be risky if used
+               as a file-local variable.
+
+          Package directory for the Emacs Lisp syntax checker.
+
+          When set to a string, set ‘`package-user-dir'’ to the value of this
+          variable before initializing packages.
+
+          This variable has no effect, if
+          *note ‘flycheck-emacs-lisp-initialize-packages’: cf. is nil.
+
+          This variable is an option for the syntax checker ‘`emacs-lisp'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.14 of the flycheck package.
+
+     See also
+.............
+
+     With the flycheck-cask(3) extension this syntax checker
+     automatically uses packages from Cask(4) projects.
+
+ -- Flycheck Syntax Checker: emacs -lisp-checkdoc
+
+     An Emacs Lisp style checker using CheckDoc.
+
+     The checker runs ‘`checkdoc-current-buffer'’.
+
+     See also
+.............
+
+     *note (elisp)Documentation Tips::
+
+   ---------- Footnotes ----------
+
+   (1) http://www.gnu.org/software/emacs/
+
+   (2) 
+http://www.gnu.org/software/emacs/manual/html_node/elisp/index.html
+
+   (3) https://github.com/flycheck/flycheck-cask
+
+   (4) https://github.com/cask/cask
+
+\1f
+File: flycheck.info,  Node: Erlang,  Next: ERuby,  Prev: Emacs Lisp,  Up: Supported languages
+
+6.12 Erlang
+===========
+
+ -- Flycheck Syntax Checker: erlang
+
+     An Erlang syntax checker using the Erlang interpreter.
+
+     See URL ‘http://www.erlang.org/’(1).
+
+   ---------- Footnotes ----------
+
+   (1) http://www.erlang.org/
+
+\1f
+File: flycheck.info,  Node: ERuby,  Next: Fortran,  Prev: Erlang,  Up: Supported languages
+
+6.13 ERuby
+==========
+
+ -- Flycheck Syntax Checker: eruby -erubis
+
+     A eRuby syntax checker using the ‘`erubis'’ command.
+
+     See URL ‘http://www.kuwata-lab.com/erubis/’(1).
+
+   ---------- Footnotes ----------
+
+   (1) http://www.kuwata-lab.com/erubis/
+
+\1f
+File: flycheck.info,  Node: Fortran,  Next: Go,  Prev: ERuby,  Up: Supported languages
+
+6.14 Fortran
+============
+
+ -- Flycheck Syntax Checker: fortran -gfortran
+
+     An Fortran syntax checker using GCC.
+
+     Uses GCC’s Fortran compiler gfortran.  See URL
+     ‘https://gcc.gnu.org/onlinedocs/gfortran/’(1).
+
+     Options
+............
+
+      -- User Option: flycheck -gfortran-args
+
+          A list of additional arguments for Symbol(’fortran-gfortran’).
+
+          The value of this variable is a list of strings with additional
+          command line arguments.
+
+          This variable is an option for the syntax checker ‘`fortran-gfortran'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.22 of the flycheck package.
+
+      -- User Option: flycheck -gfortran-include-path
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate *note
+               flycheck-string-list-p: 99.
+
+          A list of include directories for GCC Fortran.
+
+          The value of this variable is a list of strings, where each
+          string is a directory to add to the include path of gcc.
+          Relative paths are relative to the file being checked.
+
+          This variable is an option for the syntax checker ‘`fortran-gfortran'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.20 of the flycheck package.
+
+      -- User Option: flycheck -gfortran-language-standard
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘stringp’.
+
+          The language standard to use in GFortran.
+
+          The value of this variable is either a string denoting a language
+          standard, or nil, to use the default standard.  When non-nil,
+          pass the language standard via the ‘`-std'’ option.
+
+          This variable is an option for the syntax checker ‘`fortran-gfortran'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.20 of the flycheck package.
+
+      -- User Option: flycheck -gfortran-layout
+
+          The source code layout to use in GFortran.
+
+          The value of this variable is one of the following symbols:
+
+          nil
+               Let gfortran determine the layout from the extension
+
+          ‘`free'’
+               Use free form layout
+
+
+          ‘`fixed'’
+               Use fixed form layout
+
+          In any other case, an error is signaled.
+
+          This variable is an option for the syntax checker ‘`fortran-gfortran'’.
+
+      -- User Option: flycheck -gfortran-warnings
+
+          A list of warnings for GCC Fortran.
+
+          The value of this variable is a list of strings, where each string
+          is the name of a warning category to enable.  By default, all
+          recommended warnings and some extra warnings are enabled (as by
+          ‘`-Wall'’ and ‘`-Wextra'’ respectively).
+
+          Refer to the gfortran manual at URL
+          ‘https://gcc.gnu.org/onlinedocs/gfortran/’(2) for more information
+          about warnings
+
+          This variable is an option for the syntax checker ‘`fortran-gfortran'’.
+
+   ---------- Footnotes ----------
+
+   (1) https://gcc.gnu.org/onlinedocs/gfortran/
+
+   (2) https://gcc.gnu.org/onlinedocs/gfortran/
+
+\1f
+File: flycheck.info,  Node: Go,  Next: Haml,  Prev: Fortran,  Up: Supported languages
+
+6.15 Go
+=======
+
+ -- Flycheck Syntax Checker: go -gofmt
+
+          Chained syntax checkers: The following syntax checkers are
+          *note chained: a0. after this syntax checker:
+
+            1. *note go-golint: e0, if there are no errors above level
+               ‘warning’
+
+            2. *note go-vet: e1, if there are no errors above level
+               ‘warning’
+
+            3. *note go-build: e2, if there are no errors above level
+               ‘warning’
+
+            4. *note go-test: e3, if there are no errors above level
+               ‘warning’
+
+            5. *note go-errcheck: e4, if there are no errors above level
+               ‘warning’
+
+          The *first* suitable syntax checker is used.
+
+     A Go syntax and style checker using the gofmt utility.
+
+     See URL ‘http://golang.org/cmd/gofmt/’(1).
+
+ -- Flycheck Syntax Checker: go -golint
+
+          Chained syntax checkers: The following syntax checkers are
+          *note chained: a0. after this syntax checker:
+
+            1. *note go-vet: e1.
+
+            2. *note go-build: e2.
+
+            3. *note go-test: e3.
+
+            4. *note go-errcheck: e4.
+
+          The *first* suitable syntax checker is used.
+
+     A Go style checker using Golint.
+
+     See URL ‘https://github.com/golang/lint’(2).
+
+ -- Flycheck Syntax Checker: go -vet
+
+          Chained syntax checkers: The following syntax checkers are
+          *note chained: a0. after this syntax checker:
+
+            1. *note go-build: e2.
+
+            2. *note go-test: e3.
+
+            3. *note go-errcheck: e4.
+
+          The *first* suitable syntax checker is used.
+
+     A Go syntax checker using the ‘go tool vet’ command.
+
+     See URL ‘http://golang.org/cmd/go/’(3) and URL
+     ‘http://godoc.org/code.google.com/p/go.tools/cmd/vet’(4).
+
+     Options
+............
+
+      -- User Option: flycheck -go-vet-print-functions
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate *note
+               flycheck-string-list-p: 99.
+
+          A comma-separated list of print-like functions for ‘go tool vet’.
+
+          Go vet will check these functions for format string problems and
+          issues, such as a mismatch between the number of formats used,
+          and the number of arguments given.
+
+          Each entry is in the form Name:N where N is the zero-based
+          argument position of the first argument involved in the print:
+          either the format or the first print argument for non-formatted
+          prints.  For example, if you have Warn and Warnf functions that
+          take an io.Writer as their first argument, like Fprintf,
+          -printfuncs=Warn:1,Warnf:1
+
+          This variable is an option for the syntax checker ‘`go-vet'’.
+
+ -- Flycheck Syntax Checker: go -build
+
+          Chained syntax checkers: The following syntax checkers are
+          *note chained: a0. after this syntax checker:
+
+            1. *note go-errcheck: e4, if there are no errors above level
+               ‘warning’
+
+          The *first* suitable syntax checker is used.
+
+     A Go syntax and type checker using the ‘go build’ command.
+
+     See URL ‘http://golang.org/cmd/go’(5).
+
+ -- Flycheck Syntax Checker: go -test
+
+          Chained syntax checkers: The following syntax checkers are
+          *note chained: a0. after this syntax checker:
+
+            1. *note go-errcheck: e4, if there are no errors above level
+               ‘warning’
+
+          The *first* suitable syntax checker is used.
+
+     A Go syntax and type checker using the ‘go test’ command.
+
+     See URL ‘http://golang.org/cmd/go’(6).
+
+ -- Flycheck Syntax Checker: go -errcheck
+
+     A Go checker for unchecked errors.
+
+     See URL ‘https://github.com/kisielk/errcheck’(7).
+
+   ---------- Footnotes ----------
+
+   (1) http://golang.org/cmd/gofmt/
+
+   (2) https://github.com/golang/lint
+
+   (3) http://golang.org/cmd/go/
+
+   (4) http://godoc.org/code.google.com/p/go.tools/cmd/vet
+
+   (5) http://golang.org/cmd/go
+
+   (6) http://golang.org/cmd/go
+
+   (7) https://github.com/kisielk/errcheck
+
+\1f
+File: flycheck.info,  Node: Haml,  Next: Handlebars,  Prev: Go,  Up: Supported languages
+
+6.16 Haml
+=========
+
+ -- Flycheck Syntax Checker: haml
+
+     A Haml syntax checker using the Haml compiler.
+
+     See URL ‘http://haml.info’(1).
+
+   ---------- Footnotes ----------
+
+   (1) http://haml.info
+
+\1f
+File: flycheck.info,  Node: Handlebars,  Next: Haskell,  Prev: Haml,  Up: Supported languages
+
+6.17 Handlebars
+===============
+
+ -- Flycheck Syntax Checker: handlebars
+
+     A Handlebars syntax checker using the Handlebars compiler.
+
+     See URL ‘http://handlebarsjs.com/’(1).
+
+   ---------- Footnotes ----------
+
+   (1) http://handlebarsjs.com/
+
+\1f
+File: flycheck.info,  Node: Haskell,  Next: HTML,  Prev: Handlebars,  Up: Supported languages
+
+6.18 Haskell
+============
+
+ -- Flycheck Syntax Checker: haskell -ghc
+
+          Chained syntax checkers: The following syntax checkers are
+          *note chained: a0. after this syntax checker:
+
+            1. *note haskell-hlint: ec, if there are no errors above
+               level ‘warning’
+
+          The *first* suitable syntax checker is used.
+
+     A Haskell syntax and type checker using ghc.
+
+     See URL ‘http://www.haskell.org/ghc/’(1).
+
+     Options
+............
+
+      -- User Option: flycheck -ghc-args
+
+          A list of additional arguments for Symbol(’haskell-ghc’).
+
+          The value of this variable is a list of strings with additional
+          command line arguments.
+
+          This variable is an option for the syntax checker ‘`haskell-ghc'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.22 of the flycheck package.
+
+      -- User Option: flycheck -ghc-language-extensions
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate *note
+               flycheck-string-list-p: 99.
+
+          Language extensions for GHC.
+
+          The value of this variable is a list of strings, where each
+          string is a Haskell language extension, as in the LANGUAGE
+          pragma.  Each extension is enabled via ‘`-X'’.
+
+          This variable is an option for the syntax checker ‘`haskell-ghc'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.19 of the flycheck package.
+
+      -- User Option: flycheck -ghc-no-user-package-database
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘booleanp’.
+
+          Whether to disable the user package database in GHC.
+
+          When non-nil, disable the user package database in GHC, via
+          ‘`-no-user-package-db'’.
+
+          This variable is an option for the syntax checker ‘`haskell-ghc'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.16 of the flycheck package.
+
+      -- User Option: flycheck -ghc-package-databases
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate *note
+               flycheck-string-list-p: 99.
+
+          Additional module databases for GHC.
+
+          The value of this variable is a list of strings, where each
+          string is a directory of a package database.  Each package
+          database is given to GHC via ‘`-package-db'’.
+
+          This variable is an option for the syntax checker ‘`haskell-ghc'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.16 of the flycheck package.
+
+      -- User Option: flycheck -ghc-search-path
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate *note
+               flycheck-string-list-p: 99.
+
+          Module search path for GHC.
+
+          The value of this variable is a list of strings, where each
+          string is a directory containing Haskell modules.  Each directory
+          is added to the GHC search path via ‘`-i'’.
+
+          This variable is an option for the syntax checker ‘`haskell-ghc'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.16 of the flycheck package.
+
+     See also
+.............
+
+     The flycheck-haskell(2) extension configures this syntax checker
+     according to the corresponding Cabal project, and adds Cabal
+     sandboxes.
+
+ -- Flycheck Syntax Checker: haskell -hlint
+
+     A Haskell style checker using hlint.
+
+     See URL ‘https://github.com/ndmitchell/hlint’(3).
+
+See also
+........
+
+The flycheck-hdevtools(4) extension adds a Haskell syntax checker using
+hdevtools(5).
+
+   ---------- Footnotes ----------
+
+   (1) http://www.haskell.org/ghc/
+
+   (2) https://github.com/flycheck/flycheck-haskell
+
+   (3) https://github.com/ndmitchell/hlint
+
+   (4) https://github.com/flycheck/flycheck-hdevtools
+
+   (5) https://github.com/bitc/hdevtools/
+
+\1f
+File: flycheck.info,  Node: HTML,  Next: Javascript,  Prev: Haskell,  Up: Supported languages
+
+6.19 HTML
+=========
+
+ -- Flycheck Syntax Checker: html -tidy
+
+     A HTML syntax and style checker using Tidy.
+
+     See URL ‘https://github.com/w3c/tidy-html5’(1).
+
+     Configuration file
+.......................
+
+      -- User Option: flycheck -tidyrc
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘stringp’.
+
+          Configuration file for ‘`html-tidy'’.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/w3c/tidy-html5
+
+\1f
+File: flycheck.info,  Node: Javascript,  Next: JSON,  Prev: HTML,  Up: Supported languages
+
+6.20 Javascript
+===============
+
+ -- Flycheck Syntax Checker: javascript -jshint
+
+     A JavaScript syntax and style checker using jshint.
+
+     See URL ‘http://www.jshint.com’(1).
+
+     Configuration file
+.......................
+
+      -- User Option: flycheck -jshintrc
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘stringp’.
+
+          Configuration file for ‘`javascript-jshint'’.
+
+ -- Flycheck Syntax Checker: javascript -eslint
+
+     A JavaScript syntax and style checker using eslint.
+
+     See URL ‘https://github.com/eslint/eslint’(2).
+
+     Options
+............
+
+      -- User Option: flycheck -eslint-rulesdir
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘stringp’.
+
+          The directory of custom rules for ESLint.
+
+          The value of this variable is either a string containing the path
+          to a directory with custom rules, or nil, to not give any custom
+          rules to ESLint.
+
+          Refer to the ESLint manual at URL
+          ‘https://github.com/eslint/eslint/tree/master/docs/command-line-interface#–rulesdir’(3)
+          for more information about the custom directory.
+
+          This variable is an option for the syntax checker ‘`javascript-eslint'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.16 of the flycheck package.
+
+     Configuration file
+.......................
+
+      -- User Option: flycheck -eslintrc
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘stringp’.
+
+          Configuration file for ‘`javascript-eslint'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.20 of the flycheck package.
+
+ -- Flycheck Syntax Checker: javascript -gjslint
+
+     A JavaScript syntax and style checker using Closure Linter.
+
+     See URL ‘https://developers.google.com/closure/utilities’(4).
+
+     Configuration file
+.......................
+
+      -- User Option: flycheck -gjslintrc
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘stringp’.
+
+          Configuration file for ‘`javascript-gjslint'’.
+
+   ---------- Footnotes ----------
+
+   (1) http://www.jshint.com
+
+   (2) https://github.com/eslint/eslint
+
+   (3) 
+https://github.com/eslint/eslint/tree/master/docs/command-line-interface#–rulesdir
+
+   (4) https://developers.google.com/closure/utilities
+
+\1f
+File: flycheck.info,  Node: JSON,  Next: LESS,  Prev: Javascript,  Up: Supported languages
+
+6.21 JSON
+=========
+
+ -- Flycheck Syntax Checker: json -jsonlint
+
+     A JSON syntax and style checker using jsonlint.
+
+     See URL ‘https://github.com/zaach/jsonlint’(1).
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/zaach/jsonlint
+
+\1f
+File: flycheck.info,  Node: LESS,  Next: Lua,  Prev: JSON,  Up: Supported languages
+
+6.22 LESS
+=========
+
+ -- Flycheck Syntax Checker: less
+
+     A LESS syntax checker using lessc.
+
+     At least version 1.4 of lessc is required.
+
+     See URL ‘http://lesscss.org’(1).
+
+   ---------- Footnotes ----------
+
+   (1) http://lesscss.org
+
+\1f
+File: flycheck.info,  Node: Lua,  Next: Make,  Prev: LESS,  Up: Supported languages
+
+6.23 Lua
+========
+
+ -- Flycheck Syntax Checker: lua
+
+     A Lua syntax checker using the Lua compiler.
+
+     See URL ‘http://www.lua.org/’(1).
+
+   ---------- Footnotes ----------
+
+   (1) http://www.lua.org/
+
+\1f
+File: flycheck.info,  Node: Make,  Next: Perl,  Prev: Lua,  Up: Supported languages
+
+6.24 Make
+=========
+
+ -- Flycheck Syntax Checker: make
+
+     A Makefile syntax checker using the POSIX compatible Make command.
+
+     See URL ‘http://pubs.opengroup.org/onlinepubs/9699919799/utilities/make.html’(1).
+
+     See also
+.............
+
+     GNU Make(2), NetBSD Make(3), FreeBSD Make(4), OpenBSD Make(5)
+
+   ---------- Footnotes ----------
+
+   (1) 
+http://pubs.opengroup.org/onlinepubs/9699919799/utilities/make.html
+
+   (2) http://www.gnu.org/software/make/
+
+   (3) http://netbsd.gw.com/cgi-bin/man-cgi?make++NetBSD-current
+
+   (4) http://www.freebsd.org/cgi/man.cgi?query=make&sektion=1
+
+   (5) http://www.openbsd.org/cgi-bin/man.cgi?query=make
+
+\1f
+File: flycheck.info,  Node: Perl,  Next: PHP,  Prev: Make,  Up: Supported languages
+
+6.25 Perl
+=========
+
+ -- Flycheck Syntax Checker: perl
+
+          Chained syntax checkers: The following syntax checkers are
+          *note chained: a0. after this syntax checker:
+
+            1. *note perl-perlcritic: 109.
+
+          The *first* suitable syntax checker is used.
+
+     A Perl syntax checker using the Perl interpreter.
+
+     See URL ‘http://www.perl.org’(1).
+
+ -- Flycheck Syntax Checker: perl -perlcritic
+
+     A Perl syntax checker using Perl::Critic.
+
+     See URL ‘https://metacpan.org/pod/Perl::Critic’(2).
+
+     Options
+............
+
+      -- User Option: flycheck -perlcritic-severity
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘integerp’.
+
+          The message severity for Perl Critic.
+
+          The value of this variable is a severity level as integer, for
+          the ‘`--severity'’ option to Perl Critic.
+
+          This variable is an option for the syntax checker ‘`perl-perlcritic'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.18 of the flycheck package.
+
+   ---------- Footnotes ----------
+
+   (1) http://www.perl.org
+
+   (2) https://metacpan.org/pod/Perl::Critic
+
+\1f
+File: flycheck.info,  Node: PHP,  Next: Puppet,  Prev: Perl,  Up: Supported languages
+
+6.26 PHP
+========
+
+ -- Flycheck Syntax Checker: php
+
+          Chained syntax checkers: The following syntax checkers are
+          *note chained: a0. after this syntax checker:
+
+            1. *note php-phpmd: 10d, if there are no errors above level
+               ‘warning’
+
+            2. *note php-phpcs: 10e, if there are no errors above level
+               ‘warning’
+
+          The *first* suitable syntax checker is used.
+
+     A PHP syntax checker using the PHP command line interpreter.
+
+     See URL ‘http://php.net/manual/en/features.commandline.php’(1).
+
+ -- Flycheck Syntax Checker: php -phpmd
+
+          Chained syntax checkers: The following syntax checkers are
+          *note chained: a0. after this syntax checker:
+
+            1. *note php-phpcs: 10e.
+
+          The *first* suitable syntax checker is used.
+
+     A PHP style checker using PHP Mess Detector.
+
+     See URL ‘http://phpmd.org/’(2).
+
+     Options
+............
+
+      -- User Option: flycheck -phpmd-rulesets
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate *note
+               flycheck-string-list-p: 99.
+
+          The rule sets for PHP Mess Detector.
+
+          Set default rule sets and custom rule set files.
+
+          See section "Using multiple rule sets" in the PHP Mess Detector
+          manual at URL ‘http://phpmd.org/documentation/index.html’(3).
+
+          This variable is an option for the syntax checker ‘`php-phpmd'’.
+
+ -- Flycheck Syntax Checker: php -phpcs
+
+     A PHP style checker using PHP_CodeSniffer.
+
+     See URL ‘http://pear.php.net/package/PHP_CodeSniffer/’(4).
+
+     Options
+............
+
+      -- User Option: flycheck -phpcs-standard
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘stringp’.
+
+          The coding standard for PHP CodeSniffer.
+
+          When nil, use the default standard from the global PHP
+          CodeSniffer configuration.  When set to a string, pass the string
+          to PHP CodeSniffer which will interpret it as name as a standard,
+          or as path to a standard specification.
+
+          This variable is an option for the syntax checker ‘`php-phpcs'’.
+
+   ---------- Footnotes ----------
+
+   (1) http://php.net/manual/en/features.commandline.php
+
+   (2) http://phpmd.org/
+
+   (3) http://phpmd.org/documentation/index.html
+
+   (4) http://pear.php.net/package/PHP_CodeSniffer/
+
+\1f
+File: flycheck.info,  Node: Puppet,  Next: Python,  Prev: PHP,  Up: Supported languages
+
+6.27 Puppet
+===========
+
+ -- Flycheck Syntax Checker: puppet -parser
+
+          Chained syntax checkers: The following syntax checkers are
+          *note chained: a0. after this syntax checker:
+
+            1. *note puppet-lint: 113, if there are no errors above
+               level ‘warning’
+
+          The *first* suitable syntax checker is used.
+
+     A Puppet DSL syntax checker using puppet’s own parser.
+
+     See URL ‘http://puppetlabs.com/’(1).
+
+ -- Flycheck Syntax Checker: puppet -lint
+
+     A Puppet DSL style checker using puppet-lint.
+
+     See URL ‘http://puppet-lint.com/’(2).
+
+   ---------- Footnotes ----------
+
+   (1) http://puppetlabs.com/
+
+   (2) http://puppet-lint.com/
+
+\1f
+File: flycheck.info,  Node: Python,  Next: R,  Prev: Puppet,  Up: Supported languages
+
+6.28 Python
+===========
+
+ -- Flycheck Syntax Checker: python -flake8
+
+     A Python syntax and style checker using Flake8.
+
+     Requires Flake8 2.0 or newer. See URL
+     ‘https://pypi.python.org/pypi/flake8’(1).
+
+     Options
+............
+
+      -- User Option: flycheck -flake8-error-level-alist
+
+          An alist mapping flake8 error IDs to Flycheck error levels.
+
+          Each item in this list is a cons cell ‘(PATTERN . LEVEL)’ where
+          PATTERN is a regular expression matched against the error ID, and
+          LEVEL is a Flycheck error level symbol.
+
+          Each PATTERN is matched in the order of appearance in this list
+          against the error ID.  If it matches the ID, the level of the
+          corresponding error is set to LEVEL.  An error that is not
+          matched by any PATTERN defaults to warning level.
+
+          This option exists because flake8 categorises errors by the
+          underlying tool that produced them (e.g. F for pyflakes messages,
+          E for pep8 messages, etc.).  These categorisations do not map
+          directly to Flycheck error levels.  Hence, this option exists to
+          allow for a custom mapping.  The default value handles all of the
+          built-in tools of flake8, and naming errors from pep8-naming.
+
+          This variable is an option for the syntax checker ‘`python-flake8'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.22 of the flycheck package.
+
+      -- User Option: flycheck -flake8-maximum-complexity
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘integerp’.
+
+          The maximum McCabe complexity of methods.
+
+          If nil, do not check the complexity of methods.  If set to an
+          integer, report any complexity greater than the value of this
+          variable as warning.
+
+          If set to an integer, this variable overrules any similar setting
+          in the configuration file denoted by *note ‘flycheck-flake8rc’: 118.
+
+          This variable is an option for the syntax checker ‘`python-flake8'’.
+
+      -- User Option: flycheck -flake8-maximum-line-length
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘integerp’.
+
+          The maximum length of lines.
+
+          If set to an integer, the value of this variable denotes the
+          maximum length of lines, overruling any similar setting in the
+          configuration file denoted by *note ‘flycheck-flake8rc’: 118.  An error will
+          be reported for any line longer than the value of this variable.
+
+          If set to nil, use the maximum line length from the configuration
+          file denoted by *note ‘flycheck-flake8rc’: 118, or the PEP 8 recommendation
+          of 79 characters if there is no configuration with this setting.
+
+          This variable is an option for the syntax checker ‘`python-flake8'’.
+
+     Configuration file
+.......................
+
+      -- User Option: flycheck -flake8rc
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘stringp’.
+
+          Configuration file for ‘`python-flake8'’.
+
+ -- Flycheck Syntax Checker: python -pylint
+
+     A Python syntax and style checker using Pylint.
+
+     This syntax checker requires Pylint 1.0 or newer.
+
+     See URL ‘http://www.pylint.org/’(2).
+
+     Configuration file
+.......................
+
+      -- User Option: flycheck -pylintrc
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘stringp’.
+
+          Configuration file for ‘`python-pylint'’.
+
+ -- Flycheck Syntax Checker: python -pycompile
+
+     A Python syntax checker using Python’s builtin compiler.
+
+     See URL ‘https://docs.python.org/3.4/library/py_compile.html’(3).
+
+See also
+........
+
+flycheck-pyflakes(4) adds a Python syntax checker using Pyflakes.
+
+   ---------- Footnotes ----------
+
+   (1) https://pypi.python.org/pypi/flake8
+
+   (2) http://www.pylint.org/
+
+   (3) https://docs.python.org/3.4/library/py_compile.html
+
+   (4) https://github.com/Wilfred/flycheck-pyflakes
+
+\1f
+File: flycheck.info,  Node: R,  Next: Racket,  Prev: Python,  Up: Supported languages
+
+6.29 R
+======
+
+ -- Flycheck Syntax Checker: r -lintr
+
+     An R style and syntax checker using the lintr package.
+
+     See URL ‘https://github.com/jimhester/lintr’(1).
+
+     Options
+............
+
+      -- User Option: flycheck -lintr-caching
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘booleanp’.
+
+          Whether to enable caching in lintr.
+
+          By default, lintr caches all expressions in a file and re-checks
+          only those that have changed.  Setting this option to nil
+          disables caching in case there are problems.
+
+          This variable is an option for the syntax checker ‘`r-lintr'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.23 of the flycheck package.
+
+      -- User Option: flycheck -lintr-linters
+
+               Variable properties: This variable may be risky if used
+               as a file-local variable.
+
+          Linters to use with lintr.
+
+          The value of this variable is a string containing an R
+          expression, which selects linters for lintr.
+
+          This variable is an option for the syntax checker ‘`r-lintr'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.23 of the flycheck package.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/jimhester/lintr
+
+\1f
+File: flycheck.info,  Node: Racket,  Next: RPM SPEC,  Prev: R,  Up: Supported languages
+
+6.30 Racket
+===========
+
+ -- Flycheck Syntax Checker: racket
+
+     A Racket syntax checker using the Racket compiler.
+
+     See URL ‘http://racket-lang.org/’(1).
+
+   ---------- Footnotes ----------
+
+   (1) http://racket-lang.org/
+
+\1f
+File: flycheck.info,  Node: RPM SPEC,  Next: ReStructuredText,  Prev: Racket,  Up: Supported languages
+
+6.31 RPM SPEC
+=============
+
+ -- Flycheck Syntax Checker: rpm -rpmlint
+
+     A RPM SPEC file syntax checker using rpmlint.
+
+     See URL ‘http://sourceforge.net/projects/rpmlint/’(1).
+
+   ---------- Footnotes ----------
+
+   (1) http://sourceforge.net/projects/rpmlint/
+
+\1f
+File: flycheck.info,  Node: ReStructuredText,  Next: Ruby,  Prev: RPM SPEC,  Up: Supported languages
+
+6.32 ReStructuredText
+=====================
+
+ -- Flycheck Syntax Checker: rst
+
+     A ReStructuredText (RST) syntax checker using Docutils.
+
+     See URL ‘http://docutils.sourceforge.net/’(1).
+
+ -- Flycheck Syntax Checker: rst -sphinx
+
+     A ReStructuredText (RST) syntax checker using Sphinx.
+
+     Requires Sphinx 1.2 or newer.  See URL ‘http://sphinx-doc.org’(2).
+
+     Options
+............
+
+      -- User Option: flycheck -sphinx-warn-on-missing-references
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘booleanp’.
+
+          Whether to warn about missing references in Sphinx.
+
+          When non-nil (the default), warn about all missing references in
+          Sphinx via ‘`-n'’.
+
+          This variable is an option for the syntax checker ‘`rst-sphinx'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.17 of the flycheck package.
+
+   ---------- Footnotes ----------
+
+   (1) http://docutils.sourceforge.net/
+
+   (2) http://sphinx-doc.org
+
+\1f
+File: flycheck.info,  Node: Ruby,  Next: Rust,  Prev: ReStructuredText,  Up: Supported languages
+
+6.33 Ruby
+=========
+
+ -- Flycheck Syntax Checker: ruby -rubocop
+
+          Chained syntax checkers: The following syntax checkers are
+          *note chained: a0. after this syntax checker:
+
+            1. *note ruby-rubylint: 12c, if there are no errors above
+               level ‘warning’
+
+          The *first* suitable syntax checker is used.
+
+     A Ruby syntax and style checker using the RuboCop tool.
+
+     See URL ‘http://batsov.com/rubocop/’(1).
+
+     Options
+............
+
+      -- User Option: flycheck -rubocop-lint-only
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘booleanp’.
+
+          Whether to only report code issues in Rubocop.
+
+          When non-nil, only report code issues in Rubocop, via ‘`--lint'’.
+          Otherwise report style issues as well.
+
+          This variable is an option for the syntax checker ‘`ruby-rubocop'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.16 of the flycheck package.
+
+     Configuration file
+.......................
+
+      -- User Option: flycheck -rubocoprc
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘stringp’.
+
+          Configuration file for ‘`ruby-rubocop'’.
+
+ -- Flycheck Syntax Checker: ruby -rubylint
+
+     A Ruby syntax and code analysis checker using ruby-lint.
+
+     Requires ruby-lint 2.0 or newer.  To use *note ‘flycheck-rubylintrc’: 12f,
+     ruby-lint 2.0.2 or newer is required.  See URL
+     ‘https://github.com/YorickPeterse/ruby-lint’(2).
+
+     Configuration file
+.......................
+
+      -- User Option: flycheck -rubylintrc
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘stringp’.
+
+          Configuration file for ‘`ruby-rubylint'’.
+
+               Warning: You need ruby-lint version 2.0.2 or newer to use
+               this variable.
+
+ -- Flycheck Syntax Checker: ruby
+
+          Chained syntax checkers: The following syntax checkers are
+          *note chained: a0. after this syntax checker:
+
+            1. *note ruby-rubylint: 12c, if there are no errors above
+               level ‘warning’
+
+          The *first* suitable syntax checker is used.
+
+     A Ruby syntax checker using the standard Ruby interpreter.
+
+     Please note that the output of different Ruby versions and
+     implementations varies wildly.  This syntax checker supports
+     current versions of MRI and JRuby, but may break when used with
+     other implementations or future versions of these
+     implementations.
+
+     Please consider using ‘`ruby-rubocop'’ or ‘`ruby-rubylint'’ instead.
+
+     See URL ‘https://www.ruby-lang.org/’(3).
+
+ -- Flycheck Syntax Checker: ruby -jruby
+
+          Chained syntax checkers: The following syntax checkers are
+          *note chained: a0. after this syntax checker:
+
+            1. *note ruby-rubylint: 12c, if there are no errors above
+               level ‘warning’
+
+          The *first* suitable syntax checker is used.
+
+     A Ruby syntax checker using the JRuby interpreter.
+
+     This syntax checker is very primitive, and may break on future
+     versions of JRuby.
+
+     Please consider using ‘`ruby-rubocop'’ or ‘`ruby-rubylint'’ instead.
+
+     See URL ‘http://jruby.org/’(4).
+
+   ---------- Footnotes ----------
+
+   (1) http://batsov.com/rubocop/
+
+   (2) https://github.com/YorickPeterse/ruby-lint
+
+   (3) https://www.ruby-lang.org/
+
+   (4) http://jruby.org/
+
+\1f
+File: flycheck.info,  Node: Rust,  Next: Sass,  Prev: Ruby,  Up: Supported languages
+
+6.34 Rust
+=========
+
+ -- Flycheck Syntax Checker: rust
+
+     A Rust syntax checker using Rust compiler.
+
+     This syntax checker needs Rust 0.10 or newer.
+
+     See URL ‘http://www.rust-lang.org’(1).
+
+     Options
+............
+
+      -- User Option: flycheck -rust-check-tests
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘booleanp’.
+
+          Whether to check test code in Rust.
+
+          When non-nil, ‘`rustc'’ is passed the ‘`--test'’ flag, which will
+          check any code marked with the ‘#[cfg(test)]’ attribute and any
+          functions marked with ‘#[test]’. Otherwise, ‘`rustc'’ is not passed
+          ‘`--test'’ and test code will not be checked.  Skipping ‘`--test'’ is
+          necessary when using ‘#![no_std]’, because compiling the test
+          runner requires ‘`std'’.
+
+          This variable is an option for the syntax checker ‘`rust'’.
+
+      -- User Option: flycheck -rust-crate-root
+
+               Variable properties: Automatically becomes buffer-local
+               when set.  This variable is safe as a file local variable
+               if its value satisfies the predicate ‘stringp’.
+
+          A path to the crate root for the current buffer.
+
+          The value of this variable is either a string with the path to
+          the crate root for the current buffer, or nil if the current buffer
+          is a crate.  A relative path is relative to the current buffer.
+
+          If this variable is non nil the current buffer will only be checked
+          if it is not modified, i.e. after it has been saved.
+
+          This variable is an option for the syntax checker ‘`rust'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.20 of the flycheck package.
+
+      -- User Option: flycheck -rust-crate-type
+
+               Variable properties: Automatically becomes buffer-local
+               when set.  This variable is safe as a file local variable
+               if its value satisfies the predicate ‘stringp’.
+
+          The type of the Rust Crate to check.
+
+          The value of this variable is a string denoting the crate type,
+          for the ‘`--crate-type'’ flag.
+
+          This variable is an option for the syntax checker ‘`rust'’.
+
+      -- User Option: flycheck -rust-library-path
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate *note
+               flycheck-string-list-p: 99.
+
+          A list of library directories for Rust.
+
+          The value of this variable is a list of strings, where each
+          string is a directory to add to the library path of Rust.
+          Relative paths are relative to the file being checked.
+
+          This variable is an option for the syntax checker ‘`rust'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.18 of the flycheck package.
+
+     See also
+.............
+
+     The flycheck-rust(2) extension customizes this syntax checker
+     according to the Cargo project layout and settings.
+
+   ---------- Footnotes ----------
+
+   (1) http://www.rust-lang.org
+
+   (2) https://github.com/flycheck/flycheck-rust
+
+\1f
+File: flycheck.info,  Node: Sass,  Next: Scala,  Prev: Rust,  Up: Supported languages
+
+6.35 Sass
+=========
+
+ -- Flycheck Syntax Checker: sass
+
+     A Sass syntax checker using the Sass compiler.
+
+     See URL ‘http://sass-lang.com’(1).
+
+     Options
+............
+
+      -- User Option: flycheck -sass-compass
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘booleanp’.
+
+          Whether to enable the Compass CSS framework.
+
+          When non-nil, enable the Compass CSS framework, via ‘`--compass'’.
+
+          This variable is an option for the syntax checker ‘`sass'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.16 of the flycheck package.
+
+   ---------- Footnotes ----------
+
+   (1) http://sass-lang.com
+
+\1f
+File: flycheck.info,  Node: Scala,  Next: Scss,  Prev: Sass,  Up: Supported languages
+
+6.36 Scala
+==========
+
+ -- Flycheck Syntax Checker: scala
+
+          Chained syntax checkers: The following syntax checkers are
+          *note chained: a0. after this syntax checker:
+
+            1. *note scala-scalastyle: 13e, if there are no errors above
+               level ‘warning’
+
+          The *first* suitable syntax checker is used.
+
+     A Scala syntax checker using the Scala compiler.
+
+     See URL ‘http://www.scala-lang.org/’(1).
+
+ -- Flycheck Syntax Checker: scala -scalastyle
+
+     A Scala style checker using scalastyle.
+
+     Note that this syntax checker is not used if
+     *note ‘flycheck-scalastyle-jar’: 13f. or *note ‘flycheck-scalastylerc’: 140. are nil or
+     point to non-existing files.
+
+     See URL ‘http://www.scalastyle.org’(2).
+
+     Options
+............
+
+      -- User Option: flycheck -scalastyle-jar
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘stringp’.
+
+          The path to the main JAR file of Scalastyle.
+
+          If this option is nil, or points to a non-existing file,
+          ‘`scala-scalastyle'’ can not be used.
+
+          This variable is an option for the syntax checker ‘`scala-scalastyle'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.20 of the flycheck package.
+
+     Configuration file
+.......................
+
+      -- User Option: flycheck -scalastylerc
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘stringp’.
+
+          Configuration file for ‘`scala-scalastyle'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.20 of the flycheck package.
+
+   ---------- Footnotes ----------
+
+   (1) http://www.scala-lang.org/
+
+   (2) http://www.scalastyle.org
+
+\1f
+File: flycheck.info,  Node: Scss,  Next: Shell script languages,  Prev: Scala,  Up: Supported languages
+
+6.37 Scss
+=========
+
+ -- Flycheck Syntax Checker: scss
+
+     A SCSS syntax checker using the SCSS compiler.
+
+     See URL ‘http://sass-lang.com’(1).
+
+     Options
+............
+
+      -- User Option: flycheck -scss-compass
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘booleanp’.
+
+          Whether to enable the Compass CSS framework.
+
+          When non-nil, enable the Compass CSS framework, via ‘`--compass'’.
+
+          This variable is an option for the syntax checker ‘`scss'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.16 of the flycheck package.
+
+   ---------- Footnotes ----------
+
+   (1) http://sass-lang.com
+
+\1f
+File: flycheck.info,  Node: Shell script languages,  Next: Slim,  Prev: Scss,  Up: Supported languages
+
+6.38 Shell script languages
+===========================
+
+ -- Flycheck Syntax Checker: sh -bash
+
+          Chained syntax checkers: The following syntax checkers are
+          *note chained: a0. after this syntax checker:
+
+            1. *note sh-shellcheck: 146, if there are no errors above
+               level ‘warning’
+
+          The *first* suitable syntax checker is used.
+
+     A Bash syntax checker using the Bash shell.
+
+     See URL ‘http://www.gnu.org/software/bash/’(1).
+
+ -- Flycheck Syntax Checker: sh -posix-dash
+
+          Chained syntax checkers: The following syntax checkers are
+          *note chained: a0. after this syntax checker:
+
+            1. *note sh-shellcheck: 146, if there are no errors above
+               level ‘warning’
+
+          The *first* suitable syntax checker is used.
+
+     A POSIX Shell syntax checker using the Dash shell.
+
+     See URL ‘http://gondor.apana.org.au/~herbert/dash/’(2).
+
+     See also
+.............
+
+     POSIX Shell Command Language(3)
+
+ -- Flycheck Syntax Checker: sh -posix-bash
+
+          Chained syntax checkers: The following syntax checkers are
+          *note chained: a0. after this syntax checker:
+
+            1. *note sh-shellcheck: 146, if there are no errors above
+               level ‘warning’
+
+          The *first* suitable syntax checker is used.
+
+     A POSIX Shell syntax checker using the Bash shell.
+
+     See URL ‘http://www.gnu.org/software/bash/’(4).
+
+     See also
+.............
+
+     GNU Bash POSIX Mode(5), POSIX Shell Command Language(6)
+
+ -- Flycheck Syntax Checker: sh -zsh
+
+          Chained syntax checkers: The following syntax checkers are
+          *note chained: a0. after this syntax checker:
+
+            1. *note sh-shellcheck: 146, if there are no errors above
+               level ‘warning’
+
+          The *first* suitable syntax checker is used.
+
+     A Zsh syntax checker using the Zsh shell.
+
+     See URL ‘http://www.zsh.org/’(7).
+
+ -- Flycheck Syntax Checker: sh -shellcheck
+
+     A shell script syntax and style checker using Shellcheck.
+
+     See URL ‘https://github.com/koalaman/shellcheck/’(8).
+
+     Options
+............
+
+      -- User Option: flycheck -shellcheck-excluded-warnings
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate *note
+               flycheck-string-list-p: 99.
+
+          A list of excluded warnings for ShellCheck.
+
+          The value of this variable is a list of strings, where each
+          string is a warning code to be excluded from ShellCheck reports.
+          By default, no warnings are excluded.
+
+          This variable is an option for the syntax checker ‘`sh-shellcheck'’.
+
+          This user option was introduced, or its default value was
+          changed, in version 0.21 of the flycheck package.
+
+   ---------- Footnotes ----------
+
+   (1) http://www.gnu.org/software/bash/
+
+   (2) http://gondor.apana.org.au/~herbert/dash/
+
+   (3) 
+http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html
+
+   (4) http://www.gnu.org/software/bash/
+
+   (5) 
+http://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html#Bash-POSIX-Mode
+
+   (6) 
+http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html
+
+   (7) http://www.zsh.org/
+
+   (8) https://github.com/koalaman/shellcheck/
+
+\1f
+File: flycheck.info,  Node: Slim,  Next: TeX/LaTeX,  Prev: Shell script languages,  Up: Supported languages
+
+6.39 Slim
+=========
+
+ -- Flycheck Syntax Checker: slim
+
+     A Slim syntax checker using the Slim compiler.
+
+     See URL ‘http://slim-lang.com’(1).
+
+   ---------- Footnotes ----------
+
+   (1) http://slim-lang.com
+
+\1f
+File: flycheck.info,  Node: TeX/LaTeX,  Next: Texinfo,  Prev: Slim,  Up: Supported languages
+
+6.40 TeX/LaTeX
+==============
+
+See also
+........
+
+LaTeX(1), TeX Live(2)
+
+ -- Flycheck Syntax Checker: tex -chktex
+
+     A TeX and LaTeX syntax and style checker using chktex.
+
+     See URL ‘http://www.nongnu.org/chktex/’(3).
+
+     Configuration file
+.......................
+
+      -- User Option: flycheck -chktexrc
+
+               Variable properties: This variable is safe as a file
+               local variable if its value satisfies the predicate
+               ‘stringp’.
+
+          Configuration file for ‘`tex-chktex'’.
+
+ -- Flycheck Syntax Checker: tex -lacheck
+
+     A LaTeX syntax and style checker using lacheck.
+
+     See URL ‘http://www.ctan.org/pkg/lacheck’(4).
+
+   ---------- Footnotes ----------
+
+   (1) http://www.latex-project.org/
+
+   (2) http://www.tug.org/texlive/
+
+   (3) http://www.nongnu.org/chktex/
+
+   (4) http://www.ctan.org/pkg/lacheck
+
+\1f
+File: flycheck.info,  Node: Texinfo,  Next: Verilog,  Prev: TeX/LaTeX,  Up: Supported languages
+
+6.41 Texinfo
+============
+
+ -- Flycheck Syntax Checker: texinfo
+
+     A Texinfo syntax checker using makeinfo.
+
+     See URL ‘http://www.gnu.org/software/texinfo/’(1).
+
+   ---------- Footnotes ----------
+
+   (1) http://www.gnu.org/software/texinfo/
+
+\1f
+File: flycheck.info,  Node: Verilog,  Next: XML,  Prev: Texinfo,  Up: Supported languages
+
+6.42 Verilog
+============
+
+ -- Flycheck Syntax Checker: verilog -verilator
+
+     A Verilog syntax checker using the Verilator Verilog HDL simulator.
+
+     See URL ‘http://www.veripool.org/wiki/verilator’(1).
+
+   ---------- Footnotes ----------
+
+   (1) http://www.veripool.org/wiki/verilator
+
+\1f
+File: flycheck.info,  Node: XML,  Next: YAML,  Prev: Verilog,  Up: Supported languages
+
+6.43 XML
+========
+
+ -- Flycheck Syntax Checker: xml -xmlstarlet
+
+     A XML syntax checker and validator using the xmlstarlet utility.
+
+     See URL ‘http://xmlstar.sourceforge.net/’(1).
+
+ -- Flycheck Syntax Checker: xml -xmllint
+
+     A XML syntax checker and validator using the xmllint utility.
+
+     The xmllint is part of libxml2, see URL
+     ‘http://www.xmlsoft.org/’(2).
+
+   ---------- Footnotes ----------
+
+   (1) http://xmlstar.sourceforge.net/
+
+   (2) http://www.xmlsoft.org/
+
+\1f
+File: flycheck.info,  Node: YAML,  Prev: XML,  Up: Supported languages
+
+6.44 YAML
+=========
+
+ -- Flycheck Syntax Checker: yaml -jsyaml
+
+     A YAML syntax checker using JS-YAML.
+
+     See URL ‘https://github.com/nodeca/js-yaml’(1).
+
+ -- Flycheck Syntax Checker: yaml -ruby
+
+     A YAML syntax checker using Ruby’s YAML parser.
+
+     This syntax checker uses the YAML parser from Ruby’s standard
+     library.
+
+     See URL ‘http://www.ruby-doc.org/stdlib-2.0.0/libdoc/yaml/rdoc/YAML.html’(2).
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/nodeca/js-yaml
+
+   (2) http://www.ruby-doc.org/stdlib-2.0.0/libdoc/yaml/rdoc/YAML.html
+
+\1f
+File: flycheck.info,  Node: Glossary,  Next: Flycheck releases,  Prev: Supported languages,  Up: Top
+
+7 Glossary
+**********
+
+syntax checker
+
+     A symbol which is defined as syntax checker with *note
+     flycheck-define-checker: 19.
+
+registered syntax checker
+
+     A *note syntax checker: 64. available for automatic selection, i.e.
+     that is contained in *note flycheck-checkers: 5e.
+
+disabled syntax checker
+
+     A *note syntax checker: 64. explicitly excluded from available
+     selection, i.e.  that is contained in *note
+     flycheck-disabled-checkers: 5f.
+
+enabled syntax checker
+
+     A *note registered syntax checker: 60. which is not a *note
+     disabled syntax checker: 15f.
+
+suitable syntax checker
+
+     A *note syntax checker: 64. which can be used to check the current
+     buffer.  Precisely, a syntax checker which
+
+        - which can be used for the current major mode,
+
+        - and whose predicate succeeds,
+
+        - and whose syntax checker tool exists.
+
+chaining
+
+     In some languages, multiple *note syntax checkers: 64. can be
+     applied to a buffer.  In such a case, each syntax checker specifies
+     which checkers are to be used after it and when.  The result is a
+     “syntax checker chain”, specifying all syntax checkers to be
+     applied to the buffer.
+
+     For instance, Haskell buffers are first checked with GHC for syntax
+     and type errors, and then with ‘hlint’ for idiomatic and semantic
+     mistakes.  Hence, the syntax checker chain consists of *note
+     haskell-ghc: eb. and *note haskell-hlint: ec.
+
+\1f
+File: flycheck.info,  Node: Flycheck releases,  Next: Extending Flycheck,  Prev: Glossary,  Up: Top
+
+8 Flycheck releases
+*******************
+
+This document contains the release announcements for Flycheck, and the
+complete changelog.
+
+* Menu:
+
+* Release announcements:: 
+* Changelog:: 
+
+\1f
+File: flycheck.info,  Node: Release announcements,  Next: Changelog,  Up: Flycheck releases
+
+8.1 Release announcements
+=========================
+
+* Menu:
+
+* Flycheck 0.22: Flycheck 0 22. 
+* Flycheck 0.21: Flycheck 0 21. 
+* Flycheck 0.20: Flycheck 0 20. 
+* Flycheck 0.19: Flycheck 0 19. 
+* Flycheck 0.18: Flycheck 0 18. 
+* Flycheck 0.17: Flycheck 0 17. 
+* Flycheck 0.16: Flycheck 0 16. 
+* Flycheck 0.15: Flycheck 0 15. 
+
+\1f
+File: flycheck.info,  Node: Flycheck 0 22,  Next: Flycheck 0 21,  Up: Release announcements
+
+8.1.1 Flycheck 0.22
+-------------------
+
+
+date: Dec 23, 2014
+
+
+version: 0.22
+
+Flycheck 0.22 comes with some major new features, most notably generic
+syntax checkers and many improvements and bug fixes.  Unfortunately,
+some of these changes break backwards compatibility.
+
+This announcement covers the most important changes.  For details,
+please refer to the *note Changelog: 165.
+
+* Menu:
+
+* Breaking changes:: 
+* Setup: Setup<2>. 
+* Language support:: 
+* Syntax checking improvements:: 
+* Error list improvements:: 
+* Generic syntax checkers:: 
+* Error IDs:: 
+* Unit test library for Flycheck:: 
+
+\1f
+File: flycheck.info,  Node: Breaking changes,  Next: Setup<2>,  Up: Flycheck 0 22
+
+8.1.1.1 Breaking changes
+........................
+
+     Warning: The addition of generic syntax checkers lead to some
+     breaking changes to the internals of syntax checker definitions.
+     Due to the way macros work in Emacs Lisp *all packages depending on
+     Flycheck* must be recompiled after upgrading to Flycheck 0.22!
+
+     We hope that this will be the last breaking change of this kind,
+     since the definition of syntax checkers is now wrapped into
+     functions, and the *note flycheck-define-checker: 19. macro just
+     provides some syntactic sugar for definitions.
+
+Error parsers must explicitly set *note flycheck-error buffer: 167. and
+*note flycheck-error checker: 168. of new *note flycheck-error: 169.
+objects now.  This is another consequence of generic syntax checkers.
+
+‘flycheck-perlcritic-verbosity’ and ‘flycheck-copy-messages-as-kill’ are
+obsolete now, in favour of *note flycheck-perlcritic-severity: 10a. and
+*note flycheck-copy-errors-as-kill: 85. respectively.
+‘flycheck-google-messages’ has been removed completely.
+
+*note flycheck-select-checker: 24. cannot select disabled syntax
+checkers anymore.
+
+Syntax checker options and configuration file variables are not
+buffer-local anymore, with some exceptions.  Consequently you can now
+use ‘setq’ to set their global value, and you *must* use ‘setq-local’ to
+set them locally.  Variables set via file or directory variables are not
+affected by this change.
+
+\1f
+File: flycheck.info,  Node: Setup<2>,  Next: Language support,  Prev: Breaking changes,  Up: Flycheck 0 22
+
+8.1.1.2 Setup
+.............
+
+The new *note flycheck-verify-setup: 5a. command provides information
+about all applicable syntax checkers, and lists potential problems.  It
+is intended to help you uncover issues in your Flycheck setup.
+
+\1f
+File: flycheck.info,  Node: Language support,  Next: Syntax checking improvements,  Prev: Setup<2>,  Up: Flycheck 0 22
+
+8.1.1.3 Language support
+........................
+
+* Menu:
+
+* Ada: Ada<2>. 
+* C/C++: C/C++<2>. 
+* Emacs Lisp: Emacs Lisp<2>. 
+* Haskell: Haskell<2>. 
+* Fortran: Fortran<2>. 
+* Python: Python<2>. 
+* Rust: Rust<2>. 
+* TeX/LaTeX: TeX/LaTeX<2>. 
+
+\1f
+File: flycheck.info,  Node: Ada<2>,  Next: C/C++<2>,  Up: Language support
+
+8.1.1.4 Ada
+...........
+
+The new option *note flycheck-gnat-args: 97. allows to pass arbitrary
+arguments to *note ada-gnat: 96.
+
+\1f
+File: flycheck.info,  Node: C/C++<2>,  Next: Emacs Lisp<2>,  Prev: Ada<2>,  Up: Language support
+
+8.1.1.5 C/C++
+.............
+
+Flycheck now correctly computes the error level from errors in included
+files.  Messages of errors in included files are now discarded to reduce
+the verbosity of error reporting.
+
+The new options *note flycheck-clang-args: a2. and *note
+flycheck-gcc-args: ad. allow to pass arbitrary arguments to *note
+c/c++-clang: 9f. and *note c/c++-gcc: ac. respectively.
+
+\1f
+File: flycheck.info,  Node: Emacs Lisp<2>,  Next: Haskell<2>,  Prev: C/C++<2>,  Up: Language support
+
+8.1.1.6 Emacs Lisp
+..................
+
+The new ‘inherit’ value for *note flycheck-emacs-lisp-load-path: d0.
+automates ‘load-path’ inheritance for the *note emacs-lisp: cd. syntax
+checker.  If you have the following in your init file
+
+     (setq-default flycheck-emacs-lisp-load-path load-path)
+
+please replace it with:
+
+     (setq flycheck-emacs-lisp-load-path 'inherit)
+
+As a consequence of this change you can now enable ‘load-path’
+inheritance via customize.
+
+\1f
+File: flycheck.info,  Node: Haskell<2>,  Next: Fortran<2>,  Prev: Emacs Lisp<2>,  Up: Language support
+
+8.1.1.7 Haskell
+...............
+
+The *note haskell-ghc: eb. syntax checker supports literate Haskell now.
+
+The new option *note flycheck-ghc-args: ed. allows to pass arbitrary
+arguments to *note haskell-ghc: eb.
+
+\1f
+File: flycheck.info,  Node: Fortran<2>,  Next: Python<2>,  Prev: Haskell<2>,  Up: Language support
+
+8.1.1.8 Fortran
+...............
+
+The new option *note flycheck-gfortran-args: d9. allows to pass
+arbitrary arguments to *note fortran-gfortran: d8.
+
+\1f
+File: flycheck.info,  Node: Python<2>,  Next: Rust<2>,  Prev: Fortran<2>,  Up: Language support
+
+8.1.1.9 Python
+..............
+
+The new syntax checker *note python-pycompile: 11c. uses the built-in
+byte compiler of Python to check a buffer for syntax errors.  It is
+provided as a last resort for basic syntax checking of Python code, if
+neither pylint nor flake8 are installed.
+
+The error levels of *note python-flake8: 115. can now be customized via
+*note flycheck-flake8-error-level-alist: 116.  The default value handles
+the standard plugins of flake8, and the 3rd party pep8-naming plugin.
+You can add custom patterns to this option to add support for other
+flake8 plugins.
+
+*note python-pylint: 11a. now has correct error columns.
+
+\1f
+File: flycheck.info,  Node: Rust<2>,  Next: TeX/LaTeX<2>,  Prev: Python<2>,  Up: Language support
+
+8.1.1.10 Rust
+.............
+
+The *note rust: 133. parses help messages to ‘info’-level errors now.
+
+\1f
+File: flycheck.info,  Node: TeX/LaTeX<2>,  Prev: Rust<2>,  Up: Language support
+
+8.1.1.11 TeX/LaTeX
+..................
+
+*note tex-chktex: 14f. now has correct error columns as well.
+
+\1f
+File: flycheck.info,  Node: Syntax checking improvements,  Next: Error list improvements,  Prev: Language support,  Up: Flycheck 0 22
+
+8.1.1.12 Syntax checking improvements
+.....................................
+
+Flycheck now parses errors faster, because it does not longer access the
+file system to check the file of each parsed errors, and it protects
+against excessive error reporting by automatically disabling syntax
+checkers that try to report too many errors.  The threshold is
+customizable via the new *note flycheck-checker-error-threshold: 71.
+option.
+
+\1f
+File: flycheck.info,  Node: Error list improvements,  Next: Generic syntax checkers,  Prev: Syntax checking improvements,  Up: Flycheck 0 22
+
+8.1.1.13 Error list improvements
+................................
+
+The error list now shows errors IDs for syntax checkers that emit these.
+
+Typing ‘g’ in the error list will re-check the source buffer, and
+refresh the error list afterwards.
+
+\1f
+File: flycheck.info,  Node: Generic syntax checkers,  Next: Error IDs,  Prev: Error list improvements,  Up: Flycheck 0 22
+
+8.1.1.14 Generic syntax checkers
+................................
+
+Flycheck now supports “generic” syntax checkers, which call arbitrary
+synchronous or asynchronous Emacs Lisp functions to check a buffer.  The
+new function *note flycheck-define-generic-checker: 1b. defines a new
+generic syntax checker which calls a given function to conduct a syntax
+check.
+
+Syntax checkers for external commands are now called “command syntax
+checkers”, and implemented as a special kind of generic syntax checkers.
+*note flycheck-define-checker: 19. still defines a command syntax
+checker.  The new function *note flycheck-define-command-checker: 177.
+is a non-macro variant of *note flycheck-define-generic-checker: 1b.
+
+\1f
+File: flycheck.info,  Node: Error IDs,  Next: Unit test library for Flycheck,  Prev: Generic syntax checkers,  Up: Flycheck 0 22
+
+8.1.1.15 Error IDs
+..................
+
+Syntax checkers can now add “IDs” to errors, which shall uniquely
+identify a particular kind of error.  These IDs are used by Flycheck and
+Flycheck extensions to identify errors, particularly in future
+extensions such as error fixers.
+
+The new ‘id’ form for error patterns allows to parse IDs.  Error parsers
+and generic syntax checkers can set the *note flycheck-error id: 179.
+slot to add IDs.  The *note flycheck-parse-checkstyle: 17a. parser
+automatically adds IDs from the ‘source’ attribute of errors.
+
+The new error filters *note flycheck-dequalify-error-ids: 17b. and *note
+flycheck-remove-error-ids: 17c. manipulate IDs of parsed errors.  The
+former removes qualifications from error IDs, turning ‘Foo.Bar.E1’ into
+‘E1’.  The latter completely removes error IDs from parsed errors, for
+use in cases where the syntax checker only outputs bogus IDs.
+
+All built-in syntax checkers were updated to parse IDs, if possible.
+
+The error list now shows these IDs, and *note
+flycheck-copy-errors-as-kill: 85. can put them into the kill ring.
+
+\1f
+File: flycheck.info,  Node: Unit test library for Flycheck,  Prev: Error IDs,  Up: Flycheck 0 22
+
+8.1.1.16 Unit test library for Flycheck
+.......................................
+
+The new library ‘flycheck-ert’ provides assertions and utilities to
+write unit tests for Flycheck syntax checkers.  The library is part of
+all Flycheck packages.
+
+3rd party extensions may use this library to write test cases for their
+syntax checkers.  *note Flycheck ERT API: 17e. documents the interface
+of this library.
+
+\1f
+File: flycheck.info,  Node: Flycheck 0 21,  Next: Flycheck 0 20,  Prev: Flycheck 0 22,  Up: Release announcements
+
+8.1.2 Flycheck 0.21
+-------------------
+
+
+date: Oct 26, 2014
+
+
+version: 0.21
+
+Flycheck 0.21 is out, with new syntax checkers, many new options,
+improvements and bug fixes, and some important breaking changes.
+
+This announcement covers the most important changes.  For details,
+please refer to the *note Changelog: 165.
+
+* Menu:
+
+* Breaking changes: Breaking changes<2>. 
+* Language support: Language support<2>. 
+* Error list changes:: 
+* Error navigation and display:: 
+* Syntax checker definition and extension:: 
+* Obtaining the new release:: 
+
+\1f
+File: flycheck.info,  Node: Breaking changes<2>,  Next: Language support<2>,  Up: Flycheck 0 21
+
+8.1.2.1 Breaking changes
+........................
+
+     Warning: The value of the ‘:next-checkers’ property changed in a
+     backwards-incompatible way.  The custom symbols ‘no-errors’ and
+     ‘warnings-only’ are gone.  Instead the first item of each cons cell
+     is the _maximum permissible error level_ now.  For instance,
+     ‘:next-checkers ((no-errors . foo))’ now becomes ‘:next-checkers
+     ((warning . foo))’.  Please update all your syntax checker
+     definitions accordingly.
+
+The *note html-tidy: f4. syntax checker does not check Web Mode buffers
+anymore, because will frequently contain strictly invalid HTML.
+
+The *note d-dmd: c7. syntax checker requires DMD 2.066 or newer now, to
+add columns to error locations.
+
+The error list highlights all errors at the current line now.
+Highlighting of errors at point, i.e.  the
+‘flycheck-error-list-highlight-at-point’ face and related functionality,
+was removed, because it would frequently cause odd and confusing
+highlighting.
+
+\1f
+File: flycheck.info,  Node: Language support<2>,  Next: Error list changes,  Prev: Breaking changes<2>,  Up: Flycheck 0 21
+
+8.1.2.2 Language support
+........................
+
+Flycheck now supports the Coq proof language and RPM spec files with the
+new syntax checkers *note coq: c3. and *note rpm-rpmlint: 125.
+respectively.
+
+* Menu:
+
+* C/C++: C/C++<3>. 
+* D: D<2>. 
+* Go: Go<2>. 
+* HTML: HTML<2>. 
+* Less:: 
+* Shell scripts:: 
+
+\1f
+File: flycheck.info,  Node: C/C++<3>,  Next: D<2>,  Up: Language support<2>
+
+8.1.2.3 C/C++
+.............
+
+The new *note flycheck-gcc-openmp: b4. enables OpenMP for the *note
+c/c++-gcc: ac. checker to suppress warnings about OpenMP pragmas.
+
+The *note c/c++-gcc: ac. expands templates during syntax checks now.
+
+The *note c/c++-clang: 9f. syntax checker now handles empty messages
+from ‘#error’ and ‘#warning’ pragmas correctly.
+
+\1f
+File: flycheck.info,  Node: D<2>,  Next: Go<2>,  Prev: C/C++<3>,  Up: Language support<2>
+
+8.1.2.4 D
+.........
+
+The *note d-dmd: c7. syntax checker reports columns now, making error
+locations more precise.  This requires DMD 2.066.  Support for earlier
+DMD versions was dropped.
+
+\1f
+File: flycheck.info,  Node: Go<2>,  Next: HTML<2>,  Prev: D<2>,  Up: Language support<2>
+
+8.1.2.5 Go
+..........
+
+*note go-errcheck: e4. now handles packages correctly, fixing many
+faulty warnings.
+
+\1f
+File: flycheck.info,  Node: HTML<2>,  Next: Less,  Prev: Go<2>,  Up: Language support<2>
+
+8.1.2.6 HTML
+............
+
+*note html-tidy: f4. does not check Web Mode buffers anymore.
+
+\1f
+File: flycheck.info,  Node: Less,  Next: Shell scripts,  Prev: HTML<2>,  Up: Language support<2>
+
+8.1.2.7 Less
+............
+
+*note less: 101. now correctly resolves relative paths in ‘data-uri’.
+
+\1f
+File: flycheck.info,  Node: Shell scripts,  Prev: Less,  Up: Language support<2>
+
+8.1.2.8 Shell scripts
+.....................
+
+The new *note flycheck-shellcheck-excluded-warnings: 14a. allows to
+exclude specific warnings from reports of the *note sh-shellcheck: 146.
+checker.
+
+In a related change, *note sh-shellcheck: 146. now includes the warning
+code into all reported errors, which makes it easier to set *note
+flycheck-shellcheck-excluded-warnings: 14a. accordingly.
+
+\1f
+File: flycheck.info,  Node: Error list changes,  Next: Error navigation and display,  Prev: Language support<2>,  Up: Flycheck 0 21
+
+8.1.2.9 Error list changes
+..........................
+
+The error list at *note flycheck-list-errors: 4b. was refined and fixed:
+
+   - Mouse support is restored: You can now click onto error messages
+     again, to navigate to the error source.
+
+   - When navigating inside the error list with ‘n’ or ‘p’, the error
+     list does not randomly alter the point position anymore.
+
+   - The syntax checker name now appears in a separate column.  The
+     appearance of this column can be customized with new face :face:
+     ‘flycheck-error-list-checker-name’.
+
+   - Errors can be sorted by syntax checker name and message now.
+
+   - The new hook *note flycheck-error-list-after-refresh-hook: 7e. now
+     runs every time the error list was refreshed.
+
+   - The error list does not highlight errors at point separately
+     anymore, to avoid confusing highlighting.
+
+\1f
+File: flycheck.info,  Node: Error navigation and display,  Next: Syntax checker definition and extension,  Prev: Error list changes,  Up: Flycheck 0 21
+
+8.1.2.10 Error navigation and display
+.....................................
+
+The new option *note flycheck-navigation-minimum-level: 8a. allows to
+skip errors of specific error levels in error navigation, i.e.  ‘M-g n’
+or ‘C-c ! n’.  Errors of levels below the value of this new option are
+still shown in the buffer and in the error list, but they are skipped in
+any of the navigation commands.
+
+The new function *note
+flycheck-display-error-messages-unless-error-list: 7a. shows messages of
+the errors at point in the echo area, but only if the error list is
+_not_ visible.  Use this function for *note
+flycheck-display-errors-function: 2b. to make use of this feature.
+
+\1f
+File: flycheck.info,  Node: Syntax checker definition and extension,  Next: Obtaining the new release,  Prev: Error navigation and display,  Up: Flycheck 0 21
+
+8.1.2.11 Syntax checker definition and extension
+................................................
+
+The ‘:next-checkers’ property requires a maximum permissible error level
+now.  The custom predicates ‘no-errors’ and ‘warnings-only’ are gone.
+
+Syntax checker definitions can use the new ‘null-device’ symbol to add
+the name of the system null device (e.g.  ‘/dev/null’ on Unix, ‘NUL’ on
+Windows) to the syntax checker arguments.  Typically, this would be used
+to ignore files generated by the syntax checker.  See the definition of
+the *note c/c++-gcc: ac. syntax checker for an example.
+
+The new function *note flycheck-add-mode: 18c. adds major modes to
+existing syntax checkers, by extending the ‘:modes’ property.
+
+\1f
+File: flycheck.info,  Node: Obtaining the new release,  Prev: Syntax checker definition and extension,  Up: Flycheck 0 21
+
+8.1.2.12 Obtaining the new release
+..................................
+
+Follow the *note installation instructions: 33.  If you already have
+Flycheck installed, just update it from ‘M-x list-packages’.
+
+\1f
+File: flycheck.info,  Node: Flycheck 0 20,  Next: Flycheck 0 19,  Prev: Flycheck 0 21,  Up: Release announcements
+
+8.1.3 Flycheck 0.20
+-------------------
+
+
+date: Aug 12, 2014
+
+
+version: 0.20
+
+Flycheck 0.20 is out, with new syntax checkers, many new options,
+improvements and bug fixes, and some important breaking changes.
+
+This announcement covers the most important changes.  For details,
+please refer to the *note Changelog: 165.
+
+* Menu:
+
+* Breaking changes: Breaking changes<3>. 
+* Language support: Language support<3>. 
+* Error list improvements: Error list improvements<2>. 
+* User interface improvements:: 
+* Miscellaneous new features:: 
+* Miscellaneous fixes:: 
+* Get it:: 
+
+\1f
+File: flycheck.info,  Node: Breaking changes<3>,  Next: Language support<3>,  Up: Flycheck 0 20
+
+8.1.3.1 Breaking changes
+........................
+
+     Warning: The internals of syntax checker definitions changed in a
+     backwards-incompatible way.  Due to the way macros work in Emacs
+     Lisp *all packages depending on Flycheck* must be recompiled after
+     upgrading to Flycheck 0.20!
+
+Furthermore, the special meaning of a trailing equals sign in ‘(config
+…)’ and ‘(config-file …)’ is removed.  Syntax checker definitions now
+need to explicitly specify a function to concatenate the option and its
+arguments.  ‘(option "--foo=" foo)’ now becomes ‘(option "--foo=" foo
+concat)’.
+
+As a consequence of this change, the position of the ‘filter’ in
+‘(option …)’ changed.  The ‘filter’ is now in the *forth* element.
+Hence, ‘(option "--foo" foo flycheck-option-int)’ now becomes ‘(option
+"--foo" foo nil flycheck-option-int)’.
+
+\1f
+File: flycheck.info,  Node: Language support<3>,  Next: Error list improvements<2>,  Prev: Breaking changes<3>,  Up: Flycheck 0 20
+
+8.1.3.2 Language support
+........................
+
+Flycheck now supports Ada and Fortran with *note ada-gnat: 96. and *note
+fortran-gfortran: d8. respectively.
+
+* Menu:
+
+* C/C++: C/C++<4>. 
+* Rust: Rust<3>. 
+* Scala: Scala<2>. 
+* Sass/SCSS:: 
+* Javascript: Javascript<2>. 
+* Ruby: Ruby<2>. 
+
+\1f
+File: flycheck.info,  Node: C/C++<4>,  Next: Rust<3>,  Up: Language support<3>
+
+8.1.3.3 C/C++
+.............
+
+C/C++ can now be checked with GCC (*note c/c++-gcc: ac.) as an
+alternative to Clang.  GCC supports the same options as Clang, with the
+exception of *note flycheck-clang-blocks: a3.
+
+The Clang syntax checker now supports the Clang block syntax with the
+new option *note flycheck-clang-blocks: a3, and allows to disable
+exceptions with *note flycheck-clang-no-exceptions: a9.
+
+Furthermore, temporary files for the Clang syntax checker are now
+created in the system temporary directory.
+
+\1f
+File: flycheck.info,  Node: Rust<3>,  Next: Scala<2>,  Prev: C/C++<4>,  Up: Language support<3>
+
+8.1.3.4 Rust
+............
+
+Support for Rust creates is greatly improved.  You can now specify the
+type of crate to check with ‘flycheck-rust-crate-type’, and the root
+file of the crate with ‘flycheck-rust-crate-root’.  The former avoids
+redundant warnings due to unused code, and the latter helps to resolve
+relative module references.
+
+Flycheck also parses info messages from Rust now.
+
+\1f
+File: flycheck.info,  Node: Scala<2>,  Next: Sass/SCSS,  Prev: Rust<3>,  Up: Language support<3>
+
+8.1.3.5 Scala
+.............
+
+Flycheck now supports Scalastyle(1) with *note scala-scalastyle: 13e.
+
+   ---------- Footnotes ----------
+
+   (1) http://www.scalastyle.org/
+
+\1f
+File: flycheck.info,  Node: Sass/SCSS,  Next: Javascript<2>,  Prev: Scala<2>,  Up: Language support<3>
+
+8.1.3.6 Sass/SCSS
+.................
+
+*note sass: 13a. and *note scss: 142. now use a temporary directory for
+their cache and do not clutter the source directory anymore.
+
+\1f
+File: flycheck.info,  Node: Javascript<2>,  Next: Ruby<2>,  Prev: Sass/SCSS,  Up: Language support<3>
+
+8.1.3.7 Javascript
+..................
+
+*note flycheck-eslintrc: fb. is now ‘nil’ by default.  ESLint(1) will
+now find its configuration file by itself, which enables configuration
+cascading.  See Configuring ESLint(2) for more information.
+
+   ---------- Footnotes ----------
+
+   (1) http://eslint.org/
+
+   (2) http://eslint.org/docs/configuring/
+
+\1f
+File: flycheck.info,  Node: Ruby<2>,  Prev: Javascript<2>,  Up: Language support<3>
+
+8.1.3.8 Ruby
+............
+
+*note ruby-rubylint: 12c. now supports configuration files with *note
+flycheck-rubylintrc: 12f.  This requires ruby-lint 2.0.2 or newer.
+
+\1f
+File: flycheck.info,  Node: Error list improvements<2>,  Next: User interface improvements,  Prev: Language support<3>,  Up: Flycheck 0 20
+
+8.1.3.9 Error list improvements
+...............................
+
+The error list (*note flycheck-list-errors: 4b.) got a bunch of
+improvements:
+
+   - Errors can now be sorted by error level and by error location,
+     either by clicking on the headers of ‘line’ and ‘level’
+     respectively, or by pressing ‘S’ when the point is on the text of
+     the corresponding column.
+
+   - Pressing ‘RET’ on any error in the error list now jumps immediately
+     to the error location.
+
+   - ‘n’ and ‘p’ now move by errors instead by lines, even with
+     multi-line error messages, and display the error location in
+     another window while navigating.
+
+\1f
+File: flycheck.info,  Node: User interface improvements,  Next: Miscellaneous new features,  Prev: Error list improvements<2>,  Up: Flycheck 0 20
+
+8.1.3.10 User interface improvements
+....................................
+
+The mode line indicator of Flycheck is now customizable with *note
+flycheck-mode-line: 8e, which is a mode line template (see *note
+(elisp)Mode Line Format::).  The mode line of the error list buffer is
+customizable as well, with ‘flycheck-error-list-mode-line’.
+
+The Flycheck menu at _Tools -> Syntax Checking_ was improved.  It now
+provides an item to toggle Flycheck Mode in the current buffer.  Items
+that are not available currently are now disabled.  The menu is also
+shown on the mode line indicator now.
+
+*note flycheck-compile: 19c. now prompts for a syntax checker to use,
+defaulting to the last used for the current buffer.
+
+When Flycheck asks for a syntax checker in the minibuffer, it now
+presents a reasonable default.
+
+\1f
+File: flycheck.info,  Node: Miscellaneous new features,  Next: Miscellaneous fixes,  Prev: User interface improvements,  Up: Flycheck 0 20
+
+8.1.3.11 Miscellaneous new features
+...................................
+
+The new hook *note flycheck-status-changed-functions: 19e. lets
+extensions and customization react on any status change in Flycheck.
+
+Error levels defined with ‘flycheck-define-error-level’ can now have a
+numeric severity used for sorting, with ‘:severity’.
+
+\1f
+File: flycheck.info,  Node: Miscellaneous fixes,  Next: Get it,  Prev: Miscellaneous new features,  Up: Flycheck 0 20
+
+8.1.3.12 Miscellaneous fixes
+............................
+
+Flycheck now properly unloads with ‘unload-feature’.
+
+The *note emacs-lisp: cd. checker does not longer choke when
+‘package-initialize’ signals an error.
+
+\1f
+File: flycheck.info,  Node: Get it,  Prev: Miscellaneous fixes,  Up: Flycheck 0 20
+
+8.1.3.13 Get it
+...............
+
+Follow the *note installation instructions: 33.  If you already have
+Flycheck installed, just update it from ‘M-x list-packages’.
+
+\1f
+File: flycheck.info,  Node: Flycheck 0 19,  Next: Flycheck 0 18,  Prev: Flycheck 0 20,  Up: Release announcements
+
+8.1.4 Flycheck 0.19
+-------------------
+
+
+date: Jun 12, 2014
+
+
+version: 0.19
+
+We are pleased to announce the release of Flycheck 0.19.
+
+* Menu:
+
+* Breaking changes: Breaking changes<4>. 
+* Languages:: 
+* New features:: 
+* Bug fixes:: 
+* Misc changes:: 
+* Get it: Get it<2>. 
+
+\1f
+File: flycheck.info,  Node: Breaking changes<4>,  Next: Languages,  Up: Flycheck 0 19
+
+8.1.4.1 Breaking changes
+........................
+
+*note ruby-rubylint: 12c. requires Ruby Lint 2.0 or newer, due to some
+breaking changes in the command line interface of Ruby Lint.
+
+\1f
+File: flycheck.info,  Node: Languages,  Next: New features,  Prev: Breaking changes<4>,  Up: Flycheck 0 19
+
+8.1.4.2 Languages
+.................
+
+* Menu:
+
+* C/C++: C/C++<5>. 
+* Emacs Lisp: Emacs Lisp<3>. 
+* Go: Go<3>. 
+* Haskell: Haskell<3>. 
+* Rust: Rust<4>. 
+
+\1f
+File: flycheck.info,  Node: C/C++<5>,  Next: Emacs Lisp<3>,  Up: Languages
+
+8.1.4.3 C/C++
+.............
+
+The new *note flycheck-cppcheck-inconclusive: b7. enables *note
+c/c++-cppcheck: a1. tests that might yield false positives.
+
+When reporting errors in included files, *note c/c++-clang: 9f. now
+includes the error messages in the faulty include file in the error
+message on the affected ‘#include’ statement.
+
+\1f
+File: flycheck.info,  Node: Emacs Lisp<3>,  Next: Go<3>,  Prev: C/C++<5>,  Up: Languages
+
+8.1.4.4 Emacs Lisp
+..................
+
+Flycheck now removes redundant whitespace in the error messages reported
+by the *note emacs-lisp: cd. syntax checker.
+
+\1f
+File: flycheck.info,  Node: Go<3>,  Next: Haskell<3>,  Prev: Emacs Lisp<3>,  Up: Languages
+
+8.1.4.5 Go
+..........
+
+Go code is now checked for unhandled error return values with the new
+*note go-errcheck: e4. syntax checker.
+
+Flycheck does not longer signal errors in Go Mode, when the ‘go’
+executable is not available.
+
+\1f
+File: flycheck.info,  Node: Haskell<3>,  Next: Rust<4>,  Prev: Go<3>,  Up: Languages
+
+8.1.4.6 Haskell
+...............
+
+Flycheck now dedents the error messages reported by *note haskell-ghc:
+eb, and properly checks Haskell files without extensions.
+
+\1f
+File: flycheck.info,  Node: Rust<4>,  Prev: Haskell<3>,  Up: Languages
+
+8.1.4.7 Rust
+............
+
+*note rust: 133. has a new *note flycheck-rust-check-tests: 134. option,
+to disable syntax checking of test code.
+
+\1f
+File: flycheck.info,  Node: New features,  Next: Bug fixes,  Prev: Languages,  Up: Flycheck 0 19
+
+8.1.4.8 New features
+....................
+
+Syntax checkers may now use the ‘:error-filter’ argument to *note
+flycheck-define-checker: 19. to apply a function to all errors after
+parsing.  The function is given the list of parsed errors, and shall
+return the list of errors that Flycheck is to use as the result of the
+syntax checker.  It may modify the list and all error objects therein
+in-place.
+
+The new option *note flycheck-keymap-prefix: 50. lets you change the
+prefix key used by Flycheck.  The default is still ‘C-c !’.
+
+     Warning: The Flycheck manual assumes that you are using the default
+     prefix key.  You are encouraged to leave the prefix key unchanged,
+     and instead add your own custom bindings to the Flycheck key map:
+
+          (eval-after-load 'flycheck
+            '(define-key flycheck-mode-map (kbd "<f8>") #'flycheck-list-errors))
+
+Likewise, you now can configure the prefix of in-place temporary files
+created by Flycheck with *note flycheck-temp-prefix: 5b.
+
+     Warning: Changing the prefix may break syntax checkers.  In doubt,
+     stick to the default prefix.
+
+\1f
+File: flycheck.info,  Node: Bug fixes,  Next: Misc changes,  Prev: New features,  Up: Flycheck 0 19
+
+8.1.4.9 Bug fixes
+.................
+
+Flycheck now correctly kills running process and removes the temporary
+files when stopping a syntax check or killing the buffer.
+
+Also, Flycheck does not long warn if a syntax checker only reports
+errors for other files.
+
+\1f
+File: flycheck.info,  Node: Misc changes,  Next: Get it<2>,  Prev: Bug fixes,  Up: Flycheck 0 19
+
+8.1.4.10 Misc changes
+.....................
+
+Flycheck now has an official logo, and its own mail address.  You can
+see both on the Github profile(1) of the Flycheck project.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/
+
+\1f
+File: flycheck.info,  Node: Get it<2>,  Prev: Misc changes,  Up: Flycheck 0 19
+
+8.1.4.11 Get it
+...............
+
+See *note Installation: 31.
+
+\1f
+File: flycheck.info,  Node: Flycheck 0 18,  Next: Flycheck 0 17,  Prev: Flycheck 0 19,  Up: Release announcements
+
+8.1.5 Flycheck 0.18
+-------------------
+
+
+date: Mar 24, 2014
+
+
+version: 0.18
+
+Today, we release Flycheck 0.18.
+
+It’s quite some time since the last release, but there are not many big
+changes, as Flycheck becomes more and more mature, and slowly approaches
+a 1.0 release.
+
+* Menu:
+
+* Breaking changes: Breaking changes<5>. 
+* Syntax checkers: Syntax checkers<2>. 
+* Bug fixes: Bug fixes<2>. 
+* Get it: Get it<3>. 
+
+\1f
+File: flycheck.info,  Node: Breaking changes<5>,  Next: Syntax checkers<2>,  Up: Flycheck 0 18
+
+8.1.5.1 Breaking changes
+........................
+
+There are some small breaking changes.  Most notably, the naming
+conventions of various shell script syntax checkers were changed.  All
+of them now use the prefix ‘sh-’, and the former ‘sh-’ checkers now have
+the prefix ‘sh-posix-’.  This affects their executable variables as
+well.
+
+Furthermore, the version requirements for some syntax checker tools
+changed:
+
+   - *note rust: 133. needs upcoming Rust 0.10 now, because Flycheck
+     followed backwards-incompatible upstream changes in the ‘rustc’
+     options.
+
+   - *note rst-sphinx: 128. needs Sphinx 1.2 now, because Flycheck uses
+     a special writer now, which is not present in previous releases.
+
+\1f
+File: flycheck.info,  Node: Syntax checkers<2>,  Next: Bug fixes<2>,  Prev: Breaking changes<5>,  Up: Flycheck 0 18
+
+8.1.5.2 Syntax checkers
+.......................
+
+Flycheck can now check BSD Makefile with BSD Make as well.  The *note
+make: 105. syntax checker does not use GNU Make specific options
+anymore, and will work with any POSIX compatible variant of Make.
+
+Go syntax checking got a major update with new syntax checkers based on
+Golint(1) (*note go-golint: e0.) and ‘go tool vet’ (*note go-vet: e1.).
+Go now has one of the most complete and powerful syntax checker chains
+in Flycheck.
+
+Support for Perl and for shell scripts was greatly improved by
+introducing two new syntax checkers:
+
+   - *note perl-perlcritic: 109. checks Perl with the powerful
+     Perl-Critic(2) tool.
+
+   - *note sh-shellcheck: 146. checks Shell scripts with the awesome
+     Shellcheck(3) tool, which finds all sorts of idiomatic and
+     semantics mistakes in shell scripts of various shell languages, and
+     will greatly improve your shell scripting.
+
+D users can now tell *note d-dmd: c7. about include directories with the
+new option *note flycheck-dmd-include-path: c8.  Likewise, Rust users
+can use *note flycheck-rust-library-path: 137. now.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/golang/lint
+
+   (2) https://metacpan.org/pod/Perl::Critic
+
+   (3) https://github.com/koalaman/shellcheck
+
+\1f
+File: flycheck.info,  Node: Bug fixes<2>,  Next: Get it<3>,  Prev: Syntax checkers<2>,  Up: Flycheck 0 18
+
+8.1.5.3 Bug fixes
+.................
+
+As always, a good deal of bugs and issues was fixed:
+
+   - *note puppet-lint: 113. includes the name of the corresponding
+     check in the error message now.
+
+   - *note rst: 127. handles ‘.. include::’ directives with relative
+     file names now.
+
+   - *note rst-sphinx: 128. will no longer choke if the document being
+     checked contains custom nodes without ‘text’ writers.
+
+   - *note rust: 133. will not longer emit pointless warnings about
+     missing ‘main’ functions in library creates.
+
+   - Various error parsing problems were corrected in *note c/c++-clang:
+     9f, *note go-build: e2. and *note go-test: e3.
+
+\1f
+File: flycheck.info,  Node: Get it<3>,  Prev: Bug fixes<2>,  Up: Flycheck 0 18
+
+8.1.5.4 Get it
+..............
+
+See *note Installation: 31.
+
+\1f
+File: flycheck.info,  Node: Flycheck 0 17,  Next: Flycheck 0 16,  Prev: Flycheck 0 18,  Up: Release announcements
+
+8.1.6 Flycheck 0.17
+-------------------
+
+
+date: Feb 1, 2014
+
+
+version: 0.17
+
+Flycheck 0.17 was released today.  Though it’s just about two weeks
+since the last release, there are quite some changes.
+
+* Menu:
+
+* Breaking changes: Breaking changes<6>. 
+* New online manual:: 
+* Syntax checkers: Syntax checkers<3>. 
+* Extending syntax checkers:: 
+* Other bug fixes and improvements:: 
+
+\1f
+File: flycheck.info,  Node: Breaking changes<6>,  Next: New online manual,  Up: Flycheck 0 17
+
+8.1.6.1 Breaking changes
+........................
+
+The default value of *note flycheck-completion-system: 65. was changed
+to ‘nil’, i.e.  Flycheck now uses plain ‘completing-read’ as default
+completion system.  To restore the previous default (i.e.  IDO),
+customize it with ‘M-x customize-variable RET
+flycheck-completion-system’ or add the following to your ‘init.el’:
+
+     (eval-after-load 'flycheck '(setq flycheck-completion-system 'ido))
+
+Also, *note flycheck-count-errors: 92. was changed to count errors of
+all levels.  It returns an alist mapping error levels to the amount of
+errors of that level.
+
+\1f
+File: flycheck.info,  Node: New online manual,  Next: Syntax checkers<3>,  Prev: Breaking changes<6>,  Up: Flycheck 0 17
+
+8.1.6.2 New online manual
+.........................
+
+The most notable change is the new online documentation at
+‘http://flycheck.readthedocs.org’, which replaces the old online manual
+at ‘http://flycheck.github.io’.  The latter now redirects to the former.
+
+The new manual is written with Sphinx(1) instead of Texinfo(2).  The
+underlying markup is ReStructuredText(3), which is simpler, less
+cluttered, and more powerful than the TeX dialect of Texinfo(4).  It is
+also more popular, as nowadays Sphinx has become a standard tool among
+Python developers, and is also increasingly used with other languages as
+well.  For instance, the LLVM documentation(5) is written in Sphinx.
+
+Besides providing a better HTML documentation, we hope that the new
+manual lowers the barrier to external contributors and increases the
+amount of contributions to the documentation.
+
+The documentation is now automatically re-build after each push to the
+Github repository, so that ‘http://flycheck.readthedocs.org/en/latest’
+now always hosts the up to date documentation.  Besides, there are
+separate sites for each versioned release of Flycheck.  For instance,
+‘http://flycheck.readthedocs.org/en/0.17’ now hosts the documentation of
+Flycheck 0.17 now.
+
+Beyond the manual itself, the new documentation now also includes the
+release notes, which were previously hosted at
+‘http://www.lunaryorn.com’, and the *note comparison with Flymake: d,
+which was previously hosted at the Github Wiki of Flycheck.  The Github
+Wiki is disabled now, to make all documentation available from a single
+place.
+
+Unfortunately, the Info manual included in the Flycheck ELPA packages is
+somewhat inferior now, because there is some idiomatic gap between
+Sphinx and Texinfo.  It’s still usable, though, and we hope to overcome
+the most striking shortcomings over the time.
+
+   ---------- Footnotes ----------
+
+   (1) http://sphinx-doc.org
+
+   (2) http://www.gnu.org/software/texinfo/
+
+   (3) http://docutils.sourceforge.net/rst.html
+
+   (4) http://www.gnu.org/software/texinfo/
+
+   (5) http://llvm.org/docs/
+
+\1f
+File: flycheck.info,  Node: Syntax checkers<3>,  Next: Extending syntax checkers,  Prev: New online manual,  Up: Flycheck 0 17
+
+8.1.6.3 Syntax checkers
+.......................
+
+Flycheck can now check GNU Makefiles (see [GH-321](1)) with the new
+‘make-gmake’ syntax checker.
+
+The *note rust: 133. syntax checker now uses ‘--no-trans’ to check for
+more than just syntax errors.  For instance, it will report unused
+variables now.
+
+As part of the transition to the new manual, Flycheck now provides a
+syntax checker for Sphinx documents (*note rst-sphinx: 128.).  The *note
+rst: 127. syntax checker does not check documents within a Sphinx
+project anymore, do avoid false positives from Sphinx-specific markup.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues/321
+
+\1f
+File: flycheck.info,  Node: Extending syntax checkers,  Next: Other bug fixes and improvements,  Prev: Syntax checkers<3>,  Up: Flycheck 0 17
+
+8.1.6.4 Extending syntax checkers
+.................................
+
+\1f
+File: flycheck.info,  Node: Other bug fixes and improvements,  Prev: Extending syntax checkers,  Up: Flycheck 0 17
+
+8.1.6.5 Other bug fixes and improvements
+........................................
+
+   - Flycheck does not longer attach syntax checker processes to the
+     buffer anymore, improving compatibility with Tabbar Mode
+     ([GH-298](1)).
+
+   - The *note emacs-lisp: cd. and *note emacs-lisp-checkdoc: ce. syntax
+     checkers do not visit the file being checked anymore, to avoid
+     unintended side effects from unsafe local variables, etc.
+     ([GH-319](2))
+
+   - When a buffer changes while being checked, Flycheck immediately
+     re-checks the buffer after the check finished, to avoid outdated
+     errors ([GH-301](3)).
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues/298
+
+   (2) https://github.com/flycheck/flycheck/issues/319
+
+   (3) https://github.com/flycheck/flycheck/issues/301
+
+\1f
+File: flycheck.info,  Node: Flycheck 0 16,  Next: Flycheck 0 15,  Prev: Flycheck 0 17,  Up: Release announcements
+
+8.1.7 Flycheck 0.16
+-------------------
+
+
+date: Jan 12, 2014
+
+
+version: 0.16
+
+Time for a new release of Flycheck, the modern syntax-checking extension
+for Emacs:
+
+In two months since the last release, Flycheck got a bunch of new syntax
+checkers, a brand-new error list, and the ability to override the
+executables of syntax checkers.
+
+Let’s go through the list of important changes.  For a detailed list,
+please read the *note Changelog: 165.
+
+* Menu:
+
+* Breaking changes: Breaking changes<7>. 
+* Syntax checkers: Syntax checkers<4>. 
+* New features: New features<2>. 
+* Improved error list:: 
+* Get it: Get it<4>. 
+
+\1f
+File: flycheck.info,  Node: Breaking changes<7>,  Next: Syntax checkers<4>,  Up: Flycheck 0 16
+
+8.1.7.1 Breaking changes
+........................
+
+   - The Hdevtools syntax checker was removed from Flycheck into a
+     separate package flycheck-hdevtools(1) due to various issues
+     ([GH-275](2)).
+
+   - Support for coffeelint 0.x is dropped.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck-hdevtools
+
+   (2) https://github.com/flycheck/flycheck/issues/275
+
+\1f
+File: flycheck.info,  Node: Syntax checkers<4>,  Next: New features<2>,  Prev: Breaking changes<7>,  Up: Flycheck 0 16
+
+8.1.7.2 Syntax checkers
+.......................
+
+* Menu:
+
+* New languages and checkers:: 
+* Better Haskell support:: 
+* Miscellaneous new options:: 
+
+\1f
+File: flycheck.info,  Node: New languages and checkers,  Next: Better Haskell support,  Up: Syntax checkers<4>
+
+8.1.7.3 New languages and checkers
+..................................
+
+Flycheck supports _eight_ new languages: AsciiDoc(1), Cfengine(2),
+Chef(3) recipes, ERuby(4), Handlebars(5), Racket(6), Texinfo(7), and
+Verilog(8).  Additionally, there are a new syntax checker for Javascript
+(eslint(9)), Ruby (ruby-lint(10)), and YAML (js-yaml(11)).
+
+   ---------- Footnotes ----------
+
+   (1) http://asciidoc.org/
+
+   (2) http://cfengine.com/
+
+   (3) https://www.getchef.com/
+
+   (4) http://www.kuwata-lab.com/erubis/
+
+   (5) http://handlebarsjs.com/
+
+   (6) http://racket-lang.org/
+
+   (7) https://www.gnu.org/software/texinfo
+
+   (8) https://en.wikipedia.org/wiki/Verilog
+
+   (9) https://github.com/eslint/eslint
+
+   (10) https://github.com/YorickPeterse/ruby-lint
+
+   (11) https://github.com/nodeca/js-yaml
+
+\1f
+File: flycheck.info,  Node: Better Haskell support,  Next: Miscellaneous new options,  Prev: New languages and checkers,  Up: Syntax checkers<4>
+
+8.1.7.4 Better Haskell support
+..............................
+
+Despite the aforementioned removal of Hdevtools, Haskell support made a
+leap forward.  The GHC syntax checker resolves local imports properly
+now, and has new options to change the search path and the package
+databases.
+
+The brand-new flycheck-haskell(1) extension makes use of these variables
+to configure the syntax checker properly in Cabal projects.  The
+extensions adds all source directories of a Cabal project to the GHC
+search path, and enables the package database of the project’s Cabal
+sandbox.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck-haskell
+
+\1f
+File: flycheck.info,  Node: Miscellaneous new options,  Prev: Better Haskell support,  Up: Syntax checkers<4>
+
+8.1.7.5 Miscellaneous new options
+.................................
+
+   - The SASS and SCSS syntax checkers support the Compass framework
+     now, via *note flycheck-sass-compass: 13b. and *note
+     flycheck-scss-compass: 143. respectively.
+
+   - Clang can enable Microsoft C/C++ extensions now, via *note
+     flycheck-clang-ms-extensions: a8.
+
+   - Rubocop can inhibit all style hints via the new *note
+     flycheck-rubocop-lint-only: 12d.
+
+\1f
+File: flycheck.info,  Node: New features<2>,  Next: Improved error list,  Prev: Syntax checkers<4>,  Up: Flycheck 0 16
+
+8.1.7.6 New features
+....................
+
+* Menu:
+
+* Syntax checker executables: Syntax checker executables<2>. 
+* Disable syntax checkers easily:: 
+
+\1f
+File: flycheck.info,  Node: Syntax checker executables<2>,  Next: Disable syntax checkers easily,  Up: New features<2>
+
+8.1.7.7 Syntax checker executables
+..................................
+
+You can now override the executables of syntax checkers.  See *note
+Syntax checker executables: 69. for details.
+
+\1f
+File: flycheck.info,  Node: Disable syntax checkers easily,  Prev: Syntax checker executables<2>,  Up: New features<2>
+
+8.1.7.8 Disable syntax checkers easily
+......................................
+
+Flycheck as a new customization options *note
+flycheck-disabled-checkers: 5f, to easily disable syntax checkers.
+
+Previously, you needed to remove syntax checkers from *note
+flycheck-checkers: 5e. to disable them, either via the Customization
+interface, or by custom Emacs Lisp:
+
+     (setq flycheck-checkers (delq 'emacs-lisp-checkdoc flycheck-checkers))
+
+With the new variable, there is no need for this convoluted code
+anymore.  Instead, just set the variable:
+
+     (setq flycheck-disabled-checkers '(emacs-lisp-checkdoc))
+
+Even better, you can easily use this variable in file or directory
+variables.  For instance, you can use ‘M-x add-file-local-variable RET
+flycheck-disabled-checkers RET (emacs-lisp-checkdoc)’ in your ‘init.el’
+to disable Checkdoc warnings while editing your ‘init.el’.
+
+\1f
+File: flycheck.info,  Node: Improved error list,  Next: Get it<4>,  Prev: New features<2>,  Up: Flycheck 0 16
+
+8.1.7.9 Improved error list
+...........................
+
+This release continues the improvements to the error list started in the
+last release.  The error list is now based on Tabulated List Mode (see
+[GH-230](1)), to address a number of issues in the old Compile
+Mode-based error list (e.g.  misleading commands and menu items such as
+“Recompile”).
+
+The new error list, which you can see in the screenshot above, fixes
+these issues, and has an improved visual appearance.  The columns are
+aligned now, and the superfluous file name is omitted.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues/230
+
+\1f
+File: flycheck.info,  Node: Get it<4>,  Prev: Improved error list,  Up: Flycheck 0 16
+
+8.1.7.10 Get it
+...............
+
+See *note Installation: 31.
+
+\1f
+File: flycheck.info,  Node: Flycheck 0 15,  Prev: Flycheck 0 16,  Up: Release announcements
+
+8.1.8 Flycheck 0.15
+-------------------
+
+
+date: Nov 15, 2013
+
+
+version: 0.15
+
+I have the honour and pleasure to announce a new release of Flycheck,
+the modern syntax-checking extension for Emacs.
+
+It is three months since the last release, so this release brings quite
+a lot of changes.  For a complete list of all changes, please read the
+complete list of *note Changelog: 165.  This article will just cover the
+most important changes.
+
+* Menu:
+
+* Breaking changes: Breaking changes<8>. 
+* New syntax checkers:: 
+* New error list:: 
+* C/C++ support:: 
+* New info level messages:: 
+* Custom error levels:: 
+* Other improvements:: 
+* Get it: Get it<5>. 
+
+\1f
+File: flycheck.info,  Node: Breaking changes<8>,  Next: New syntax checkers,  Up: Flycheck 0 15
+
+8.1.8.1 Breaking changes
+........................
+
+This release introduces three breaking changes.  Two of these are
+related to the *note new-error-list: 1d0.:
+
+     Warning: ‘flycheck-display-errors-in-list’ is gone.  If you had
+     previously set *note flycheck-display-errors-function: 2b. to this
+     function, *remove* this setting from your configuration.
+
+Besides, ‘flycheck-list-errors’ does not take a prefix argument anymore.
+It cannot list errors at point any longer.
+
+The third breaking change is the removal of ‘flycheck-declare-checker’,
+which was obsolete already since the last release.  Unless you have
+custom syntax checkers not yet ported to *note flycheck-define-checker:
+19, this won’t affect you in any way.  I am not aware of any 3rd party
+extension which still uses ‘flycheck-declare-checker’.
+
+\1f
+File: flycheck.info,  Node: New syntax checkers,  Next: New error list,  Prev: Breaking changes<8>,  Up: Flycheck 0 15
+
+8.1.8.2 New syntax checkers
+...........................
+
+Two new languages made it into this release: YAML (using the YAML parser
+from the Ruby standard library) and Slim(1).
+
+Additionally there are new syntax checkers for Javascript and PHP.
+Flycheck can check Javascript with Google’s Closure Linter(2), in place
+of Jshint.  For PHP, Flycheck now uses the PHP Mess Detector(3) to check
+for semantic errors, in _addition_ to a syntax checks with PHP CLI and a
+style checks with PHP CodeSniffer.
+
+   ---------- Footnotes ----------
+
+   (1) http://slim-lang.com
+
+   (2) https://code.google.com/p/closure-linter/
+
+   (3) http://phpmd.org/
+
+\1f
+File: flycheck.info,  Node: New error list,  Next: C/C++ support,  Prev: New syntax checkers,  Up: Flycheck 0 15
+
+8.1.8.3 New error list
+......................
+
+The error list at ‘C-c ! l’ has been redesigned.
+
+It is no longer a static list filled once by ‘C-c ! l’.  Instead, it
+automatically updates after each syntax check, and follows the current
+window, i.e.  if you switch to another window, the error list is updated
+to show the errors of the corresponding buffer.
+
+Furthermore, the error list highlights the errors at point and at the
+current line.  If you move the point to an error location, the error
+list automatically scrolls to the corresponding error, and highlights it
+with the new ‘flycheck-error-list-highlight-at-point’ face.
+Additionally, it highlights all other errors at the current line with
+the new *note flycheck-error-list-highlight: 7f. face.
+
+\1f
+File: flycheck.info,  Node: C/C++ support,  Next: New info level messages,  Prev: New error list,  Up: Flycheck 0 15
+
+8.1.8.4 C/C++ support
+.....................
+
+The *note c/c++-clang: 9f. syntax checker for C and C++ got a bunch of
+new options:
+
+   - Set additional preprocessor definitions for syntax checking with
+     *note flycheck-clang-definitions: a4, corresponding to the ‘-D’
+     option for ‘clang’.
+
+   - Include additional headers or files during syntax checking with
+     *note flycheck-clang-includes: a6, corresponding to the ‘-include’
+     option for ‘clang’.
+
+   - Choose the language standard, e.g.  C++98 or C++11, with *note
+     flycheck-clang-language-standard: a7, corresponding to the ‘-std’
+     option for ‘clang’.
+
+   - Disable RTTI during syntax checking with *note
+     flycheck-clang-no-rtti: aa, corresponding to the ‘-fno-rtti’ option
+     for ‘clang’.  In current Clang versions, however, this does not
+     cause errors or warnings when using RTTI.
+
+   - Choose the standard library for syntax checking with *note
+     flycheck-clang-standard-library: ab, corresponding to the ‘-stdlib’
+     option for ‘clang’.  Currently, Clang supports ‘libstdc++’ for the
+     good old GNU standard library, and ‘libc++’ for the modern Libc++
+     from the LLVM project.
+
+Besides, the Clang syntax checker was changed to correctly handle local
+include files, e.g.  ‘#include "foo.h"’.
+
+\1f
+File: flycheck.info,  Node: New info level messages,  Next: Custom error levels,  Prev: C/C++ support,  Up: Flycheck 0 15
+
+8.1.8.5 New ‘info’ level messages
+.................................
+
+In addition to the ‘warning’ and ‘error’ levels, Flycheck now has a new
+‘info’ level, which is intended for informational messages which provide
+additional information about a specific location in the source code.
+With this new level, the semantics of error levels is as follows:
+
+‘error’
+
+     Definite errors which must be fixed for the source code to work
+     correctly
+
+‘warning’
+
+     Potential errors and issues, which can be ignored, but still
+     deserve to be fixed
+
+‘info’
+
+     Additional information about a specific source code location, which
+     does not indicate an error or issue, but is still worth noting
+
+Some syntax checkers were changed to use this new level for messages,
+which do not really fit into the ‘warning’ level:
+
+   - *note c/c++-clang: 9f. for ‘note:’ messages
+
+   - *note python-flake8: 115. for PEP8 naming issues emitted by the
+     ‘pep8-naming’ plugin
+
+   - *note python-pylint: 11a. for convention level messages, e.g.
+     naming issues, etc.
+
+The new level is already supported by the popular Solarized(1) and
+Zenburn(2) themes.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/bbatsov/solarized-emacs
+
+   (2) https://github.com/bbatsov/zenburn-emacs
+
+\1f
+File: flycheck.info,  Node: Custom error levels,  Next: Other improvements,  Prev: New info level messages,  Up: Flycheck 0 15
+
+8.1.8.6 Custom error levels
+...........................
+
+The new ‘info’ level is backed by a generic mechanism to define new
+error levels, using the new function *note flycheck-define-error-level:
+27.  For instance, the ‘warning’ level is now defined as follows:
+
+     (flycheck-define-error-level 'warning
+       :overlay-category 'flycheck-warning-overlay
+       :fringe-bitmap 'question-mark
+       :fringe-face 'flycheck-fringe-warning)
+
+A error level consists of a category for overlays, which defines the
+appearance and priority of overlays for this level, and bitmap and face
+for fringe indicators.
+
+After defining an error level, you can use it the error patterns of a
+syntax checker as usual.
+
+\1f
+File: flycheck.info,  Node: Other improvements,  Next: Get it<5>,  Prev: Custom error levels,  Up: Flycheck 0 15
+
+8.1.8.7 Other improvements
+..........................
+
+Beside these important changes, there are also a number of smaller
+improvements:
+
+   - Flycheck does not longer check encrypted files for obvious reasons.
+
+   - The *note emacs-lisp-checkdoc: ce. syntax checker does not check
+     ‘.dir-locals.el’ anymore.
+
+   - *note python-pylint: 11a. now parses error columns from the output
+     of ‘pylint’.
+
+   - Spurious “flawed definition” warnings in *note lua: 103, *note rst:
+     127. and *note go-build: e2. were fixed.
+
+   - *note c/c++-cppcheck: a1. output now parses correctly when using
+     the pure Emacs Lisp XML parser in ‘xml.el’.
+
+          Note: Nonetheless, you are advised to use Emacs with ‘libxml’
+          support.  Most Linux distributions ship Emacs packages with
+          ‘libxml’ support, but if you are building your own, or use a
+          source-based distribution such as Gentoo, take care to enable
+          ‘libxml’ for Emacs.
+
+\1f
+File: flycheck.info,  Node: Get it<5>,  Prev: Other improvements,  Up: Flycheck 0 15
+
+8.1.8.8 Get it
+..............
+
+See *note Installation: 31.
+
+\1f
+File: flycheck.info,  Node: Changelog,  Prev: Release announcements,  Up: Flycheck releases
+
+8.2 Changelog
+=============
+
+* Menu:
+
+* master (in development): master in development. 
+* 0.22 (Dec 23, 2014): 0 22 Dec 23 2014. 
+* 0.21 (Oct 26, 2014): 0 21 Oct 26 2014. 
+* 0.20 (Aug 12, 2014): 0 20 Aug 12 2014. 
+* 0.19 (Jun 12, 2014): 0 19 Jun 12 2014. 
+* 0.18 (Mar 24, 2014): 0 18 Mar 24 2014. 
+* 0.17 (Feb 1, 2014): 0 17 Feb 1 2014. 
+* 0.16 (Jan 11, 2014): 0 16 Jan 11 2014. 
+* 0.15 (Nov 15, 2013): 0 15 Nov 15 2013. 
+* 0.14.1 (Aug 16, 2013): 0 14 1 Aug 16 2013. 
+* 0.14 (Aug 15, 2013): 0 14 Aug 15 2013. 
+* 0.13 (Jun 28, 2013): 0 13 Jun 28 2013. 
+* 0.12 (May 18, 2013): 0 12 May 18 2013. 
+* 0.11 (May 01, 2013): 0 11 May 01 2013. 
+* 0.10 (Apr 21, 2013): 0 10 Apr 21 2013. 
+* 0.9 (Apr 13, 2013): 0 9 Apr 13 2013. 
+* 0.8 (Apr 9, 2013): 0 8 Apr 9 2013. 
+* 0.7.1 (Feb 23, 2013): 0 7 1 Feb 23 2013. 
+* 0.7 (Feb 14, 2013): 0 7 Feb 14 2013. 
+* 0.6.1 (Jan 30, 2013): 0 6 1 Jan 30 2013. 
+* 0.6 (Jan 29, 2013): 0 6 Jan 29 2013. 
+* 0.5 (Dec 28, 2012): 0 5 Dec 28 2012. 
+* 0.4 (Nov 21, 2012): 0 4 Nov 21 2012. 
+* 0.3 (Nov 21, 2012): 0 3 Nov 21 2012. 
+* 0.2 (Oct 25, 2012): 0 2 Oct 25 2012. 
+* 0.1 (Oct 11, 2012): 0 1 Oct 11 2012. 
+
+\1f
+File: flycheck.info,  Node: master in development,  Next: 0 22 Dec 23 2014,  Up: Changelog
+
+8.2.1 master (in development)
+-----------------------------
+
+   - New syntax checkers:
+
+        - R with ‘lintr’ [GH-512](1)
+
+   - Improvements:
+
+        - ‘chef-foodcritic’ handles relative paths correctly now
+          [GH-556](2)
+
+   - Bug fixes:
+
+        - Cache last used syntax checker only when actually checking the
+          buffer [GH-559](3)
+
+        - Fix void variable error when trying to use ‘flycheck-compile’
+          with a non-command checker [GH-563](4)
+
+        - Fix faulty mode line reporting [GH-564](5)
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues/512
+
+   (2) https://github.com/flycheck/flycheck/issues/556
+
+   (3) https://github.com/flycheck/flycheck/issues/559
+
+   (4) https://github.com/flycheck/flycheck/issues/563
+
+   (5) https://github.com/flycheck/flycheck/issues/564
+
+\1f
+File: flycheck.info,  Node: 0 22 Dec 23 2014,  Next: 0 21 Oct 26 2014,  Prev: master in development,  Up: Changelog
+
+8.2.2 0.22 (Dec 23, 2014)
+-------------------------
+
+   - *Breaking changes*:
+
+        - Never allow use of disabled checkers anymore, even with
+          ‘flycheck-select-checker’
+
+        - Error parsers *must* set the ‘:buffer’ and ‘:checker’ slots of
+          ‘flycheck-error’ now
+
+        - The internals of syntax checker definitions have changed
+          again.  *All packages depending on Flycheck must be
+          recompiled!*  [GH-524](1)
+
+        - ‘flycheck-error-list-refresh’ is not an interactive command
+          anymore
+
+        - Replace ‘flycheck-perlcritic-verbosity’ with
+          ‘flycheck-perlcritic-severity’
+
+        - Replace ‘flycheck-copy-messages-as-kill’ with
+          ‘flycheck-copy-errors-as-kill’ [GH-529](2)
+
+        - Remove ‘flycheck-google-messages’ command
+
+        - Options and config file variables are not buffer-local anymore
+          [GH-546](3)
+
+   - New syntax checkers:
+
+        - Python with ‘py_compile’ [GH-484](4)
+
+   - New features:
+
+        - ‘flycheck-ert.el’ library to write unit tests for Flycheck
+          extensions
+
+        - Add ‘flycheck-define-generic-checker’ to define syntax
+          checkers over arbitrary Emacs Lisp functions [GH-169](5)
+          [GH-524](6)
+
+        - Add ‘flycheck-define-command-checker’ as non-macro variant of
+          ‘flycheck-define-checker’ [GH-524](7)
+
+        - Add support for IDs of errors [GH-529](8)
+
+        - Add special ‘id’ sexp to parse error ids with
+          ‘:error-patterns’ [GH-529](9)
+
+        - Parse error IDs from Checkstyle XML [GH-259](10)
+
+        - ‘flycheck-copy-errors-as-kill’ can put error ids into kill
+          ring now [GH-529](11)
+
+        - Parse error IDs from many error checkers [GH-259](12)
+
+        - Verify Flycheck setup in a buffer with ‘flycheck-verify-setup’
+          [GH-338](13)
+
+        - Add options for arbitrary arguments to some syntax checkers
+          [GH-542](14)
+
+        - Add ‘flycheck-flake8-error-level-alist’ to customize error
+          levels from flake8 [GH-454](15)
+
+   - Improvements:
+
+        - Automatically disable syntax checkers that report too many
+          errors [GH-476](16)
+
+        - Reduce filesystem access when parsing errors to improve
+          parsing speed
+
+        - Add explicit ‘load-path’ inheritance to
+          ‘flycheck-emacs-lisp-load-path’, via new ‘inherit’ value
+          [GH-511](17)
+
+        - Parse help messages from ‘rustc’ [GH-517](18)
+
+        - ‘g’ in the error list checks the source buffer again
+          [GH-532](19)
+
+        - ‘haskell-ghc’ supports literate Haskell now [GH-535](20)
+
+   - Bug fixes:
+
+        - Properly parse notes in ‘sh-shellcheck’ [GH-508](21)
+
+        - Fix shell quoting in ‘flycheck-compile’ [GH-522](22)
+          [GH-523](23)
+
+        - Fix faulty properties of customize options which broke
+          ‘customize-changed’ and related functions
+
+        - Fix use deprecated option in ‘coffee-coffeelint’
+
+        - Fix error columns of ‘python-pylint’ and ‘tex-chktex’
+          [GH-536](24)
+
+        - Correctly compute error level of errors on included files in
+          ‘c/c++-clang’ and ‘c/c++-gcc’ [GH-451](25)
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues/524
+
+   (2) https://github.com/flycheck/flycheck/issues/529
+
+   (3) https://github.com/flycheck/flycheck/issues/546
+
+   (4) https://github.com/flycheck/flycheck/issues/484
+
+   (5) https://github.com/flycheck/flycheck/issues/169
+
+   (6) https://github.com/flycheck/flycheck/issues/524
+
+   (7) https://github.com/flycheck/flycheck/issues/524
+
+   (8) https://github.com/flycheck/flycheck/issues/529
+
+   (9) https://github.com/flycheck/flycheck/issues/529
+
+   (10) https://github.com/flycheck/flycheck/issues/259
+
+   (11) https://github.com/flycheck/flycheck/issues/529
+
+   (12) https://github.com/flycheck/flycheck/issues/259
+
+   (13) https://github.com/flycheck/flycheck/issues/338
+
+   (14) https://github.com/flycheck/flycheck/issues/542
+
+   (15) https://github.com/flycheck/flycheck/issues/454
+
+   (16) https://github.com/flycheck/flycheck/issues/476
+
+   (17) https://github.com/flycheck/flycheck/issues/511
+
+   (18) https://github.com/flycheck/flycheck/issues/517
+
+   (19) https://github.com/flycheck/flycheck/issues/532
+
+   (20) https://github.com/flycheck/flycheck/issues/535
+
+   (21) https://github.com/flycheck/flycheck/issues/508
+
+   (22) https://github.com/flycheck/flycheck/issues/522
+
+   (23) https://github.com/flycheck/flycheck/issues/523
+
+   (24) https://github.com/flycheck/flycheck/issues/536
+
+   (25) https://github.com/flycheck/flycheck/issues/451
+
+\1f
+File: flycheck.info,  Node: 0 21 Oct 26 2014,  Next: 0 20 Aug 12 2014,  Prev: 0 22 Dec 23 2014,  Up: Changelog
+
+8.2.3 0.21 (Oct 26, 2014)
+-------------------------
+
+   - *Breaking changes*:
+
+        - ‘html-tidy’ is not enabled in Web Mode anymore [GH-464](1)
+
+        - ‘d-dmd’ now requires DMD 2.066 or newer [GH-460](2)
+
+        - ‘:next-checkers’ now requires the maximum permissible level
+          instead of a custom predicate [GH-472](3)
+
+        - Remove ‘flycheck-error-list-highlight-at-point’ face and
+          related functionality [GH-490](4)
+
+   - New syntax checkers:
+
+        - Coq
+
+        - RPM spec files with ‘rpmlint’ [GH-480](5) [GH-481](6)
+
+   - New features:
+
+        - Add ‘null-device’ symbol for syntax checker commands
+
+        - Add ‘flycheck-display-error-messages-unless-error-list’ for
+          ‘flycheck-error-display-function’
+
+        - Add ‘flycheck-error-list-after-refresh-hook’ to run after the
+          error list refreshes
+
+        - Add ‘flycheck-navigation-minimum-level’ to restrict error
+          levels available for navigation [GH-398](7) [GH-485](8)
+
+        - The error list can be sorted by message and syntax checker
+          name now [GH-500](9)
+
+        - Add ‘flycheck-error-list-checker-name’ face to customize the
+          appearance of the syntax checker name in the error list
+          [GH-500](10)
+
+        - Add ‘flycheck-shellcheck-excluded-warnings’ to exclude
+          warnings from ShellCheck reports [GH-499](11)
+
+        - Add ‘flycheck-add-mode’ to add a new major mode to a syntax
+          checker [GH-506](12)
+
+        - Add ‘flycheck-gcc-openmp’ to enable OpenMP for GCC in C/C++
+          [GH-507](13)
+
+   - Improvements:
+
+        - Improve GCC syntax checking by expanding templates
+          [GH-459](14)
+
+        - ‘d-dmd’ reports errors with columns now [GH-460](15)
+
+        - Remove Projectile-based config file search [GH-461](16)
+
+        - Do not change point when navigating in the error list
+          [GH-487](17)
+
+        - ShellCheck warnings now include the corresponding warning code
+
+   - Bug fixes:
+
+        - Expand ‘default-directory’ before using it, to handle
+          abbreviated paths gracefully [GH-434](18)
+
+        - Restore mouse support in the error list [GH-468](19)
+
+        - ‘less’ now correctly resolves relative paths in ‘data-uri’
+          [GH-471](20)
+
+        - ‘go-errcheck’ now properly uses package names as syntax
+          checker arguments
+
+        - ‘c/c++-clang’ now handles empty error messages [GH-497](21)
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues/464
+
+   (2) https://github.com/flycheck/flycheck/issues/460
+
+   (3) https://github.com/flycheck/flycheck/issues/472
+
+   (4) https://github.com/flycheck/flycheck/issues/490
+
+   (5) https://github.com/flycheck/flycheck/issues/480
+
+   (6) https://github.com/flycheck/flycheck/issues/481
+
+   (7) https://github.com/flycheck/flycheck/issues/398
+
+   (8) https://github.com/flycheck/flycheck/issues/485
+
+   (9) https://github.com/flycheck/flycheck/issues/500
+
+   (10) https://github.com/flycheck/flycheck/issues/500
+
+   (11) https://github.com/flycheck/flycheck/issues/499
+
+   (12) https://github.com/flycheck/flycheck/issues/506
+
+   (13) https://github.com/flycheck/flycheck/issues/507
+
+   (14) https://github.com/flycheck/flycheck/issues/459
+
+   (15) https://github.com/flycheck/flycheck/issues/460
+
+   (16) https://github.com/flycheck/flycheck/issues/461
+
+   (17) https://github.com/flycheck/flycheck/issues/487
+
+   (18) https://github.com/flycheck/flycheck/issues/434
+
+   (19) https://github.com/flycheck/flycheck/issues/468
+
+   (20) https://github.com/flycheck/flycheck/issues/471
+
+   (21) https://github.com/flycheck/flycheck/issues/497
+
+\1f
+File: flycheck.info,  Node: 0 20 Aug 12 2014,  Next: 0 19 Jun 12 2014,  Prev: 0 21 Oct 26 2014,  Up: Changelog
+
+8.2.4 0.20 (Aug 12, 2014)
+-------------------------
+
+   - *Breaking changes*:
+
+        - The internal names of syntax checker properties changed.  *All
+          packages depending on Flycheck must be recompiled!*
+
+        - ‘flycheck-substitute-argument’ always returns a list now
+
+        - The special meaning of a trailing ‘=’ in ‘(option …)’ and
+          ‘(config-file …)’ is removed.  Both arguments must now
+          explicitly specify ‘concat’ to prepend the option as string.
+
+   - New syntax checkers:
+
+        - C/C++ with GCC [GH-408](1)
+
+        - Scala with scalastyle [GH-425](2)
+
+        - Fortran with GFortran [GH-414](3) [GH-450](4)
+
+        - Ada with GNAT [GH-414](5) [GH-457](6)
+
+   - New features:
+
+        - Add ‘flycheck-clang-no-exceptions’ and
+          ‘flycheck-gcc-no-exceptions’ to flag exceptions as errors in
+          C++ [GH-412](7)
+
+        - Add ‘flycheck-rust-crate-root’ to resolve inter-crate
+          references in ‘rust’ [GH-417](8)
+
+        - Add ‘flycheck-clang-blocks’ to enable the block syntax in
+          Clang [GH-420](9)
+
+        - ‘read-flycheck-checker’ now accepts a default value
+
+        - Add ‘flycheck-status-changed-functions’ to react on status
+          changes
+
+        - Make the mode line lighter of Flycheck customizable with
+          ‘flycheck-mode-line’
+
+        - Add ‘flycheck-rubylintrc’ to support configuration files for
+          ‘ruby-rubylint’ [GH-424](10)
+
+        - Add ‘flycheck-rust-crate-type’ to make the Crate type
+          customizable [GH-446](11)
+
+        - The mode line of the error list is now customizable with
+          ‘flycheck-error-list-mode-line’ [GH-454](12)
+
+        - Pressing ‘n’ or ‘p’ in the error list now shows the error at
+          point in a separate window [GH-452](13) [GH-454](14)
+
+        - Pressing ‘RET’ in the error list now jumps to the error at
+          point [GH-454](15)
+
+        - The error list can now be sorted by error level by clicking on
+          the corresponding list header, or by pressing ‘S’ with point
+          on the column text [GH-454](16)
+
+        - Error levels defined with ‘flycheck-define-error-level’ can
+          now have a numeric severity used for sorting [GH-454](17)
+
+   - Improvements:
+
+        - Use proper temporary files in ‘python-flake8’ [GH-421](18)
+
+        - Demote errors from ‘package-initialize’ in the ‘emacs-lisp’
+          checker [GH-423](19)
+
+        - ‘flycheck-select-checker’ now uses the last used syntax
+          checker as default when reading from minibuffer
+
+        - ‘flycheck-compile’ now prompts for the syntax checker to run
+          as ‘compile’ command [GH-428](20)
+
+        - The ‘rust’ syntax checker shows info messages now [GH-439](21)
+
+        - The ‘sass’ and ‘scss’ syntax checkers now use a temporary
+          directory for their cache [GH-443](22) [GH-454](23)
+
+        - Change the default of ‘flycheck-eslintrc’ to ‘nil’
+          [GH-447](24)
+
+        - Show the menu on the mode line lighter [GH-365](25)
+
+        - Greatly improve Flycheck’s menu
+
+        - ‘n’ and ‘p’ now navigate the error list by errors, not by
+          lines [GH-452](26) [GH-444](27)
+
+        - ‘c/c++-clang’ does not use in-place temporary files anymore
+          [GH-456](28)
+
+   - Bug fixes:
+
+        - Properly support ‘unload-feature’ now
+
+   - Other changes:
+
+        - Remove dependencies on f.el and s.el
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues/408
+
+   (2) https://github.com/flycheck/flycheck/issues/425
+
+   (3) https://github.com/flycheck/flycheck/issues/414
+
+   (4) https://github.com/flycheck/flycheck/issues/450
+
+   (5) https://github.com/flycheck/flycheck/issues/414
+
+   (6) https://github.com/flycheck/flycheck/issues/457
+
+   (7) https://github.com/flycheck/flycheck/issues/412
+
+   (8) https://github.com/flycheck/flycheck/issues/417
+
+   (9) https://github.com/flycheck/flycheck/issues/420
+
+   (10) https://github.com/flycheck/flycheck/issues/424
+
+   (11) https://github.com/flycheck/flycheck/issues/446
+
+   (12) https://github.com/flycheck/flycheck/issues/454
+
+   (13) https://github.com/flycheck/flycheck/issues/452
+
+   (14) https://github.com/flycheck/flycheck/issues/454
+
+   (15) https://github.com/flycheck/flycheck/issues/454
+
+   (16) https://github.com/flycheck/flycheck/issues/454
+
+   (17) https://github.com/flycheck/flycheck/issues/454
+
+   (18) https://github.com/flycheck/flycheck/issues/421
+
+   (19) https://github.com/flycheck/flycheck/issues/423
+
+   (20) https://github.com/flycheck/flycheck/issues/428
+
+   (21) https://github.com/flycheck/flycheck/issues/439
+
+   (22) https://github.com/flycheck/flycheck/issues/443
+
+   (23) https://github.com/flycheck/flycheck/issues/454
+
+   (24) https://github.com/flycheck/flycheck/issues/447
+
+   (25) https://github.com/flycheck/flycheck/issues/365
+
+   (26) https://github.com/flycheck/flycheck/issues/452
+
+   (27) https://github.com/flycheck/flycheck/issues/444
+
+   (28) https://github.com/flycheck/flycheck/issues/456
+
+\1f
+File: flycheck.info,  Node: 0 19 Jun 12 2014,  Next: 0 18 Mar 24 2014,  Prev: 0 20 Aug 12 2014,  Up: Changelog
+
+8.2.5 0.19 (Jun 12, 2014)
+-------------------------
+
+   - Flycheck now has an official logo [GH-331](1)
+
+   - *Breaking changes*:
+
+        - The ‘ruby-rubylint’ syntax checker now requires Ruby Lint 2.0
+          or newer.  [GH-405](2)
+
+   - New syntax checkers:
+
+        - Go with ‘errcheck’ [GH-393](3)
+
+   - New features:
+
+        - Add ‘flycheck-keymap-prefix’ to change the prefix key for
+          Flycheck keybindings [GH-381](4)
+
+        - Make the prefix of Flycheck’s temporary files customizable
+          with ‘flycheck-temp-prefix’ [GH-387](5)
+
+        - Add ‘:error-filter’ property for syntax checkers to apply a
+          custom function to modify or filter errors after parsing
+          [GH-397](6)
+
+        - Add ‘flycheck-rust-check-tests’ to disable syntax checking of
+          test code in Rust [GH-406](7)
+
+        - Add ‘flycheck-cppcheck-inconclusive’ to enable cppcheck tests
+          that might give false positives [GH-407](8)
+
+   - Improvements:
+
+        - Collapse redundant whitespace in messages from ‘emacs-lisp’
+          [GH-397](9)
+
+        - Dedent messages from ‘haskell-ghc’ [GH-397](10)
+
+        - Fold errors in included files into the error messages of the
+          corresponding include in ‘c/c++-clang’ [GH-397](11)
+
+        - The ‘ruby-rubylint’ syntax checker now supports ruby-lint 2.0
+          and newer [GH-405](12)
+
+   - Bug fixes:
+
+        - When stopping Flycheck, correctly kill running processes and
+          cleanup their temporary files [GH-334](13)
+
+        - Do not choke on files without extensions in ‘haskell-ghc’
+
+        - Fix spurious warning when a syntax checker reports errors, but
+          not for the file being checked [GH-391](14)
+
+        - Do not signal errors in Go Mode, when ‘go’ is not available
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues/331
+
+   (2) https://github.com/flycheck/flycheck/issues/405
+
+   (3) https://github.com/flycheck/flycheck/issues/393
+
+   (4) https://github.com/flycheck/flycheck/issues/381
+
+   (5) https://github.com/flycheck/flycheck/issues/387
+
+   (6) https://github.com/flycheck/flycheck/issues/397
+
+   (7) https://github.com/flycheck/flycheck/issues/406
+
+   (8) https://github.com/flycheck/flycheck/issues/407
+
+   (9) https://github.com/flycheck/flycheck/issues/397
+
+   (10) https://github.com/flycheck/flycheck/issues/397
+
+   (11) https://github.com/flycheck/flycheck/issues/397
+
+   (12) https://github.com/flycheck/flycheck/issues/405
+
+   (13) https://github.com/flycheck/flycheck/issues/334
+
+   (14) https://github.com/flycheck/flycheck/issues/391
+
+\1f
+File: flycheck.info,  Node: 0 18 Mar 24 2014,  Next: 0 17 Feb 1 2014,  Prev: 0 19 Jun 12 2014,  Up: Changelog
+
+8.2.6 0.18 (Mar 24, 2014)
+-------------------------
+
+   - *Breaking changes*:
+
+        - The POSIX script syntax checkers ‘sh-bash’ and ‘sh-dash’ were
+          renamed to ‘sh-posix-bash’ and ‘sh-posix-dash’ respectively.
+          The ‘bash’ and ‘zsh’ syntax checkers were renamed to ‘sh-bash’
+          and ‘sh-zsh’ respectively.  Thus, all shell script syntax
+          checkers now live in the ‘sh-’ prefix.
+
+        - ‘rst-sphinx’ requires Sphinx 1.2 or newer now.
+
+        - ‘rustc’ requires Rust 0.10 (not yet released at the time of
+          writing) or newer now [GH-353](1)
+
+   - New syntax checkers:
+
+        - Perl with Perl Critic [GH-88](2)
+
+        - Replace GNU Make with POSIX Make [GH-322](3)
+
+        - Shellcheck [GH-267](4)
+
+        - Go with ‘golint’ [GH-328](5)
+
+        - Go with ‘go tool vet’ [GH-329](6)
+
+   - New features:
+
+        - Add ‘flycheck-rust-library-path’ to specify library locations
+          for ‘rust’
+
+        - Add ‘flycheck-dmd-include-path’ to change the include path of
+          ‘d-dmd’ [GH-344](7)
+
+   - Improvements:
+
+        - ‘flycheck-parse-checkstyle’ supports ‘info’ level messages now
+
+        - Correctly parse multiline error messages of ‘go-build’ and
+          ‘go-test’
+
+        - ‘rst-sphinx’ supports custom nodes without explicit writer
+          support now, by using the ‘pseudoxml’ builder.
+
+        - Avoid warnings about missing main functions in ‘rust’
+
+        - Properly resolve relative filenames in ‘.. include::’
+          directives in ‘rst’
+
+        - Use ‘--unix_mode’ option in ‘javascript-gjslint’ to get the
+          file name [GH-348](8)
+
+        - Puppet Lint messages now include the name of the corresponding
+          check
+
+        - ‘rustc’ supports upcoming Rust 0.10 now [GH-353](9)
+
+        - Flycheck now handles Clang errors from included files
+          [GH-367](10)
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues/353
+
+   (2) https://github.com/flycheck/flycheck/issues/88
+
+   (3) https://github.com/flycheck/flycheck/issues/322
+
+   (4) https://github.com/flycheck/flycheck/issues/267
+
+   (5) https://github.com/flycheck/flycheck/issues/328
+
+   (6) https://github.com/flycheck/flycheck/issues/329
+
+   (7) https://github.com/flycheck/flycheck/issues/344
+
+   (8) https://github.com/flycheck/flycheck/issues/348
+
+   (9) https://github.com/flycheck/flycheck/issues/353
+
+   (10) https://github.com/flycheck/flycheck/issues/367
+
+\1f
+File: flycheck.info,  Node: 0 17 Feb 1 2014,  Next: 0 16 Jan 11 2014,  Prev: 0 18 Mar 24 2014,  Up: Changelog
+
+8.2.7 0.17 (Feb 1, 2014)
+------------------------
+
+   - The manual was ported to Sphinx(1) and is now located at
+     ‘http://flycheck.readthedocs.org’ [GH-274](2)
+
+   - *Breaking changes*:
+
+        - The default ‘flycheck-completion-system’ was changed to nil,
+          i.e.  the built-in ‘completing-read’, for compliance with
+          Emacs’ defaults.  To restore the previous behaviour, add
+          ‘(eval-after-load 'flycheck '(setq flycheck-completion-system
+          'ido))’ to your ‘init.el’.
+
+        - ‘flycheck-count-errors’ counts errors of all levels now, and
+          returns an alist mapping error symbols to error counts.
+
+   - New syntax checkers:
+
+        - RST (ReStructuredText) using Sphinx
+
+        - GNU Make [GH-321](3)
+
+   - New features:
+
+        - Extend syntax checkers with ‘flycheck-add-next-checkers’
+          [GH-266](4)
+
+   - Improvements:
+
+        - Immediately re-check the buffer when it was changed during a
+          syntax check [GH-301](5)
+
+        - Do not defer syntax checker after idle change timeout
+          [GH-305](6)
+
+        - Do not use the generic ‘rst’ syntax checker in Sphinx projects
+          anymore, to avoid false positives by Sphinx-only markup
+
+        - Check for more than just syntax errors in ‘rust’ [GH-314](7)
+
+        - ‘chef-foodcritic’ supports ‘enh-ruby-mode’ now
+
+   - Bug fixes
+
+        - Do not attach syntax checker processes to the buffer anymore
+          [GH-298](8)
+
+        - Do not visit the file to check in ‘emacs-lisp’ and
+          ‘emacs-lisp-checkdoc’ to avoid unintended side effects
+          [GH-319](9)
+
+   ---------- Footnotes ----------
+
+   (1) http://sphinx-doc.org
+
+   (2) https://github.com/flycheck/flycheck/issues/274
+
+   (3) https://github.com/flycheck/flycheck/issues/321
+
+   (4) https://github.com/flycheck/flycheck/issues/266
+
+   (5) https://github.com/flycheck/flycheck/issues/301
+
+   (6) https://github.com/flycheck/flycheck/issues/305
+
+   (7) https://github.com/flycheck/flycheck/issues/314
+
+   (8) https://github.com/flycheck/flycheck/issues/298
+
+   (9) https://github.com/flycheck/flycheck/issues/319
+
+\1f
+File: flycheck.info,  Node: 0 16 Jan 11 2014,  Next: 0 15 Nov 15 2013,  Prev: 0 17 Feb 1 2014,  Up: Changelog
+
+8.2.8 0.16 (Jan 11, 2014)
+-------------------------
+
+   - *Breaking changes*:
+
+        - Argument substitution is no longer performed on syntax checker
+          executables.  The executable must be a string.
+
+        - Split out ‘haskell-hdevtools’ into a separate package.  See
+          flycheck-hdevtools(1) [GH-275](2)
+
+        - Drop support for coffeelint 0.x
+
+        - The error list is reimplemented on top of Tabulated List Mode.
+          This greatly changes the appearance and behaviour of the error
+          list [GH-230](3)
+
+   - New syntax checkers:
+
+        - Ruby with ‘ruby-lint’ [GH-250](4)
+
+        - Handlebars [GH-270](5)
+
+        - YAML with ‘yaml-jsyaml’ [GH-253](6)
+
+        - Chef recipes with ‘foodcritic’ [GH-255](7)
+
+        - AsciiDoc [GH-276](8)
+
+        - CFEngine [GH-271](9)
+
+        - Racket [GH-277](10)
+
+        - Texinfo
+
+        - Verilog [GH-296](11)
+
+        - Javascript with ‘eslint’ [GH-291](12)
+
+        - ERuby [GH-285](13)
+
+   - New features:
+
+        - Define variables to override the executables of syntax
+          checkers [GH-272](14)
+
+        - Interactively set the executable of a syntax checker with
+          ‘flycheck-set-checker-executable’ [GH-272](15)
+
+        - Disable syntax checkers easily with
+          ‘flycheck-disabled-checkers’ [GH-269](16)
+
+        - Add support for the Compass CSS framework in the ‘sass’ and
+          ‘scss’ checkers, with ‘flycheck-sass-compass’ and
+          ‘flycheck-scss-compass’ respectively [GH-268](17)
+
+        - Disable style checks in ‘ruby-rubocop’ with
+          ‘flycheck-rubocop-lint-only’ [GH-287](18)
+
+        - Add support for Microsoft extensions in ‘c/c++-clang’ via
+          ‘flycheck-clang-ms-extensions’ [GH-283](19)
+
+        - New faces ‘flycheck-error-list-info’,
+          ‘flycheck-error-list-warning’, ‘flycheck-error-list-error’,
+          ‘flycheck-error-list-line-number’ and
+          ‘flycheck-error-list-column-number’ [GH-230](20)
+
+        - Add ‘flycheck-ghc-no-user-package-database’ to disable the
+          user package database for ‘haskell-ghc’
+
+        - Add ‘flycheck-ghc-package-databases’ to add additional package
+          databases to ‘haskell-ghc’
+
+        - Add ‘flycheck-ghc-search-path’ to add additional directories
+          to the search path of ‘haskell-ghc’
+
+   - Improvements:
+
+        - Demote Rubocop convention messages to ‘info’ level
+
+        - Stop Flycheck before the buffer is reverted [GH-282](21)
+
+        - Properly resolve local module imports in ‘haskell-ghc’
+
+   - Bug fixes:
+
+        - Make relative imports work with ‘python-pylint’ [GH-280](22)
+
+        - Fix parsing of errors in ‘scss’ and ‘sass’
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck-hdevtools
+
+   (2) https://github.com/flycheck/flycheck/issues/275
+
+   (3) https://github.com/flycheck/flycheck/issues/230
+
+   (4) https://github.com/flycheck/flycheck/issues/250
+
+   (5) https://github.com/flycheck/flycheck/issues/270
+
+   (6) https://github.com/flycheck/flycheck/issues/253
+
+   (7) https://github.com/flycheck/flycheck/issues/255
+
+   (8) https://github.com/flycheck/flycheck/issues/276
+
+   (9) https://github.com/flycheck/flycheck/issues/271
+
+   (10) https://github.com/flycheck/flycheck/issues/277
+
+   (11) https://github.com/flycheck/flycheck/issues/296
+
+   (12) https://github.com/flycheck/flycheck/issues/291
+
+   (13) https://github.com/flycheck/flycheck/issues/285
+
+   (14) https://github.com/flycheck/flycheck/issues/272
+
+   (15) https://github.com/flycheck/flycheck/issues/272
+
+   (16) https://github.com/flycheck/flycheck/issues/269
+
+   (17) https://github.com/flycheck/flycheck/issues/268
+
+   (18) https://github.com/flycheck/flycheck/issues/287
+
+   (19) https://github.com/flycheck/flycheck/issues/283
+
+   (20) https://github.com/flycheck/flycheck/issues/230
+
+   (21) https://github.com/flycheck/flycheck/issues/282
+
+   (22) https://github.com/flycheck/flycheck/issues/280
+
+\1f
+File: flycheck.info,  Node: 0 15 Nov 15 2013,  Next: 0 14 1 Aug 16 2013,  Prev: 0 16 Jan 11 2014,  Up: Changelog
+
+8.2.9 0.15 (Nov 15, 2013)
+-------------------------
+
+   - Flycheck has a new home at ‘https://github.com/flycheck/flycheck’,
+     the online manual moved to ‘http://flycheck.github.io’.
+
+   - *Breaking changes*:
+
+        - Do not add the current directory to the ‘emacs-lisp’ syntax
+          checker load path
+
+        - ‘flycheck-list-errors’ cannot list errors at point anymore.
+          It does not accept a prefix argument anymore, and takes zero
+          arguments now [GH-214](1)
+
+        - ‘flycheck-display-errors-in-list’ is gone.  The error list
+          automatically highlights the error at point now [GH-214](2)
+
+        - Remove obsolete ‘flycheck-declare-checker’
+
+   - New syntax checkers:
+
+        - YAML [GH-236](3)
+
+        - Javascript with ‘gjslint’ [GH-245](4)
+
+        - Slim [GH-246](5)
+
+        - PHP using ‘phpmd’ [GH-249](6)
+
+   - New features:
+
+        - Support IDO or Grizzl(7) as completion systems for
+          ‘flycheck-select-checker’ at ‘C-c ! s’
+
+        - Disable standard error navigation with
+          ‘flycheck-standard-error-navigation’ [GH-202](8)
+
+        - Add ‘flycheck-clang-language-standard’ to choose the language
+          standard for C/C++ syntax checking [GH-207](9)
+
+        - Add ‘flycheck-clang-definitions’ to set additional definitions
+          for C/C++ syntax checking [GH-207](10)
+
+        - Add ‘flycheck-clang-no-rtti’ to disable RTTI for C/C++ syntax
+          checking [GH-207](11)
+
+        - Add new option cell ‘option-flag’ for boolean flags in syntax
+          checker commands
+
+        - Add ‘flycheck-clang-includes’ to include additional files for
+          C/C++ syntax checking [GH-207](12)
+
+        - Add configuration file variable ‘flycheck-pylintrc’ for Pylint
+
+        - New faces ‘flycheck-error-list-highlight-at-point’ and
+          ‘flycheck-error-list-highlight’ to highlight the errors at
+          point and at the current line respectively in the error list
+          [GH-214](13)
+
+        - The error list now automatically updates to show the errors of
+          the current buffer [GH-214](14)
+
+        - Define new error levels with ‘flycheck-define-error-level’
+          [GH-212](15)
+
+        - Add ‘flycheck-clang-standard-library’ to choose the standard
+          library for C/C++ syntax checking [GH-234](16)
+
+        - Customize the delay for displaying errors via
+          ‘flycheck-display-errors-delay’ [GH-243](17)
+
+        - Add ‘info’ level for informational annotations by syntax
+          checkers [GH-215](18)
+
+        - Add a new symbol ‘temporary-file-name’ to pass temporary file
+          names to syntax checkers [GH-259](19)
+
+   - Improvements:
+
+        - The error list now refreshes automatically after each syntax
+          check [GH-214](20)
+
+        - The errors at point are now automatically highlighted in the
+          error list [GH-214](21)
+
+        - ‘emacs-lisp-checkdoc’ does not longer check ‘.dir-locals.el’
+          files
+
+        - Do not automatically check syntax in encrypted files
+          [GH-222](22)
+
+        - Parse notes from ‘c/c++-clang’ into info level messages
+          [GH-215](23)
+
+        - Parse convention warnings from ‘pylint’ to info level
+          [GH-204](24)
+
+        - Demote naming warnings from ‘python-flake8’ to info level
+          [GH-215](25)
+
+        - Support ‘enh-ruby-mode’ in Ruby syntax checkers [GH-256](26)
+
+        - Parse columns from ‘python-pylint’ errors
+
+        - Do not compress temporary files for syntax checks if the
+          original file was compressed
+
+   - Bug fixes:
+
+        - Find local includes in the Clang syntax checker [GH-225](27)
+
+        - Do not emit spurious flawed definition warning in the ‘rst’
+          syntax checker
+
+        - Handle abbreviated file names in ‘luac’ output, by simply
+          ignoring them [GH-251](28)
+
+        - Correctly redirect the output binary of the ‘go-build’ syntax
+          checker [GH-259](29)
+
+        - Fix Cppcheck parsing with the built-in Emacs XML parser
+          [GH-263](30)
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues/214
+
+   (2) https://github.com/flycheck/flycheck/issues/214
+
+   (3) https://github.com/flycheck/flycheck/issues/236
+
+   (4) https://github.com/flycheck/flycheck/issues/245
+
+   (5) https://github.com/flycheck/flycheck/issues/246
+
+   (6) https://github.com/flycheck/flycheck/issues/249
+
+   (7) https://github.com/d11wtq/grizzl
+
+   (8) https://github.com/flycheck/flycheck/issues/202
+
+   (9) https://github.com/flycheck/flycheck/issues/207
+
+   (10) https://github.com/flycheck/flycheck/issues/207
+
+   (11) https://github.com/flycheck/flycheck/issues/207
+
+   (12) https://github.com/flycheck/flycheck/issues/207
+
+   (13) https://github.com/flycheck/flycheck/issues/214
+
+   (14) https://github.com/flycheck/flycheck/issues/214
+
+   (15) https://github.com/flycheck/flycheck/issues/212
+
+   (16) https://github.com/flycheck/flycheck/issues/234
+
+   (17) https://github.com/flycheck/flycheck/issues/243
+
+   (18) https://github.com/flycheck/flycheck/issues/215
+
+   (19) https://github.com/flycheck/flycheck/issues/259
+
+   (20) https://github.com/flycheck/flycheck/issues/214
+
+   (21) https://github.com/flycheck/flycheck/issues/214
+
+   (22) https://github.com/flycheck/flycheck/issues/222
+
+   (23) https://github.com/flycheck/flycheck/issues/215
+
+   (24) https://github.com/flycheck/flycheck/issues/204
+
+   (25) https://github.com/flycheck/flycheck/issues/215
+
+   (26) https://github.com/flycheck/flycheck/issues/256
+
+   (27) https://github.com/flycheck/flycheck/issues/225
+
+   (28) https://github.com/flycheck/flycheck/issues/251
+
+   (29) https://github.com/flycheck/flycheck/issues/259
+
+   (30) https://github.com/flycheck/flycheck/issues/263
+
+\1f
+File: flycheck.info,  Node: 0 14 1 Aug 16 2013,  Next: 0 14 Aug 15 2013,  Prev: 0 15 Nov 15 2013,  Up: Changelog
+
+8.2.10 0.14.1 (Aug 16, 2013)
+----------------------------
+
+   - Bug fixes:
+
+        - Add a missing dependency [GH-194](1)
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues/194
+
+\1f
+File: flycheck.info,  Node: 0 14 Aug 15 2013,  Next: 0 13 Jun 28 2013,  Prev: 0 14 1 Aug 16 2013,  Up: Changelog
+
+8.2.11 0.14 (Aug 15, 2013)
+--------------------------
+
+   - *Breaking changes*:
+
+        - Introduce ‘flycheck-define-checker’ and obsolete
+          ‘flycheck-declare-checker’ [GH-163](1)
+
+        - Remove the obsolete ‘flycheck-error-face’ and
+          ‘flycheck-warning-face’
+
+        - Do not initialize packages by default in ‘emacs-lisp’ syntax
+          checker for non-configuration files [GH-176](2)
+
+        - Change the default ‘flycheck-highlighting-mode’ to ‘symbols’
+          [GH-179](3)
+
+        - Drop support for Pylint 0.x in ‘python-pylint’ [GH-184](4)
+
+   - New features:
+
+        - List errors at point only with prefix arg to
+          ‘flycheck-list-errors’ [GH-166](5)
+
+        - Add new display function ‘flycheck-display-errors-in-list’ to
+          display errors at point in the error list [GH-166](6)
+
+        - New ‘option-list’ argument cell to pass option lists to a
+          syntax checker
+
+        - New ‘flycheck-emacs-lisp-load-path’ option to customize the
+          ‘load-path’ used by the ‘emacs-lisp’ syntax checker
+          [GH-174](7)
+
+        - New ‘flycheck-emacs-lisp-initialize-packages’ option to
+          initialize packages in the ‘emacs-lisp’ syntax checker
+          [GH-176](8)
+
+        - New ‘flycheck-emacs-lisp-package-user-dir’ option to configure
+          the package directory for the ‘emacs-lisp’ syntax checker
+          [GH-176](9)
+
+        - New option filter ‘flycheck-option-comma-separated-list’ for
+          options with comma separated lists as values
+
+        - New highlighting mode ‘symbols’ to highlight the symbol
+          pointed to by an error [GH-179](10)
+
+   - New syntax checkers:
+
+        - LESS [GH-160](11)
+
+        - Haskell with ‘ghc’, ‘hdevtools’ and ‘hlint’ [GH-162](12)
+
+        - C/C++ with ‘cppcheck’ [GH-170](13)
+
+        - C/C++ with ‘clang’ [GH-172](14)
+
+        - CoffeeScript with ‘coffee’
+
+        - XML with ‘xmllint’ [GH-180](15)
+
+        - D with ‘dmd’ [GH-167](16)
+
+   - Improvements:
+
+        - Support Web Mode in ‘html-tidy’ syntax checker [GH-157](17)
+
+        - Support Rubocop 0.9 and drop support for older Rubocop
+          releases [GH-159](18)
+
+        - Include the message ID in error messages from ‘python-pylint’
+
+   - Bug fixes:
+
+        - Fix warnings about flawed definitions in ‘emacs-lisp’ and
+          ‘emacs-lisp-checkdoc’, caused by faulty formatting of sexps
+
+        - Refresh error lists when pressing ‘g’ [GH-166](19)
+
+        - Do not obscure active minibuffer input when displaying errors
+          in the echo area [GH-175](20)
+
+        - Fix universal prefix argument for ‘flycheck-next-error’ at
+          ‘C-c ! n’
+
+        - Correctly parse output of ‘coffeelint’ 0.5.7 [GH-192](21)
+
+        - Correctly parse output of ‘pylint’ 1.0 [GH-184](22)
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues/163
+
+   (2) https://github.com/flycheck/flycheck/issues/176
+
+   (3) https://github.com/flycheck/flycheck/issues/179
+
+   (4) https://github.com/flycheck/flycheck/issues/184
+
+   (5) https://github.com/flycheck/flycheck/issues/166
+
+   (6) https://github.com/flycheck/flycheck/issues/166
+
+   (7) https://github.com/flycheck/flycheck/issues/174
+
+   (8) https://github.com/flycheck/flycheck/issues/176
+
+   (9) https://github.com/flycheck/flycheck/issues/176
+
+   (10) https://github.com/flycheck/flycheck/issues/179
+
+   (11) https://github.com/flycheck/flycheck/issues/160
+
+   (12) https://github.com/flycheck/flycheck/issues/162
+
+   (13) https://github.com/flycheck/flycheck/issues/170
+
+   (14) https://github.com/flycheck/flycheck/issues/172
+
+   (15) https://github.com/flycheck/flycheck/issues/180
+
+   (16) https://github.com/flycheck/flycheck/issues/167
+
+   (17) https://github.com/flycheck/flycheck/issues/157
+
+   (18) https://github.com/flycheck/flycheck/issues/159
+
+   (19) https://github.com/flycheck/flycheck/issues/166
+
+   (20) https://github.com/flycheck/flycheck/issues/175
+
+   (21) https://github.com/flycheck/flycheck/issues/192
+
+   (22) https://github.com/flycheck/flycheck/issues/184
+
+\1f
+File: flycheck.info,  Node: 0 13 Jun 28 2013,  Next: 0 12 May 18 2013,  Prev: 0 14 Aug 15 2013,  Up: Changelog
+
+8.2.12 0.13 (Jun 28, 2013)
+--------------------------
+
+   - *Breaking changes*:
+
+        - Obsolete ‘flycheck-warning-face’ and ‘flycheck-error-face’ in
+          favor ‘flycheck-warning’ and ‘flycheck-error’ respectively
+
+        - Obsolete ‘:predicate’ forms in favor of ‘:predicate’ functions
+
+        - ‘flycheck-def-config-file-var’ does not automatically mark
+          variables as safe anymore
+
+   - New features:
+
+        - Make fringe indicator faces customizable independently with
+          ‘flycheck-fringe-error’ and ‘flycheck-fringe-warning’
+
+        - Improve the default faces by using underlines instead of
+          foreground colors, if possible
+
+        - Customizable error processing with
+          ‘flycheck-process-error-functions’ [GH-141](1)
+
+        - Make the delay before starting a syntax check customizable via
+          ‘flycheck-idle-change-delay’ [GH-144](2)
+
+        - Make display of errors under point customizable via
+          ‘flycheck-display-errors-function’ [GH-156](3)
+
+   - Improvements
+
+        - Always highlight errors on top of warnings now
+
+        - Do not trigger syntax checks in the middle of commands
+          [GH-141](4)
+
+        - Add the current directory to load path in the ‘emacs-lisp’
+          syntax checker
+
+        - Do not longer use the ‘emacs-lisp-checkdoc’ syntax checker in
+          Scratch buffers
+
+        - Do not flush temporary files onto disk [GH-149](5)
+
+        - Syntax checkers may have error patterns and error parser now
+
+        - Predicate forms are now wrapped into functions and compiled
+          into functions during byte compilation
+
+        - Copy each message separately in
+          ‘flycheck-copy-messages-as-kill’
+
+        - Mark some customizable variables as safe for file variable
+          usage, most notably ‘flycheck-indication-mode’,
+          ‘flycheck-highlighting-mode’ and ‘flycheck-idle-change-delay’.
+
+   - Bug fixes:
+
+        - Fix error when searching for a configuration file outside a
+          Projectile project
+
+        - Do not start a syntax check before the ‘flycheck-mode-hook’
+          was run
+
+        - Do not start automatic syntax checks if Flycheck Mode is
+          disabled
+
+        - Defer the initial syntax check until after the current
+          interactive command [GH-143](6)
+
+        - Correctly clean up information about running processes
+
+        - Fix compatibility with Emacs 24.2 and earlier [GH-150](7)
+
+        - Fix version information on Emacs trunk builds
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues/141
+
+   (2) https://github.com/flycheck/flycheck/issues/144
+
+   (3) https://github.com/flycheck/flycheck/issues/156
+
+   (4) https://github.com/flycheck/flycheck/issues/141
+
+   (5) https://github.com/flycheck/flycheck/issues/149
+
+   (6) https://github.com/flycheck/flycheck/issues/143
+
+   (7) https://github.com/flycheck/flycheck/issues/150
+
+\1f
+File: flycheck.info,  Node: 0 12 May 18 2013,  Next: 0 11 May 01 2013,  Prev: 0 13 Jun 28 2013,  Up: Changelog
+
+8.2.13 0.12 (May 18, 2013)
+--------------------------
+
+   - New syntax checkers:
+
+        - Ruby using ‘jruby’ [GH-136](1)
+
+        - Puppet [GH-138](2)
+
+   - New features:
+
+        - Highlight error expressions by default, with the new ‘sexps’
+          highlighting mode
+
+        - Automatically check syntax some time after the last change in
+          the buffer [GH-140](3)
+
+        - Add ‘flycheck-version’ to determine the installed Flycheck
+          version
+
+        - Add ‘flycheck-list-errors’, mapped to ‘C-c ! l’, to list all
+          errors in a separate buffer
+
+   - Improvements:
+
+        - Defer syntax checks while a buffer is reverted, to avoid race
+          conditions
+
+   - Bug fixes:
+
+        - Correctly parse syntax errors from JRuby [GH-136](4)
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues/136
+
+   (2) https://github.com/flycheck/flycheck/issues/138
+
+   (3) https://github.com/flycheck/flycheck/issues/140
+
+   (4) https://github.com/flycheck/flycheck/issues/136
+
+\1f
+File: flycheck.info,  Node: 0 11 May 01 2013,  Next: 0 10 Apr 21 2013,  Prev: 0 12 May 18 2013,  Up: Changelog
+
+8.2.14 0.11 (May 01, 2013)
+--------------------------
+
+   - New syntax checkers:
+
+        - Scala [GH-124](1)
+
+   - New features:
+
+        - Customizable error indication with control of the fringe side,
+          via ‘flycheck-indication-mode’
+
+        - Customizable automatic syntax checking, via
+          ‘flycheck-check-syntax-automatically’ [GH-128](2)
+
+        - Customizable configuration file search, via
+          ‘flycheck-locate-config-file-functions’ [GH-133](3)
+
+        - Find configuration files in Projectile(4) projects
+
+        - Add ‘flycheck-before-syntax-check-hook’ and
+          ‘flycheck-syntax-check-failed-hook’
+
+   - Improvements:
+
+        - The ‘ruby’ syntax checker now differentiates warnings from
+          errors [GH-123](5)
+
+        - Faces are now in a separate customization group
+
+   - Bug fixes:
+
+        - Add missing customization group for syntax checker options
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues/124
+
+   (2) https://github.com/flycheck/flycheck/issues/128
+
+   (3) https://github.com/flycheck/flycheck/issues/133
+
+   (4) https://github.com/bbatsov/projectile
+
+   (5) https://github.com/flycheck/flycheck/issues/123
+
+\1f
+File: flycheck.info,  Node: 0 10 Apr 21 2013,  Next: 0 9 Apr 13 2013,  Prev: 0 11 May 01 2013,  Up: Changelog
+
+8.2.15 0.10 (Apr 21, 2013)
+--------------------------
+
+   - Flycheck uses ‘cl-lib’ now.  This library is built-in as of GNU
+     Emacs 24.3.  For earlier releases of GNU Emacs 24 an additional
+     compatibility library will be installed from GNU ELPA.
+
+   - New syntax checkers:
+
+        - POSIX Shell script using ‘bash’ [GH-112](1)
+
+        - Ruby using ‘rubocop’ [GH-113](2)
+
+        - Elixir [GH-108](3)
+
+        - Erlang [GH-122](4)
+
+   - Removed syntax checkers:
+
+        - Python using Pyflakes.  Use the superior Flake8 syntax checker
+          [GH-115](5)
+
+   - New features:
+
+        - Add ‘flycheck-copy-messages-as-kill’, mapped to ‘C-c ! C-w’,
+          to copy all error messages under point into kill ring
+
+        - Add ‘flycheck-google-messages’, mapped to ‘C-c ! /’, to google
+          for error messages under point.  Needs the Google This(6)
+          library
+
+        - Syntax checkers can redirect output to a temporary directory
+          now using the ‘temporary-directory’ argument symbol
+
+   - Improvements:
+
+        - Call option filters for ‘nil’ values, too
+
+        - Improve error parsing in Bash syntax checker [GH-112](7)
+
+        - Error navigation does not cross restrictions in narrowed
+          buffers anymore
+
+        - Try to preserve the non-directory part of the buffer’s file
+          name when substituting the ‘source’ symbol [GH-99](8)
+
+   - Bug fixes:
+
+        - Fix error highlighting and navigation in narrowed buffers
+
+        - Use a hopefully more reliable way to parse output of PHP
+          CodeSniffer [GH-118](9)
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues/112
+
+   (2) https://github.com/flycheck/flycheck/issues/113
+
+   (3) https://github.com/flycheck/flycheck/issues/108
+
+   (4) https://github.com/flycheck/flycheck/issues/122
+
+   (5) https://github.com/flycheck/flycheck/issues/115
+
+   (6) https://github.com/Bruce-Connor/emacs-google-this
+
+   (7) https://github.com/flycheck/flycheck/issues/112
+
+   (8) https://github.com/flycheck/flycheck/issues/99
+
+   (9) https://github.com/flycheck/flycheck/issues/118
+
+\1f
+File: flycheck.info,  Node: 0 9 Apr 13 2013,  Next: 0 8 Apr 9 2013,  Prev: 0 10 Apr 21 2013,  Up: Changelog
+
+8.2.16 0.9 (Apr 13, 2013)
+-------------------------
+
+   - New syntax checkers:
+
+        - SCSS using ‘scss’ [GH-103](1)
+
+        - RST (ReStructuredText) using Docutils
+
+        - Go using ‘go build’ and ‘go test’ [GH-107](2)
+
+   - Improvements:
+
+        - Quit the error message window when navigating away from error
+          locations
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues/103
+
+   (2) https://github.com/flycheck/flycheck/issues/107
+
+\1f
+File: flycheck.info,  Node: 0 8 Apr 9 2013,  Next: 0 7 1 Feb 23 2013,  Prev: 0 9 Apr 13 2013,  Up: Changelog
+
+8.2.17 0.8 (Apr 9, 2013)
+------------------------
+
+   - New syntax checkers:
+
+        - Go using ‘gofmt’ [GH-91](1)
+
+        - Rust using ‘rustc’ [GH-101](2)
+
+   - New features:
+
+        - Add a global Flycheck mode.  ‘(global-flycheck-mode)’ is now
+          the recommended way to enable Flycheck [GH-29](3)
+
+        - Add support for syntax checker options [GH-72](4)
+
+        - Add option for the coding standard used by the ‘php-phpcs’
+          syntax checker
+
+        - Add options for the maximum McCabe complexity and the maximum
+          line length to ‘python-flake8’
+
+   - Improvements:
+
+        - Support McCabe warnings in ‘python-flake8’
+
+        - Support warnings from ‘flake8’ 2
+
+        - Show long error messages in a popup buffer [GH-94](5)
+
+        - Show all error messages at point [GH-96](6)
+
+        - Add support for naming warings from ‘flake8’ 2 [GH-98](7)
+
+        - Flycheck mode is not longer enabled for buffers whose names
+          start with a space
+
+        - Improve highlighting to reduce screen flickering [GH-100](8)
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues/91
+
+   (2) https://github.com/flycheck/flycheck/issues/101
+
+   (3) https://github.com/flycheck/flycheck/issues/29
+
+   (4) https://github.com/flycheck/flycheck/issues/72
+
+   (5) https://github.com/flycheck/flycheck/issues/94
+
+   (6) https://github.com/flycheck/flycheck/issues/96
+
+   (7) https://github.com/flycheck/flycheck/issues/98
+
+   (8) https://github.com/flycheck/flycheck/issues/100
+
+\1f
+File: flycheck.info,  Node: 0 7 1 Feb 23 2013,  Next: 0 7 Feb 14 2013,  Prev: 0 8 Apr 9 2013,  Up: Changelog
+
+8.2.18 0.7.1 (Feb 23, 2013)
+---------------------------
+
+   - Bug fixes:
+
+        - Do not signal errors from ‘flycheck-mode’ [GH-87](1)
+
+        - Correctly fall back to ‘$HOME’ when searching configuration
+          files
+
+        - Correctly ascend to parent directory when searching
+          configuration files
+
+   - API changes:
+
+        - Rename ‘config’ cell to ‘config-file’
+
+        - Allow to pass the result of ‘config-file’ cells as single
+          argument
+
+        - Add support for evaluating Lisp forms in syntax checker
+          commands [GH-86](2)
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues/87
+
+   (2) https://github.com/flycheck/flycheck/issues/86
+
+\1f
+File: flycheck.info,  Node: 0 7 Feb 14 2013,  Next: 0 6 1 Jan 30 2013,  Prev: 0 7 1 Feb 23 2013,  Up: Changelog
+
+8.2.19 0.7 (Feb 14, 2013)
+-------------------------
+
+   - New features:
+
+        - Navigate to source of syntax checker declarations from syntax
+          checker help
+
+        - Add online Info manual [GH-60](1)
+
+   - Improvements:
+
+        - Use pipes instead of TTYs to read output from syntax checkers
+
+        - Defer syntax checks for invisible buffers [GH-80](2)
+
+        - Immediately display error messages after error navigation
+          [GH-62](3)
+
+   - Bug fixes:
+
+        - Never select deleted buffers
+
+        - Do not let the debugger interfere with necessary cleanup
+          actions
+
+        - Do not attempt to parse empty XML trees [GH-78](4)
+
+        - Fix infinite recursion on Windows [GH-81](5)
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues/60
+
+   (2) https://github.com/flycheck/flycheck/issues/80
+
+   (3) https://github.com/flycheck/flycheck/issues/62
+
+   (4) https://github.com/flycheck/flycheck/issues/78
+
+   (5) https://github.com/flycheck/flycheck/issues/81
+
+\1f
+File: flycheck.info,  Node: 0 6 1 Jan 30 2013,  Next: 0 6 Jan 29 2013,  Prev: 0 7 Feb 14 2013,  Up: Changelog
+
+8.2.20 0.6.1 (Jan 30, 2013)
+---------------------------
+
+   - Fix package dependencies
+
+\1f
+File: flycheck.info,  Node: 0 6 Jan 29 2013,  Next: 0 5 Dec 28 2012,  Prev: 0 6 1 Jan 30 2013,  Up: Changelog
+
+8.2.21 0.6 (Jan 29, 2013)
+-------------------------
+
+   - New syntax checkers:
+
+        - Emacs Lisp with ‘checkdoc-current-buffer’ [GH-53](1)
+
+        - PHP with PHP CodeSniffer [GH-72](2)
+
+   - Removed syntax checkers:
+
+        - Javascript with ‘jsl’
+
+   - New features:
+
+        - Error navigation with ‘next-error’ and ‘previous-error’
+          [GH-26](3)
+
+        - Fringe icons instead of error indicators [GH-33](4)
+
+        - Menu entry for Flycheck [GH-59](5)
+
+        - Customizable error highlighting, taking the column number into
+          account [GH-35](6)
+
+        - Configuration files for syntax checkers
+
+        - Add configuration file support to the syntax checkers
+          ‘coffee-coffeelint’, ‘html-tidy’, ‘javascript-jshint’,
+          ‘pyton-flake8’ and ‘tex-chktex’
+
+        - Allow to compile a buffer with a syntax checker for testing
+          purposes [GH-58](7)
+
+        - Use multiple syntax checkers during a syntax check [GH-31](8)
+
+        - Add dedicated help for syntax checkers [GH-52](9)
+
+   - Improvements:
+
+        - Match error patterns in order of declaration [GH-55](10)
+
+   - Bug fixes:
+
+        - Inherit highlighting faces from built-in faces [GH-24](11)
+
+        - Correct error patterns of the HTML syntax checker [GH-36](12)
+
+        - Detect syntax errors in the ‘python-flake8’ syntax checker
+          [GH-42](13)
+
+        - Fix various regressions after introducing unit tests
+
+        - Inhibit syntax checking during package installation
+          [GH-45](14)
+
+        - Disable syntax checking in Tramp buffers [GH-54](15)
+
+        - Preserve whitespace in error messages [GH-65](16)
+
+   - API changes:
+
+        - Replace syntax checker variables with syntax checker
+          declarations [GH-41](17)
+
+        - Support parsing errors with arbitrary functions instead of
+          error patterns [GH-38](18)
+
+        - Add an error parser for Checkstyle-like XML output [GH-38](19)
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues/53
+
+   (2) https://github.com/flycheck/flycheck/issues/72
+
+   (3) https://github.com/flycheck/flycheck/issues/26
+
+   (4) https://github.com/flycheck/flycheck/issues/33
+
+   (5) https://github.com/flycheck/flycheck/issues/59
+
+   (6) https://github.com/flycheck/flycheck/issues/35
+
+   (7) https://github.com/flycheck/flycheck/issues/58
+
+   (8) https://github.com/flycheck/flycheck/issues/31
+
+   (9) https://github.com/flycheck/flycheck/issues/52
+
+   (10) https://github.com/flycheck/flycheck/issues/55
+
+   (11) https://github.com/flycheck/flycheck/issues/24
+
+   (12) https://github.com/flycheck/flycheck/issues/36
+
+   (13) https://github.com/flycheck/flycheck/issues/42
+
+   (14) https://github.com/flycheck/flycheck/issues/45
+
+   (15) https://github.com/flycheck/flycheck/issues/54
+
+   (16) https://github.com/flycheck/flycheck/issues/65
+
+   (17) https://github.com/flycheck/flycheck/issues/41
+
+   (18) https://github.com/flycheck/flycheck/issues/38
+
+   (19) https://github.com/flycheck/flycheck/issues/38
+
+\1f
+File: flycheck.info,  Node: 0 5 Dec 28 2012,  Next: 0 4 Nov 21 2012,  Prev: 0 6 Jan 29 2013,  Up: Changelog
+
+8.2.22 0.5 (Dec 28, 2012)
+-------------------------
+
+   - New syntax checkers:
+
+        - SASS [GH-15](1)
+
+        - Perl [GH-21](2)
+
+        - XML
+
+        - Lua [GH-30](3)
+
+   - New features:
+
+        - Support manual buffer-local selection of syntax checker
+          [GH-25](4)
+
+        - Add customizable error indicators [GH-28](5)
+
+        - Echo error messages at point without 3rd-party libraries like
+          flymake-cursor [GH-27](6)
+
+   - Improvements:
+
+        - Remember the last automatically selected syntax checker
+          [GH-24](7)
+
+   - Bug fixes:
+
+        - Fix syntax checking of buffers without backing files
+          [GH-19](8)
+
+   - API changes:
+
+        - Replace underlying Flymake API with a custom syntax checking
+          implementation [GH-15](9)
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues/15
+
+   (2) https://github.com/flycheck/flycheck/issues/21
+
+   (3) https://github.com/flycheck/flycheck/issues/30
+
+   (4) https://github.com/flycheck/flycheck/issues/25
+
+   (5) https://github.com/flycheck/flycheck/issues/28
+
+   (6) https://github.com/flycheck/flycheck/issues/27
+
+   (7) https://github.com/flycheck/flycheck/issues/24
+
+   (8) https://github.com/flycheck/flycheck/issues/19
+
+   (9) https://github.com/flycheck/flycheck/issues/15
+
+\1f
+File: flycheck.info,  Node: 0 4 Nov 21 2012,  Next: 0 3 Nov 21 2012,  Prev: 0 5 Dec 28 2012,  Up: Changelog
+
+8.2.23 0.4 (Nov 21, 2012)
+-------------------------
+
+   - Rename the project to Flycheck [GH-5](1)
+
+   - New syntax checkers
+
+        - HAML [GH-9](2)
+
+        - CSS [GH-9](3)
+
+        - Javascript with ‘jsl’ [GH-9](4)
+
+        - Javascript with ‘jshint’ [GH-16](5)
+
+        - JSON [GH-12](6)
+
+        - LaTeX with ‘lacheck’
+
+   - Bug fixes:
+
+        - Fix type error when checking compressed Emacs Lisp [GH-10](7)
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues/5
+
+   (2) https://github.com/flycheck/flycheck/issues/9
+
+   (3) https://github.com/flycheck/flycheck/issues/9
+
+   (4) https://github.com/flycheck/flycheck/issues/9
+
+   (5) https://github.com/flycheck/flycheck/issues/16
+
+   (6) https://github.com/flycheck/flycheck/issues/12
+
+   (7) https://github.com/flycheck/flycheck/issues/10
+
+\1f
+File: flycheck.info,  Node: 0 3 Nov 21 2012,  Next: 0 2 Oct 25 2012,  Prev: 0 4 Nov 21 2012,  Up: Changelog
+
+8.2.24 0.3 (Nov 21, 2012)
+-------------------------
+
+   - Replace ‘flymake-mode’ with a custom syntax checking minor mode
+     [GH-4](1)
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues/4
+
+\1f
+File: flycheck.info,  Node: 0 2 Oct 25 2012,  Next: 0 1 Oct 11 2012,  Prev: 0 3 Nov 21 2012,  Up: Changelog
+
+8.2.25 0.2 (Oct 25, 2012)
+-------------------------
+
+   - New syntax checkers:
+
+        - PHP
+
+   - API changes:
+
+        - Simplify syntax checker declarations [GH-2](1)
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues/2
+
+\1f
+File: flycheck.info,  Node: 0 1 Oct 11 2012,  Prev: 0 2 Oct 25 2012,  Up: Changelog
+
+8.2.26 0.1 (Oct 11, 2012)
+-------------------------
+
+Initial release as flymake-checkers
+
+   - New syntax checkers:
+
+        - TeX/LaTeX
+
+        - Shell scripts
+
+        - Python
+
+        - Ruby
+
+        - Coffeescript
+
+        - Emacs Lisp
+
+\1f
+File: flycheck.info,  Node: Extending Flycheck,  Next: Flycheck API,  Prev: Flycheck releases,  Up: Top
+
+9 Extending Flycheck
+********************
+
+This chapter explains how to add new syntax checkers and how to extend
+built-in syntax checkers, by example.  For a detailed reference on the
+involved types, functions and macros, please refer to the *note Flycheck
+API: 1fc.
+
+     Note: If you define a new syntax checker or have an extension to a
+     built-in syntax checker, please report it to Flycheck (see *note
+     Reporting issues: 8d.), so that we can consider it for inclusion to
+     make it available to all other users of Flycheck.
+
+     If you would like to contribute your extension or your new syntax
+     checker to Flycheck as a patch or pull request, please see *note
+     Contributing code: 1fd. and *note Contributing syntax checkers:
+     1fe.
+
+* Menu:
+
+* Defining new syntax checkers:: 
+* Advanced syntax checker definitions:: 
+* Other ways to extend Flycheck:: 
+
+\1f
+File: flycheck.info,  Node: Defining new syntax checkers,  Next: Advanced syntax checker definitions,  Up: Extending Flycheck
+
+9.1 Defining new syntax checkers
+================================
+
+Flycheck provides the macro *note flycheck-define-checker: 19. to define
+a new syntax checker.  The following example defines a simple syntax
+checker for the popular Pylint(1) tool for Python:
+
+     (flycheck-define-checker python-pylint
+       "A Python syntax and style checker using Pylint.
+
+     See URL `http://www.pylint.org/'."
+       :command ("pylint"
+                 "--msg-template" "{path}:{line}:{column}:{C}:{msg} ({msg_id})"
+                 source)
+       :error-patterns
+       ((error line-start (file-name) ":" line ":" column ":"
+               (or "E" "F") ":" (message) line-end)
+        (warning line-start (file-name) ":" line ":" column ":"
+                 (or "W" "R") ":" (message) line-end)
+        (info line-start (file-name) ":" line ":" column ":"
+              "C:" (message) line-end))
+       :modes python-mode)
+
+The first argument to *note flycheck-define-checker: 19. is the _name_
+of a syntax checker, by which we can refer to this particular syntax
+checker.
+
+Next comes the _docstring_, which should provide a bit of information
+about the syntax checker.  It’s a good idea to provide a link to the
+homepage of the syntax checker tool here.  You can view this docstring
+in Emacs with *note flycheck-describe-checker: 3a. or ‘C-c ! ?’, e.g.
+‘C-c ! ? texinfo’.
+
+Eventually we specify the _properties_ of the new syntax checker.  These
+properties tell Flycheck when to use your new syntax checker, how to run
+it, and how to parse its output:
+
+   - The ‘:command’ specifies the command Flycheck should run to check
+     the buffer.  It’s a simple list containing the executable and its
+     arguments.
+
+     In our example we first the ‘--msg-template’ option to Pylint to
+     configure a comprehensive and parseable output format.
+
+     Then we use the “special” ‘source’ argument to pass the contents of
+     the buffer as input file to ‘pylint’.  Whenever it sees the
+     ‘source’ argument, Flycheck creates a temporary file, fills it with
+     the current contents of the buffer and passes that file to the
+     syntax checker.  This allows to check the real contents of a buffer
+     even if the buffer is not saved to disk.
+
+   - The ‘:error-patterns’ tell Flycheck how to parse the output of the
+     command in order to obtain error locations.  Each pattern has a
+     _level_, followed by ‘rx’ forms which specify a regular expression
+     to find an error in the output of the command.
+
+     Flycheck understands three error levels by default: ‘error’ is for
+     critical errors that absolutely require the user’s attention (e.g.
+     syntax errors), ‘warning’ is for issues that can be ignored, but
+     should not (e.g.  unused variables), and ‘info’ is for other
+     messages that provide information about the buffer, but do not
+     immediately require action from the user.
+
+     See also
+.............
+
+     *note flycheck-define-error-level: 27.; to define custom error
+     levels
+
+     Flycheck provides special ‘rx’ forms to extract the relevant
+     information from each error:
+
+        - The ‘(file-name)’ and ‘(message)’ forms match a sequence of
+          any character save new line as file name and message of the
+          error.  Both optionally accept further ‘rx’ forms, to specify
+          an alternative regular expression to match the file name or
+          the message, for instance to parse multi-line error messages.
+
+        - The ‘line’ and ‘column’ forms match a sequence of one or more
+          digits as line and column respectively of the error.
+
+     See also
+.............
+
+     *note flycheck-rx-to-string: 200.; for a list of all special ‘rx’
+     forms provided by Flycheck and their reference
+
+   - The ‘:modes’ property denotes the major modes, in which Flycheck
+     may use this syntax checker.  JSHint checks Javascript, so the
+     ‘:modes’ of our example specifies Emacs’ builtin Javascript Mode,
+     and the popular 3rd-party JS2 Mode.
+
+See also
+........
+
+*note flycheck-substitute-argument: 201.; for a complete list of all
+special arguments
+
+* Menu:
+
+* Finding the right error patterns:: 
+* Trying a new syntax checker:: 
+* Registering new syntax checkers:: 
+
+   ---------- Footnotes ----------
+
+   (1) http://www.pylint.org/
+
+\1f
+File: flycheck.info,  Node: Finding the right error patterns,  Next: Trying a new syntax checker,  Up: Defining new syntax checkers
+
+9.1.1 Finding the right error patterns
+--------------------------------------
+
+Finding the right error patterns is the hardest part of a syntax checker
+definition.  For a first version, you just run the tool on a file, look
+at its output and write a regular expression to match it.  ‘M-x shell’
+comes handy here.
+
+However, as you start to debug and refine your patterns, this quickly
+becomes cumbersome.  Flycheck provides an easier way to test a syntax
+checker: Evaluate the syntax checker definition with ‘C-M-x’ and run
+*note flycheck-compile: 19c.
+
+ -- Command: C -c ! C-c
+ -- Command: M -x flycheck-compile
+
+     Run a syntax checker on the current buffer in a fresh Compilation
+     Mode buffer.  Prompt for a syntax checker to run.
+
+This command runs the command like a normal syntax check would do, but
+instead of highlighting errors within the buffer it shows a new buffer
+in Compilation Mode, which contains the entire output of the command and
+highlights everything that matches a pattern.
+
+Sometimes however an output format doesn’t lend itself to error
+patterns.  In this case, you need to write a more sophisticated parser
+yourself.  See *note Parsing structured output format: 204. for more
+information.
+
+\1f
+File: flycheck.info,  Node: Trying a new syntax checker,  Next: Registering new syntax checkers,  Prev: Finding the right error patterns,  Up: Defining new syntax checkers
+
+9.1.2 Trying a new syntax checker
+---------------------------------
+
+After evaluating a syntax checker definition you can try whether it
+works for normal syntax checks by selecting it manually with ‘C-c ! s’
+(*note flycheck-select-checker: 24.).  If anything breaks, you can
+unselect the syntax checker again with ‘C-u C-c ! s’ and fix the error
+without further affecting Flycheck.
+
+Once you have confirmed that your new syntax checker works flawlessly,
+you can make it available for automatic syntax checking by registering
+it.
+
+\1f
+File: flycheck.info,  Node: Registering new syntax checkers,  Prev: Trying a new syntax checker,  Up: Defining new syntax checkers
+
+9.1.3 Registering new syntax checkers
+-------------------------------------
+
+To register a new syntax checker for automatic syntax checking, just add
+it to *note flycheck-checkers: 5e.:
+
+     (add-to-list 'flycheck-checkers 'flycheck-jshint)
+
+Flycheck will try all syntax checkers in this variable when checking a
+buffer automatically, and check the buffer with the first syntax checker
+in this list whose ‘:modes’ contains the current major mode.
+
+     Note: Do *not* use *note flycheck-checker: 23. and *note
+     flycheck-select-checker: 24. to enable your own syntax checker in
+     Flycheck extensions.  They are reserved for *user customization*.
+
+     Specifically, please do *not* provide a hook function which selects
+     the syntax checker explicitly by assigning to *note
+     flycheck-checker: 23. or by calling *note flycheck-select-checker:
+     24.  In other words, this is *bad*:
+
+          (defun enable-my-new-syntax-checker ()
+            (setq flycheck-checker 'my-new-syntax-checker)
+            (flycheck-buffer))
+
+          (add-hook 'my-major-mode-hook #'enable-my-new-syntax-checker)
+
+     This circumvents the entire automatic selection of Flycheck, and
+     prevents the user from effectively customizing Flycheck.
+
+     Instead, just register your syntax checker in *note
+     flycheck-checkers: 5e. and let Flycheck automatically pick the best
+     syntax checker.  In other words, this is *good*:
+
+          (add-to-list 'flycheck-checkers 'my-new-syntax-checker)
+
+\1f
+File: flycheck.info,  Node: Advanced syntax checker definitions,  Next: Other ways to extend Flycheck,  Prev: Defining new syntax checkers,  Up: Extending Flycheck
+
+9.2 Advanced syntax checker definitions
+=======================================
+
+* Menu:
+
+* Parsing structured output format:: 
+* Passing options and configuration files to syntax checkers:: 
+* Controlling the use of a syntax checker:: 
+* Applying more than one syntax checker:: 
+
+\1f
+File: flycheck.info,  Node: Parsing structured output format,  Next: Passing options and configuration files to syntax checkers,  Up: Advanced syntax checker definitions
+
+9.2.1 Parsing structured output format
+--------------------------------------
+
+If your syntax checker tool offers some structured output format as
+alternative to human-readable free text, you can use an ‘:error-parser’
+function instead of writing an error pattern.  For instance, JSHint(1)
+offers the widely spread Checkstyle XML output format which Flycheck
+supports out of the box:
+
+     (flycheck-define-checker javascript-jshint
+       "A JavaScript syntax and style checker using jshint.
+
+     See URL `http://www.jshint.com'."
+       :command ("jshint" "--checkstyle-reporter" source)
+       :error-parser flycheck-parse-checkstyle
+       :modes (js-mode js2-mode js3-mode))
+
+As you can see, there are no patterns in this definition.  Instead
+Flycheck calls the function *note flycheck-parse-checkstyle: 17a. to
+parse the output.  This function parses the XML to extract the errors.
+It’s built-in into Flycheck, so if your tool supports Checkstyle XML,
+error parsing comes *for free* in Flycheck.
+
+See also
+........
+
+*note Error parsers: 20a.; for more information about error parsers
+
+   ---------- Footnotes ----------
+
+   (1) http://www.jshint.com/
+
+\1f
+File: flycheck.info,  Node: Passing options and configuration files to syntax checkers,  Next: Controlling the use of a syntax checker,  Prev: Parsing structured output format,  Up: Advanced syntax checker definitions
+
+9.2.2 Passing options and configuration files to syntax checkers
+----------------------------------------------------------------
+
+Many linting tools provide a rich set of options to configure their
+analysis.  Flycheck makes it to define proper Emacs options and map them
+to options of commands.
+
+For instance, the Rubocop(1) tool checks Ruby for semantic and stylistic
+issues.  Since style is mainly a matter of taste, it has a special
+linting mode in which all stylistic checks are disabled (error patterns
+omitted for readability):
+
+     (flycheck-define-checker ruby-rubocop
+       "A Ruby syntax and style checker using the RuboCop tool.
+
+     See URL `http://batsov.com/rubocop/'."
+       :command ("rubocop" "--format" "emacs"
+                 (option-flag "--lint" flycheck-rubocop-lint-only)
+                 source)
+       :error-patterns ...
+       :modes (ruby-mode))
+
+Note the special ‘option-flag’ argument, which splices the value of the
+boolean Emacs option ‘flycheck-rubocop-lint-only’ into the command: If
+the variable is non-nil, Flycheck adds the ‘--lint’ option to the final
+command line, other Flycheck omits the entire argument.
+
+Flycheck also supports other special ‘option-’ arguments for plain
+values or lists of values.
+
+See also
+........
+
+flycheck-substitute-argument; for a list of all special ‘option-’
+arguments
+
+Flycheck also provides a convenience macro *note
+flycheck-def-option-var: 20d. to declare these options:
+
+     (flycheck-def-option-var flycheck-rubocop-lint-only nil ruby-rubocop
+       "Whether to only report code issues in Rubocop.
+
+     When non-nil, only report code issues in Rubocop, via `--lint'.
+     Otherwise report style issues as well."
+       :safe #'booleanp
+       :type 'boolean)
+
+Essentially, this macro is just a wrapper around the built-in
+‘defcustom’, which additionally keeps track of the syntax checker the
+option belongs to, and adds the option to the appropriate custom group.
+You can pass arbitrary custom keywords to this macro as we did in this
+example: ‘:type’ marks this option as boolean flag, and ‘:safe’ allows
+the use as file-local variable, if the value is boolean.
+
+By a similar mechanism you can also pass paths to configuration files to
+a syntax checker tool.  The aforementioned Pylint(2) reads a
+configuration file for instance:
+
+     (flycheck-define-checker python-pylint
+       "A Python syntax and style checker using Pylint.
+
+     This syntax checker requires Pylint 1.0 or newer.
+
+     See URL `http://www.pylint.org/'."
+       ;; -r n disables the scoring report
+       :command ("pylint" "-r" "n"
+                 "--msg-template" "{path}:{line}:{column}:{C}:{msg} ({msg_id})"
+                 (config-file "--rcfile" flycheck-pylintrc)
+                 source)
+       :error-patterns ...
+       :modes python-mode)
+
+The special ‘config-file’ argument passes a configuration file from
+‘flycheck-pylintrc’ to ‘pylint’, if the value of the variable is
+non-nil.
+
+Flycheck provides a sophisticated logic to find an appropriate
+configuration file.  See *note Syntax checker configuration files: 6b.
+and *note Configuration files for command syntax checkers: 20e. for
+details.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/bbatsov/rubocop
+
+   (2) http://www.pylint.org/
+
+\1f
+File: flycheck.info,  Node: Controlling the use of a syntax checker,  Next: Applying more than one syntax checker,  Prev: Passing options and configuration files to syntax checkers,  Up: Advanced syntax checker definitions
+
+9.2.3 Controlling the use of a syntax checker
+---------------------------------------------
+
+If you need more control about when a syntax checker is used for syntax
+checking, you can supply a custom ‘:predicate’ function.  Consider the
+following syntax checker for Zsh scripts in Sh Mode:
+
+     (flycheck-define-checker sh-zsh
+       "A Zsh syntax checker using the Zsh shell.
+
+     See URL `http://www.zsh.org/'."
+       :command ("zsh" "-n" "-d" "-f" source)
+       :error-patterns
+       ((error line-start (file-name) ":" line ": " (message) line-end))
+       :modes sh-mode
+       :predicate (lambda () (eq sh-shell 'zsh)))
+
+Sh Mode also supports Bash and other shells besides Zsh, so we
+additionally provide a ‘:predicate’ that checks whether the current
+buffer has the right shell.
+
+You can even omit ‘:modes’ and only use a predicate to determine whether
+a syntax checker is applicable for the current buffer.
+
+\1f
+File: flycheck.info,  Node: Applying more than one syntax checker,  Prev: Controlling the use of a syntax checker,  Up: Advanced syntax checker definitions
+
+9.2.4 Applying more than one syntax checker
+-------------------------------------------
+
+Frequently, we would like to use multiple syntax checkers in a buffer.
+For instance, we might want to check the syntax of a script with
+‘sh-zsh’ from the previous section, and then use Shellcheck(1) to check
+for questionable code such as unquoted variable expansions, if there are
+no syntax errors.  Flycheck supports this scenario by _chaining_ syntax
+checkers.
+
+Suppose we defined a syntax checker for Shellcheck called
+‘sh-shellcheck’ as follows:
+
+     (flycheck-define-checker sh-shellcheck
+       "A shell script syntax and style checker using Shellcheck.
+
+     See URL `https://github.com/koalaman/shellcheck/'."
+       :command ("shellcheck" "-f" "checkstyle"
+                 "-s" (eval (symbol-name sh-shell))
+                 source)
+       :modes sh-mode
+       :error-parser flycheck-parse-checkstyle)
+
+     Note: Note how we use the special ‘eval’ argument to put the result
+     of an arbitrary Emacs Lisp expression into the command line of
+     ‘shellcheck’, in order to tell Shellcheck what shell the script is
+     written for.
+
+We can now arrange for this syntax checker to be used after ‘sh-zsh’
+with *note flycheck-add-next-checker: 212.:
+
+     (flycheck-add-next-checker 'sh-zsh '(warning . sh-shellcheck))
+
+The first item of the cons cell in the second argument is the _maximum
+error level_ in the buffer, for which ‘sh-shellcheck’ is still
+applicable.  With ‘warning’ Flycheck will run ‘sh-shellcheck’ after
+‘sh-zsh’ if there are ‘warning’ or ‘info’ level errors from ‘sh-zsh’,
+but not if there are any errors with level ‘error’, such as syntax
+errors.
+
+Flycheck will only use a chained syntax checker if it is registered in
+*note flycheck-checkers: 5e, so we need to *note register our new syntax
+checker: 206.:
+
+     (add-to-list 'flycheck-checkers 'sh-shellcheck 'append)
+
+Note that unlike before we *append* the new syntax checker at the end of
+‘flycheck-checkers’.  This ensures that Flycheck does not try
+‘sh-shellcheck’ _before_ ‘sh-zsh’.
+
+     Warning: Make sure to append chained syntax checkers to *note
+     flycheck-checkers: 5e.
+
+     Flycheck tries all syntax checkers in this list in *order of
+     appearance*, so if you add your new chained syntax checker at the
+     beginning, it will likely be used right away, before any prior
+     syntax checkers.
+
+You also can specify chained syntax checkers directly in *note
+flycheck-define-checker: 19. with the ‘:next-checkers’ property.
+Instead of calling *note flycheck-add-next-checker: 212, we could also
+have added this property to the definition of ‘sh-zsh’:
+
+     (flycheck-define-checker sh-zsh
+       "A Zsh syntax checker using the Zsh shell.
+
+     See URL `http://www.zsh.org/'."
+       :command ("zsh" "-n" "-d" "-f" source)
+       :error-patterns ...
+       :modes sh-mode
+       :predicate (lambda () (eq sh-shell 'zsh))
+       :next-checkers ((warning . sh-shellcheck)))
+
+     Note: If you control the definition of both syntax checkers, this
+     style is *preferable* to *note flycheck-add-next-checker: 212.  Use
+     this function only if you cannot change the definition of the prior
+     syntax checker.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/koalaman/shellcheck/
+
+\1f
+File: flycheck.info,  Node: Other ways to extend Flycheck,  Prev: Advanced syntax checker definitions,  Up: Extending Flycheck
+
+9.3 Other ways to extend Flycheck
+=================================
+
+* Menu:
+
+* Use arbitrary functions to check buffers:: 
+* Hooking into Flycheck:: 
+
+\1f
+File: flycheck.info,  Node: Use arbitrary functions to check buffers,  Next: Hooking into Flycheck,  Up: Other ways to extend Flycheck
+
+9.3.1 Use arbitrary functions to check buffers
+----------------------------------------------
+
+Beyond commands, Flycheck also supports arbitrary functions as syntax
+checkers with *note flycheck-define-generic-checker: 1b.
+
+\1f
+File: flycheck.info,  Node: Hooking into Flycheck,  Prev: Use arbitrary functions to check buffers,  Up: Other ways to extend Flycheck
+
+9.3.2 Hooking into Flycheck
+---------------------------
+
+Flycheck has a rich hook interface which you can use for your own
+extensions.
+
+* Menu:
+
+* Status changes:: 
+* Error processing:: 
+* Error display:: 
+
+\1f
+File: flycheck.info,  Node: Status changes,  Next: Error processing,  Up: Hooking into Flycheck
+
+9.3.2.1 Status changes
+......................
+
+*note flycheck-before-syntax-check-hook: 218. and
+‘flycheck-after-syntax-check-hook’ run before and after syntax checks,
+and let you update your Emacs instance according to Flycheck’s state.
+For instance, flycheck-color-mode-line(1) uses these hooks to colour
+your mode-line according to the result of the last syntax check.
+Additionally, *note flycheck-status-changed-functions: 19e. runs on
+every single status change of Flycheck, and provides a fine-grained
+reporting about what Flycheck is currently doing.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck-color-mode-line
+
+\1f
+File: flycheck.info,  Node: Error processing,  Next: Error display,  Prev: Status changes,  Up: Hooking into Flycheck
+
+9.3.2.2 Error processing
+........................
+
+The functions in *note flycheck-process-error-functions: 21a. are used
+to process new errors reported by a Flycheck syntax checker.  Add to
+this hook to get informed about each error reported in a Flycheck
+buffer.  In fact, Flycheck uses this hook itself: The standard value
+*note flycheck-add-overlay: 21b. is responsible for adding error
+highlighting to the buffer.  As a consequence, you can *entirely opt
+out* from highlighting with a custom hook.
+
diff --git a/elpa/flycheck-20150125.601/flycheck.info-2 b/elpa/flycheck-20150125.601/flycheck.info-2
new file mode 100644 (file)
index 0000000..03cd9b4
--- /dev/null
@@ -0,0 +1,3771 @@
+This is flycheck.info, produced by makeinfo version 5.2 from
+flycheck.texi.
+
+This manual is for Flycheck version 0.23-cvs.
+
+Copyright © 2014-2015 Sebastian Wiesner
+
+     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>.
+
+INFO-DIR-SECTION Emacs
+START-INFO-DIR-ENTRY
+* flycheck: (flycheck.info). On the fly syntax checking for GNU Emacs
+END-INFO-DIR-ENTRY
+
+
+   Generated by Sphinx 1.2.3.
+
+\1f
+File: flycheck.info,  Node: Error display,  Prev: Error processing,  Up: Hooking into Flycheck
+
+9.3.2.3 Error display
+.....................
+
+The function *note flycheck-display-errors-function: 2b. is called to
+display an error at point.  The flycheck-pos-tip(1) extension uses this
+hook to show errors in a GUI popup like conventional IDEs do.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck-pos-tip
+
+\1f
+File: flycheck.info,  Node: Flycheck API,  Next: Flycheck ERT API,  Prev: Extending Flycheck,  Up: Top
+
+10 Flycheck API
+***************
+
+This chapter defines and documents the public API of Flycheck.  You can
+use this API to define your own syntax checkers, or extend existing
+syntax checkers, or by extending Flycheck in entirely new ways, e.g.  to
+add some sophisticated error analysis.
+
+You will also find this document helpful if you want to develop Flycheck
+itself.
+
+* Menu:
+
+* Syntax checks:: 
+* Generic syntax checkers: Generic syntax checkers<2>. 
+* Command syntax checkers:: 
+* Errors:: 
+* Flycheck buffer status:: 
+* Utilities:: 
+
+\1f
+File: flycheck.info,  Node: Syntax checks,  Next: Generic syntax checkers<2>,  Up: Flycheck API
+
+10.1 Syntax checks
+==================
+
+A syntax check performs the following steps:
+
+  1. Run hooks in *note flycheck-before-syntax-check-hook: 218.
+
+  2. Clear error information from previous syntax checks.
+
+  3. Select a *note suitable syntax checker: 53.
+
+  4. Copy the contents of the buffer to be checked to a temporary file.
+
+  5. Run the syntax checker.
+
+  6. Parse the output of the tool, and report all errors and warnings,
+     via *note flycheck-process-error-functions: 21a.
+
+  7. If the buffer can be checked with another syntax checker, continue
+     from step 4, but with the next syntax checker.  This is called
+     *note chaining: a0. of syntax checkers.
+
+  8. Run hooks in *note flycheck-after-syntax-check-hook: 222.
+
+ -- Hook: flycheck -after-syntax-check-hook
+
+          Variable properties: This variable may be risky if used as a
+          file-local variable.
+
+     Functions to run after each syntax check.
+
+     This hook is run after a syntax check was finished.
+
+     At this point, *all* chained checkers were run, and all errors
+     were parsed, highlighted and reported.  The variable
+     *note ‘flycheck-current-errors’: 91. contains all errors from all syntax
+     checkers run during the syntax check, so you can apply any error
+     analysis functions.
+
+     Note that this hook does *not* run after each individual syntax
+     checker in the syntax checker chain, but only after the *last
+     checker*.
+
+     This variable is a normal hook.  See Info node *note (elisp)Hooks::.
+
+ -- Hook: flycheck -before-syntax-check-hook
+
+          Variable properties: This variable may be risky if used as a
+          file-local variable.
+
+     Functions to run before each syntax check.
+
+     This hook is run right before a syntax check starts.
+
+     Error information from the previous syntax check is *not*
+     cleared before this hook runs.
+
+     Note that this hook does *not* run before each individual syntax
+     checker in the syntax checker chain, but only before the *first
+     checker*.
+
+     This variable is a normal hook.  See Info node *note (elisp)Hooks::.
+
+ -- Hook: flycheck -syntax-check-failed-hook
+
+          Variable properties: This variable may be risky if used as a
+          file-local variable.
+
+     Functions to run if a syntax check failed.
+
+     This hook is run whenever an error occurs during Flycheck’s
+     internal processing.  No information about the error is given to
+     this hook.
+
+     You should use this hook to conduct additional cleanup actions
+     when Flycheck failed.
+
+     This variable is a normal hook.  See Info node *note (elisp)Hooks::.
+
+\1f
+File: flycheck.info,  Node: Generic syntax checkers<2>,  Next: Command syntax checkers,  Prev: Syntax checks,  Up: Flycheck API
+
+10.2 Generic syntax checkers
+============================
+
+Generic syntax checkers are the most basic syntax checkers in Flycheck.
+These syntax checkers use an Emacs Lisp function to check the current
+buffer.
+
+ -- Function: flycheck -define-generic-checker symbol docstring &rest
+          properties
+
+     Define SYMBOL as generic syntax checker.
+
+     Any syntax checker defined with this macro is eligible for manual
+     syntax checker selection with *note ‘flycheck-select-checker’: 24.  To make
+     the new syntax checker available for automatic selection, it must
+     be registered in *note ‘flycheck-checkers’: 5e.
+
+     DOCSTRING is the documentation of the syntax checker, for
+     *note ‘flycheck-describe-checker’: 3a.  The following PROPERTIES constitute
+     a generic syntax checker.  Unless otherwise noted, all properties
+     are mandatory.
+
+     ‘:start FUNCTION’
+          A function to start the syntax checker.
+
+          FUNCTION shall take two arguments and return a context
+          object if the checker is started successfully.  Otherwise it
+          shall signal an error.
+
+          The first argument is the syntax checker being started.  The
+          second is a callback function to report state changes to
+          Flycheck.  The callback takes two arguments STATUS DATA,
+          where STATUS is a symbol denoting the syntax checker status
+          and DATA an optional argument with additional data for the
+          status report.  See ‘`flycheck-report-buffer-checker-status'’
+          for more information about STATUS and DATA.
+
+          FUNCTION may be synchronous or asynchronous, i.e. it may
+          call the given callback either immediately, or at some later
+          point (e.g. from a process sentinel).
+
+          A syntax checker _must_ call CALLBACK at least once with a
+          STATUS that finishes the current syntax checker.  Otherwise
+          Flycheck gets stuck at the current syntax check with this
+          syntax checker.
+
+          The context object returned by FUNCTION is passed to
+          ‘`:interrupt'’.
+
+     ‘:interrupt FUNCTION’
+          A function to interrupt the syntax check.
+
+          FUNCTION is called with the syntax checker and the context
+          object returned by the ‘`:start'’ function and shall try to
+          interrupt the syntax check.  The context may be nil, if the
+          syntax check is interrupted before actually started.
+          FUNCTION should handle this situation.
+
+          If it cannot interrupt the syntax check, it may either
+          signal an error or silently ignore the attempt to interrupt
+          the syntax checker, depending on the severity of the
+          situation.
+
+          If interrupting the syntax check failed, Flycheck will let
+          the syntax check continue, but ignore any status reports.
+          Notably, it won’t highlight any errors reported by the
+          syntax check in the buffer.
+
+          This property is optional.  If omitted, Flycheck won’t
+          attempt to interrupt syntax checks wit this syntax checker,
+          and simply ignore their results.
+
+     ‘:print-doc FUNCTION’
+          A function to print additional documentation into the Help
+          buffer of this checker.
+
+          FUNCTION is called when creating the Help buffer for the
+          syntax checker, with the syntax checker as single argument,
+          after printing the name of the syntax checker and its modes
+          and predicate, but before printing DOCSTRING.  It may insert
+          additional documentation into the current buffer.
+
+          The call occurs within ‘`with-help-window'’.  Hence
+          ‘`standard-output'’ points to the current buffer, so you may
+          use ‘`princ'’ and friends to add content.  Also, the current
+          buffer is put into Help mode afterwards, which automatically
+          turns symbols into references, if possible.
+
+          This property is optional.  If omitted, no additional
+          documentation is printed for this syntax checker.
+
+     :verify FUNCTION
+          A function to verify the checker for the current buffer.
+
+          FUNCTION is called with the syntax checker as single
+          argument, and shall return a list of
+          ‘`flycheck-verification-result'’ objects indicating whether
+          the syntax checker could be used in the current buffer, and
+          highlighting potential setup problems.
+
+          This property is optional.  If omitted, no additional
+          verification occurs for this syntax checker.  It is however
+          absolutely recommended that you add a ‘`:verify'’ function to
+          your syntax checker, because it will help users to spot
+          potential setup problems.
+
+     ‘:modes MODES’
+          A major mode symbol or a list thereof, denoting major modes
+          to use this syntax checker in.
+
+          If given this syntax checker is only used in buffers whose
+          ‘`major-mode'’ is ‘`eq'’ to any mode in MODES.
+
+          If ‘`:predicate'’ is also given, the syntax checker will only
+          be used in buffers for which the ‘`:predicate'’ returns
+          non-nil.
+
+          This property is optional, however at least one of ‘`:modes'’
+          or ‘`:predicate'’ must be given.
+
+     ‘:predicate FUNCTION’
+          A function to determine whether to use the syntax checker in
+          the current buffer.
+
+          FUNCTION is called without arguments and shall return
+          non-nil if this syntax checker shall be used to check the
+          current buffer.  Otherwise it shall return nil.
+
+          If ‘`:modes'’ is also given, FUNCTION is only called in
+          matching major modes.
+
+          This property is optional, however at least one of ‘`:modes'’
+          or ‘`:predicate'’ must be given.
+
+     ‘:error-filter FUNCTION’
+          A function to filter the errors returned by this checker.
+
+          FUNCTION is called with the list of ‘`flycheck-error'’ objects
+          returned by the syntax checker and shall return another list
+          of ‘`flycheck-error'’ objects, which is considered the final
+          result of this syntax checker.
+
+          FUNCTION is free to add, remove or modify errors, whether in
+          place or by copying.
+
+          This property is optional.  The default filter is
+          ‘`identity'’.
+
+     ‘:next-checkers NEXT-CHECKERS’
+          A list denoting syntax checkers to apply after this syntax
+          checker, in what we call "chaining" of syntax checkers.
+
+          Each ITEM is a cons cell ‘(LEVEL . CHECKER)’.  CHECKER is a
+          syntax checker to run after this syntax checker.  LEVEL is
+          an error level.  CHECKER will only be used if there are no
+          current errors of at least LEVEL.  LEVEL may also be t, in
+          which case CHECKER is used regardless of the current errors.
+
+          ITEM may also be a syntax checker symbol, which is
+          equivalent to ‘(t . ITEM)’.
+
+          Flycheck tries all items in order of declaration, and uses
+          the first whose LEVEL matches and whose CHECKER is
+          registered and can be used for the current buffer.
+
+          This feature is typically used to apply more than one syntax
+          checker to a buffer.  For instance, you might first use a
+          compiler to check a buffer for syntax and type errors, and
+          then run a linting tool that checks for insecure code, or
+          questionable style.
+
+          This property is optional.  If omitted, it defaults to the
+          nil, i.e. no other syntax checkers are applied after this
+          syntax checker.
+
+     Signal an error, if any property has an invalid value.
+
+     See also
+.............
+
+     *note Status callback protocol: 226.
+
+To make new syntax checkers available for automatic selection you need
+to register them by adding them to *note flycheck-checkers: 5e.
+
+ -- Function: flycheck -registered-checker-p checker
+
+     Determine whether CHECKER is registered.
+
+     A checker is registered if it is contained in
+     *note ‘flycheck-checkers’: 5e.
+
+You can extend generic syntax checkers to add new modes or chain further
+syntax checkers:
+
+ -- Function: flycheck -add-mode checker mode
+
+     Add a new major MODE to CHECKER.
+
+     CHECKER and MODE are symbols denoting a syntax checker and a
+     major mode respectively.
+
+     Add MODE to the ‘`:modes'’ property of CHECKER, so that CHECKER
+     will be used in buffers with MODE.
+
+ -- Function: flycheck -add-next-checker checker next &optional append
+
+     Add a NEXT checker after CHECKER.
+
+     CHECKER is a syntax checker symbol, to which to add NEXT checker.
+
+     NEXT is a cons cell ‘(LEVEL . NEXT-CHECKER)’.  NEXT-CHECKER is a
+     symbol denoting the syntax checker to run after CHECKER.  LEVEL
+     is an error level.  NEXT-CHECKER will only be used if there is no
+     current error whose level is more severe than LEVEL.  LEVEL may
+     also be t, in which case NEXT-CHECKER is used regardless of the
+     current errors.
+
+     NEXT can also be a syntax checker symbol only, which is
+     equivalent to ‘(t . NEXT)’.
+
+     NEXT-CHECKER is prepended before other next checkers, unless
+     APPEND is non-nil.
+
+* Menu:
+
+* Status callback protocol:: 
+* Predicates for syntax checkers:: 
+* Error filters:: 
+
+\1f
+File: flycheck.info,  Node: Status callback protocol,  Next: Predicates for syntax checkers,  Up: Generic syntax checkers<2>
+
+10.2.1 Status callback protocol
+-------------------------------
+
+The ‘callback’ argument to the ‘:start’ function of a syntax checker
+defined with *note flycheck-define-generic-checker: 1b. is a function
+taking two arguments:
+
+ -- Function: status -callback status &optional data
+
+     ‘status’ is one of the following symbols, denoting the status being
+     reported:
+
+     ‘errored’ (_finishing_)
+
+          The syntax checker has errored.  ‘data’ is an optional error
+          message as string.
+
+     ‘interrupted’ (_finishing_)
+
+          The syntax checker was interrupted.  ‘data’ is ignored in this
+          case.
+
+     ‘finished’ (_finishing_)
+
+          The syntax checker has finished to check the buffer and
+          reported some errors.  DATA is the list of *note
+          flycheck-error: 169. objects reported by the syntax check.
+
+     ‘suspicious’
+
+          The syntax checker encountered some suspicious state (like a
+          potential fault in the syntax checker definition), which the
+          user needs to be informed about.
+
+     A _finishing_ ‘status’ symbol finishes the current syntax check,
+     and allows Flycheck to conduct further syntax checks.  A syntax
+     checker *must* call the callback at least once with a _finishing_
+     ‘status’ symbol.
+
+          Warning: Failure to call the callback will cause Flycheck to
+          get stuck at the current syntax check.
+
+\1f
+File: flycheck.info,  Node: Predicates for syntax checkers,  Next: Error filters,  Prev: Status callback protocol,  Up: Generic syntax checkers<2>
+
+10.2.2 Predicates for syntax checkers
+-------------------------------------
+
+Flycheck provides some ready-to-use predicates for generic checkers:
+
+ -- Function: flycheck -buffer-saved-p &optional buffer
+
+     Determine whether BUFFER is saved to a file.
+
+     BUFFER is the buffer to check.  If omitted or nil, use the
+     current buffer as BUFFER.
+
+     Return non-nil if the BUFFER is backed by a file, and not
+     modified, or nil otherwise.
+
+\1f
+File: flycheck.info,  Node: Error filters,  Prev: Predicates for syntax checkers,  Up: Generic syntax checkers<2>
+
+10.2.3 Error filters
+--------------------
+
+Additionally, Flycheck has some built-in error filters for generic
+checkers:
+
+ -- Function: flycheck -sanitize-errors errors
+
+     Sanitize ERRORS.
+
+     Sanitize ERRORS by trimming leading and trailing whitespace in
+     all error messages, and by replacing 0 columns and empty error
+     messages with nil.
+
+     Returns sanitized ERRORS.
+
+ -- Function: flycheck -increment-error-columns errors &optional offset
+
+     Increment all columns of ERRORS by OFFSET.
+
+     Use this as ‘`:error-filter'’ if a syntax checker outputs 0-based
+     columns.
+
+ -- Function: flycheck -collapse-error-message-whitespace errors
+
+     Collapse whitespace in all messages of ERRORS.
+
+     Return ERRORS.
+
+ -- Function: flycheck -dedent-error-messages errors
+
+     Dedent all messages of ERRORS.
+
+     For each error in ERRORS, determine the indentation offset from
+     the leading whitespace of the first line, and dedent all further
+     lines accordingly.
+
+     Return ERRORS, with in-place modifications.
+
+ -- Function: flycheck -fold-include-levels errors sentinel-message
+
+     Fold levels of ERRORS from included files.
+
+     ERRORS is a list of ‘`flycheck-error'’ objects.  SENTINEL-MESSAGE
+     is a regular expression matched against the error message to
+     determine whether the errror denotes errors from an included
+     file.  Alternatively, it is a function that is given an error and
+     shall return non-nil, if the error denotes errors from an
+     included file.
+
+ -- Function: flycheck -dequalify-error-ids errors
+
+     De-qualify error ids in ERRORS.
+
+     Remove all qualifications from error ids in ERRORS, by stripping
+     all leading dotted components from error IDs.  For instance, if
+     the error ID is com.foo.E100, replace it with E100.
+
+     This error filter is mainly useful to simplify error IDs obtained
+     from parsing Checkstyle XML, which frequently has very verbose
+     IDs, that include the name of the tool.
+
+ -- Function: flycheck -remove-error-ids errors
+
+     Remove all error ids from ERRORS.
+
+\1f
+File: flycheck.info,  Node: Command syntax checkers,  Next: Errors,  Prev: Generic syntax checkers<2>,  Up: Flycheck API
+
+10.3 Command syntax checkers
+============================
+
+Command syntax checkers are a specialised variant of generic syntax
+checkers which use an external command to check the contents of the
+current buffer.  To define a new command syntax checker, use *note
+flycheck-define-command-checker: 177.:
+
+ -- Function: flycheck -define-command-checker symbol docstring &rest
+          properties
+
+     Define SYMBOL as syntax checker which runs a command.
+
+     Define SYMBOL as generic syntax checker via
+     *note ‘flycheck-define-generic-checker’: 1b, which uses an external command
+     to check the buffer.  SYMBOL and DOCSTRING are the same as for
+     *note ‘flycheck-define-generic-checker’: 1b.
+
+     In addition to the properties understood by
+     *note ‘flycheck-define-generic-checker’: 1b, the following PROPERTIES
+     constitute a command syntax checker.  Unless otherwise noted, all
+     properties are mandatory.  Note that the default ‘`:error-filter'’
+     of command checkers is *note ‘flycheck-sanitize-errors’: 22c.
+
+     ‘:command COMMAND’
+          The command to run for syntax checking.
+
+          COMMAND is a list of the form ‘(EXECUTABLE [ARG ...])’.
+
+          EXECUTABLE is a string with the executable of this syntax
+          checker.  It can be overridden with the variable
+          ‘`flycheck-SYMBOL-executable'’.  Note that this variable is
+          NOT implicitly defined by this function.  Use
+          *note ‘flycheck-def-executable-var’: 233. to define this variable.
+
+          Each ARG is an argument to the executable, either as string,
+          or as special symbol or form for
+          *note ‘flycheck-substitute-argument’: 201, which see.
+
+     ‘:error-patterns PATTERNS’
+          A list of patterns to parse the output of the ‘`:command'’.
+
+          Each ITEM in PATTERNS is a list ‘(LEVEL SEXP ...)’, where
+          LEVEL is a Flycheck error level (see
+          *note ‘flycheck-define-error-level’: 27.), followed by one or more RX
+          ‘`SEXP'’s which parse an error of that level and extract line,
+          column, file name and the message.
+
+          See ‘`rx'’ for general information about RX, and
+          *note ‘flycheck-rx-to-string’: 200. for some special RX forms provided
+          by Flycheck.
+
+          All patterns are applied in the order of declaration to the
+          whole output of the syntax checker.  Output already matched
+          by a pattern will not be matched by subsequent patterns.  In
+          other words, the first pattern wins.
+
+          This property is optional.  If omitted, however, an
+          ‘`:error-parser'’ is mandatory.
+
+     ‘:error-parser FUNCTION’
+          A function to parse errors with.
+
+          The function shall accept three arguments OUTPUT CHECKER
+          BUFFER.  OUTPUT is the syntax checker output as string,
+          CHECKER the syntax checker that was used, and BUFFER a
+          buffer object representing the checked buffer.  The function
+          must return a list of ‘`flycheck-error'’ objects parsed from
+          OUTPUT.
+
+          This property is optional.  If omitted, it defaults to
+          *note ‘flycheck-parse-with-patterns’: 234.  In this case,
+          ‘`:error-patterns'’ is mandatory.
+
+     Note that you may not give ‘`:start'’, ‘`:interrupt'’, and
+     ‘`:print-doc'’ for a command checker.  You can give a custom
+     ‘`:verify'’ function, but you should take care to call
+     ‘`flycheck-verify-command-checker'’ in a custom ‘`:verify'’
+     function.
+
+Each command checker uses an accompanying variable to override the
+executable, which you can define with *note flycheck-def-executable-var:
+233.:
+
+ -- Macro: flycheck -def-executable-var checker default-executable
+
+     Define the executable variable for CHECKER.
+
+     DEFAULT-EXECUTABLE is the default executable.  It is only used in
+     the docstring of the variable.
+
+     The variable is defined with ‘`defcustom'’ in the
+     ‘`flycheck-executables'’ group.  It’s also defined to be risky as
+     file-local variable, to avoid arbitrary executables being used
+     for syntax checking.
+
+Since command syntax checkers are by far the most common kind of syntax
+checkers, Flycheck provides a convenience macro *note
+flycheck-define-checker: 19. which wraps up *note
+flycheck-define-command-checker: 177. and *note
+flycheck-def-executable-var: 233. into a single macro, and reduces
+syntactic clutter by allowing unquoted arguments:
+
+ -- Macro: flycheck -define-checker symbol docstring &rest properties
+
+     Define SYMBOL as command syntax checker with DOCSTRING and PROPERTIES.
+
+     Like *note ‘flycheck-define-command-checker’: 177, but PROPERTIES must not
+     be quoted.  Also, implicitly define the executable variable for
+     SYMBOL with *note ‘flycheck-def-executable-var’: 233.
+
+* Menu:
+
+* Command arguments:: 
+* Options for command syntax checkers:: 
+* Configuration files for command syntax checkers:: 
+* Error parsing with regular expressions:: 
+* Error parsers:: 
+
+\1f
+File: flycheck.info,  Node: Command arguments,  Next: Options for command syntax checkers,  Up: Command syntax checkers
+
+10.3.1 Command arguments
+------------------------
+
+The arguments passed to the external command of a command syntax checker
+are subject to substitution with *note flycheck-substitute-argument:
+201, which replaces special symbols and forms with strings for
+consumption by the external command:
+
+ -- Function: flycheck -substitute-argument arg checker
+
+     Substitute ARG for CHECKER.
+
+     Return a list of real arguments for the executable of CHECKER,
+     substituted for the symbolic argument ARG.  Single arguments,
+     e.g. if ARG is a literal strings, are wrapped in a list.
+
+     ARG may be one of the following forms:
+
+     STRING
+          Return ARG unchanged.
+
+     ‘`source'’, ‘`source-inplace'’
+          Create a temporary file to check and return its path.  With
+          ‘`source-inplace'’ create the temporary file in the same
+          directory as the original file.  The value of
+          *note ‘flycheck-temp-prefix’: 5b. is used as prefix of the file name.
+
+          With ‘`source'’, try to retain the non-directory component of
+          the buffer’s file name in the temporary file.
+
+          ‘`source'’ is the preferred way to pass the input file to a
+          syntax checker.  ‘`source-inplace'’ should only be used if the
+          syntax checker needs other files from the source directory,
+          such as include files in C.
+
+     ‘`source-original'’
+          Return the path of the actual file to check, or an empty
+          string if the buffer has no file name.
+
+          Note that the contents of the file may not be up to date
+          with the contents of the buffer to check.  Do not use this
+          as primary input to a checker, unless absolutely necessary.
+
+          When using this symbol as primary input to the syntax
+          checker, add *note ‘flycheck-buffer-saved-p’: 22a. to the ‘`:predicate'’.
+
+     ‘`temporary-directory'’
+          Create a unique temporary directory and return its path.
+
+     ‘`temporary-file-name'’
+          Return a unique temporary filename.  The file is *not*
+          created.
+
+          To ignore the output of syntax checkers, try ‘`null-device'’
+          first.
+
+     ‘`null-device'’
+          Return the value of ‘`null-device'’, i.e the system null
+          device.
+
+          Use this option to ignore the output of a syntax checker.
+          If the syntax checker cannot handle the null device, or
+          won’t write to an existing file, try ‘`temporary-file-name'’
+          instead.
+
+     ‘(config-file OPTION VARIABLE [PREPEND-FN])’
+          Search the configuration file bound to VARIABLE with
+          *note ‘flycheck-locate-config-file’: 236. and return a list of arguments
+          that pass this configuration file to the syntax checker, or
+          nil if the configuration file was not found.
+
+          PREPEND-FN is called with the OPTION and the located
+          configuration file, and should return OPTION prepended
+          before the file, either a string or as list.  If omitted,
+          PREPEND-FN defaults to ‘`list'’.
+
+     ‘(option OPTION VARIABLE [PREPEND-FN [FILTER]])’
+          Retrieve the value of VARIABLE and return a list of
+          arguments that pass this value as value for OPTION to the
+          syntax checker.
+
+          PREPEND-FN is called with the OPTION and the value of
+          VARIABLE, and should return OPTION prepended before the
+          file, either a string or as list.  If omitted, PREPEND-FN
+          defaults to ‘`list'’.
+
+          FILTER is an optional function to be applied to the value of
+          VARIABLE before prepending.  This function must return nil
+          or a string.  In the former case, return nil.  In the latter
+          case, return a list of arguments as described above.
+
+     ‘(option-list OPTION VARIABLE [PREPEND-FN [FILTER]])’
+          Retrieve the value of VARIABLE, which must be a list,
+          and prepend OPTION before each item in this list, using
+          PREPEND-FN.
+
+          PREPEND-FN is called with the OPTION and each item of the
+          list as second argument, and should return OPTION prepended
+          before the item, either as string or as list.  If omitted,
+          PREPEND-FN defaults to ‘`list'’.
+
+          FILTER is an optional function to be applied to each item in
+          the list before prepending OPTION.  It shall return the
+          option value for each item as string, or nil, if the item is
+          to be ignored.
+
+     ‘(option-flag OPTION VARIABLE)’
+          Retrieve the value of VARIABLE and return OPTION, if the
+          value is non-nil.  Otherwise return nil.
+
+     ‘(eval FORM)’
+          Return the result of evaluating FORM in the buffer to be
+          checked.  FORM must either return a string or a list of
+          strings, or nil to indicate that nothing should be
+          substituted for CELL.  For all other return types, signal an
+          error
+
+          _No_ further substitutions are performed, neither in FORM
+          before it is evaluated, nor in the result of evaluating
+          FORM.
+
+     In all other cases, signal an error.
+
+     Note that substitution is *not* recursive.  No symbols or cells
+     are substituted within the body of cells!
+
+\1f
+File: flycheck.info,  Node: Options for command syntax checkers,  Next: Configuration files for command syntax checkers,  Prev: Command arguments,  Up: Command syntax checkers
+
+10.3.2 Options for command syntax checkers
+------------------------------------------
+
+Command syntax checkers can define options, whose values are substituted
+into the external command.
+
+ -- Macro: flycheck -def-option-var symbol init-value checker docstring
+          &rest custom-args
+
+     Define SYMBOL as option variable with INIT-VALUE for CHECKER.
+
+     SYMBOL is declared as customizable variable using ‘`defcustom'’, to
+     provide an option for the given syntax CHECKER.  INIT-VALUE is
+     the initial value of the variable, and DOCSTRING is its
+     docstring.  CUSTOM-ARGS are forwarded to ‘`defcustom'’.
+
+     Use this together with the ‘`option'’, ‘`option-list'’ and
+     ‘`option-flag'’ forms in the ‘`:command'’ argument to
+     *note ‘flycheck-define-checker’: 19.
+
+ -- Macro: flycheck -def-args-var symbol checker &rest custom-args
+
+     Define SYMBOL as argument variable for CHECKER.
+
+     SYMBOL is declared as customizable, risky and buffer-local
+     variable using ‘`defcustom'’ to provide an option for arbitrary
+     arguments for the given syntax CHECKER.  CUSTOM-ARGS is forwarded
+     to ‘`defcustom'’.
+
+     Use the ‘`eval'’ form to splice this variable into the
+     ‘`:command'’.
+
+Flycheck provides some built-in filters for such options:
+
+ -- Function: flycheck -option-int value
+
+     Convert an integral option VALUE to a string.
+
+     If VALUE is nil, return nil.  Otherwise return VALUE converted to
+     a string.
+
+ -- Function: flycheck -option-comma-separated-list value &optional
+          separator filter
+
+     Convert VALUE into a list separated by SEPARATOR.
+
+     SEPARATOR is a string to separate items in VALUE, defaulting to
+     ",".  FILTER is an optional function, which takes a single
+     argument and returns either a string or nil.
+
+     If VALUE is a list, apply FILTER to each item in VALUE, remove
+     all nil items, and return a single string of all remaining items
+     separated by SEPARATOR.
+
+     Otherwise, apply FILTER to VALUE and return the result.
+     SEPARATOR is ignored in this case.
+
+\1f
+File: flycheck.info,  Node: Configuration files for command syntax checkers,  Next: Error parsing with regular expressions,  Prev: Options for command syntax checkers,  Up: Command syntax checkers
+
+10.3.3 Configuration files for command syntax checkers
+------------------------------------------------------
+
+Additionally, command syntax checkers can pass configuration files to
+external commands.
+
+ -- Macro: flycheck -def-config-file-var symbol checker &optional
+          file-name &rest custom-args
+
+     Define SYMBOL as config file variable for CHECKER, with default FILE-NAME.
+
+     SYMBOL is declared as customizable variable using ‘`defcustom'’, to
+     provide a configuration file for the given syntax CHECKER.
+     CUSTOM-ARGS are forwarded to ‘`defcustom'’.
+
+     FILE-NAME is the initial value of the new variable.  If omitted,
+     the default value is nil.
+
+     Use this together with the ‘`config-file'’ form in the ‘`:command'’
+     argument to *note ‘flycheck-define-checker’: 19.
+
+Flycheck tries to find an appropriate file based on the value of
+configuration file variables, and substitutes the path to that file into
+the external command.
+
+ -- Function: flycheck -locate-config-file filename checker
+
+     Locate the configuration file FILENAME for CHECKER.
+
+     Locate the configuration file using
+     *note ‘flycheck-locate-config-file-functions’: 6d.
+
+     Return the absolute path of the configuration file, or nil if no
+     configuration file was found.
+
+\1f
+File: flycheck.info,  Node: Error parsing with regular expressions,  Next: Error parsers,  Prev: Configuration files for command syntax checkers,  Up: Command syntax checkers
+
+10.3.4 Error parsing with regular expressions
+---------------------------------------------
+
+Normally, command syntax checkers use regular expressions to extract
+errors from the output.  For simplicity and readability, Flycheck uses
+RX expressions instead of standard regular expressions, and provides
+some custom RX forms for frequent patterns, implemented by *note
+flycheck-rx-to-string: 200.:
+
+ -- Function: flycheck -rx-to-string form &optional no-group
+
+     Like ‘`rx-to-string'’ for FORM, but with special keywords:
+
+     ‘`line'’
+          matches the line number.
+
+     ‘`column'’
+          matches the column number.
+
+     ‘(file-name SEXP ...)’
+          matches the file name.  SEXP describes the file name.  If no
+          SEXP is given, use a default body of ‘(minimal-match
+          (one-or-more not-newline))’.
+
+     ‘(message SEXP ...)’
+          matches the message. SEXP constitutes the body of the message.  If no SEXP
+          is given, use a default body of ‘(one-or-more not-newline)’.
+
+     ‘(id SEXP ...)’
+          matches an error ID.  SEXP describes the ID.
+
+     NO-GROUP is passed to ‘`rx-to-string'’.
+
+Internally, error parsing with regular expressions is implemented with a
+special error parser:
+
+ -- Function: flycheck -parse-with-patterns output checker buffer
+
+     Parse OUTPUT from CHECKER with error patterns.
+
+     Uses the error patterns of CHECKER to tokenize the output and
+     tries to parse each error token with all patterns, in the order
+     of declaration.  Hence an error is never matched twice by two
+     different patterns.  The pattern declared first always wins.
+
+     _BUFFER is ignored.
+
+     Return a list of parsed errors and warnings (as ‘`flycheck-error'’
+     objects).
+
+\1f
+File: flycheck.info,  Node: Error parsers,  Prev: Error parsing with regular expressions,  Up: Command syntax checkers
+
+10.3.5 Error parsers
+--------------------
+
+Alternatively, command syntax checkers can use custom functions to parse
+errors from the command output.  Flycheck provides some built-in error
+parsers for standard output formats:
+
+ -- Function: flycheck -parse-checkstyle output checker buffer
+
+     Parse Checkstyle errors from OUTPUT.
+
+     Parse Checkstyle-like XML output.  Use this error parser for
+     checkers that have an option to output errors in this format.
+
+     See URL ‘http://checkstyle.sourceforge.net/’(1) for information
+     about Checkstyle.
+
+You can also write your own error parsers.  An error parser is a
+function with the following signature:
+
+ -- Function: flycheck -error-parser output checker buffer
+
+     ‘output’ is the output of the command as string.  ‘checker’ is the
+     syntax checker from which the output comes, and ‘buffer’ is the
+     buffer that was checked.
+
+The following functions can aid you in writing custom parsers:
+
+ -- Function: flycheck -parse-xml-string xml
+
+     Parse an XML string.
+
+     Return the document tree parsed from XML in the form ‘(ROOT ATTRS
+     BODY...)’.  ROOT is a symbol identifying the name of the root
+     element.  ATTRS is an alist of the attributes of the root node.
+     BODY is zero or more body elements, either as strings (in case of
+     text nodes) or as XML nodes, in the same for as the root node.
+
+   ---------- Footnotes ----------
+
+   (1) http://checkstyle.sourceforge.net/
+
+\1f
+File: flycheck.info,  Node: Errors,  Next: Flycheck buffer status,  Prev: Command syntax checkers,  Up: Flycheck API
+
+10.4 Errors
+===========
+
+The list of errors in a buffer is stored in the local variable *note
+flycheck-current-errors: 91.:
+
+ -- Variable: flycheck -current-errors
+
+          Variable properties: Automatically becomes buffer-local when
+          set.
+
+     A list of all errors and warnings in the current buffer.
+
+Flycheck errors are represented by the CL structure *note
+flycheck-error: 169.  See *note (cl)Structures:: for more information
+about CL structures.
+
+ -- CL Struct: flycheck -error
+
+     A Flycheck error with the following slots.  Each of these slots may
+     be ‘nil’.
+
+      -- Slot: buffer
+
+          The buffer object referring to the buffer this error belongs
+          to.
+
+      -- Slot: checker
+
+          The syntax checker that reported this error.
+
+      -- Slot: filename
+
+          A string containing the filename the error refers to.
+
+      -- Slot: line
+
+          An integer providing the line the error refers to.
+
+      -- Slot: column
+
+          An _optional_ integer providing the column the error refers
+          to.
+
+          If this attribute is ‘nil’, Flycheck will assume that the
+          error refers to the whole line.
+
+               Warning: For compatibility with external programs and
+               *unlike* Emacs itself (e.g.  in Compile Mode), Flycheck
+               uses 1-based columns, not 0-based: The first character on
+               a line is column 1.
+
+               This is the format used by most external programs, but
+               occasionally a program tries to proactively adapt to
+               Emacs’ convention, and outputs 0-based columns.  In this
+               case, you need to adapt the column numbers for Flycheck,
+               via *note flycheck-increment-error-columns: 22d. as
+               ‘:error-filter’.
+
+      -- Slot: message
+
+          The human-readable error message as string.
+
+      -- Slot: level
+
+          The error level of the message, as symbol denoting an error
+          level defined with *note flycheck-define-error-level: 27.
+
+      -- Slot: id
+
+          An _optional_ unique identifier for this kind of error.
+
+          This field should identify the kind of an error, not the
+          individual error itself.
+
+     There are two constructors to create new *note flycheck-error: 169.
+     objects:
+
+      -- Function: flycheck -error-new-at line column &optional level
+               message &key checker id filename buffer
+
+          Create a new Flycheck error at the given LINE and COLUMN.
+
+          LINE and COLUMN refer to the *note line: 244. and *note
+          column: 245. of the new error.  The optional LEVEL and MESSAGE
+          arguments fill the *note level: 247. and cl-slot:‘message’
+          slots respectively.
+
+          CHECKER, ID, FILENAME and BUFFER are keyword arguments, for
+          *note checker: 168, *note id: 179, *note filename: 243. and
+          *note buffer: 167. respectively.  BUFFER defaults to the
+          current buffer and FILENAME to the file name of the current
+          buffer.  The other keyword arguments default to ‘nil’.
+
+               Warning: Due to a limitation of Common Lisp functions in
+               Emacs Lisp, you must specify *all* optional arguments,
+               that is, *both* LEVEL *and* MESSAGE, to pass any keyword
+               arguments.
+
+      -- Function: flycheck -error-new &rest attributes
+
+          Create a new *note flycheck-error: 169. with the given
+          ATTRIBUTES.
+
+          ATTRIBUTES is a property list, where each property specifies
+          the value for the corresponding slot of *note flycheck-error:
+          169, for instance:
+
+               (flycheck-error-new :line 10 :column 5 :message "Foo" :level 'warning)
+
+     The following functions and macros work on errors:
+
+      -- Macro: flycheck -error-with-buffer err &rest forms
+
+          Switch to the buffer of ERR and evaluate FORMS.
+
+          If the buffer of ERR is not live, FORMS are not evaluated.
+
+      -- Function: flycheck -error-line-region err
+
+          Get the line region of ERR.
+
+          ERR is a Flycheck error whose region to get.
+
+          Return a cons cell ‘(BEG . END)’ where BEG is the first
+          non-whitespace character on the line ERR refers to, and END the
+          end of the line.
+
+      -- Function: flycheck -error-column-region err
+
+          Get the error column region of ERR.
+
+          ERR is a Flycheck error whose region to get.
+
+          Return a cons cell ‘(BEG . END)’ where BEG is the character
+          before the error column, and END the actual error column, or nil
+          if ERR has no column.
+
+      -- Function: flycheck -error-thing-region thing err
+
+          Get the region of THING at the column of ERR.
+
+          ERR is a Flycheck error whose region to get.  THING is a
+          understood by ‘`thing-at-point'’.
+
+          Return a cons cell ‘(BEG . END)’ where BEG is the beginning of
+          the THING at the error column, and END the end of the symbol.  If
+          ERR has no error column, or if there is no THING at this column,
+          return nil.
+
+      -- Function: flycheck -error-pos err
+
+          Get the buffer position of ERR.
+
+          ERR is a Flycheck error whose position to get.
+
+          The error position is the error column, or the first
+          non-whitespace character of the error line, if ERR has no error column.
+
+      -- Function: flycheck -error-format err
+
+          Format ERR as human-readable string.
+
+          Return a string that represents the given ERR.  This string does
+          _not_ include the file name.
+
+      -- Function: flycheck -error-< err1 err2
+
+          Determine whether ERR1 goes before ERR2 by location.
+
+          Compare by line numbers and then by column numbers.
+
+      -- Function: flycheck -error-level-< err1 err2
+
+          Determine whether ERR1 goes before ERR2 by error level.
+
+          Like *note ‘flycheck-error-<’: 250, but compares by error level severity
+          first.  Levels of the same severity are compared by name.
+
+* Menu:
+
+* Error processing: Error processing<2>. 
+* Error analysis:: 
+* Error levels: Error levels<2>. 
+
+\1f
+File: flycheck.info,  Node: Error processing<2>,  Next: Error analysis,  Up: Errors
+
+10.4.1 Error processing
+-----------------------
+
+ -- Hook: flycheck -process-error-functions
+
+ -- Function: flycheck -add-overlay
+
+\1f
+File: flycheck.info,  Node: Error analysis,  Next: Error levels<2>,  Prev: Error processing<2>,  Up: Errors
+
+10.4.2 Error analysis
+---------------------
+
+Flycheck provides some functions for rudimentary error analysis:
+
+ -- Function: flycheck -count-errors errors
+
+     Count the number of ERRORS, grouped by level..
+
+     Return an alist, where each ITEM is a cons cell whose ‘`car'’ is an
+     error level, and whose ‘`cdr'’ is the number of errors of that
+     level.
+
+ -- Function: flycheck -has-errors-p errors level
+
+     Determine if there are any ERRORS with LEVEL.
+
+ -- Function: flycheck -has-max-errors-p
+ -- Function: :auto
+
+\1f
+File: flycheck.info,  Node: Error levels<2>,  Prev: Error analysis,  Up: Errors
+
+10.4.3 Error levels
+-------------------
+
+Flycheck provides three built-in error levels:
+
+‘error’
+
+     Severe errors which cannot be ignored
+
+‘warning’
+
+     Potential errors which can be ignored
+
+‘info’
+
+     Informational annotations
+
+You can define new error levels with *note flycheck-define-error-level:
+27.:
+
+ -- Function: flycheck -define-error-level level &rest properties
+
+     Define a new error LEVEL with PROPERTIES.
+
+     The following PROPERTIES constitute an error level:
+
+     ‘:severity SEVERITY’
+          A number denoting the severity of this level.  The higher
+          the number, the more severe is this level compared to other
+          levels.  Defaults to 0.
+
+          The severity is used by *note ‘flycheck-error-level-<’: 251. to
+          determine the ordering of errors according to their levels.
+
+     ‘:overlay-category CATEGORY’
+          A symbol denoting the overlay category to use for error
+          highlight overlays for this level.  See Info
+          node *note (elisp)Overlay Properties:: for more information about
+          overlay categories.
+
+          A category for an error level overlay should at least define
+          the ‘`face'’ property, for error highlighting.  Other useful
+          properties for error level categories are ‘`priority'’ to
+          influence the stacking of multiple error level overlays, and
+          ‘`help-echo'’ to define a default error messages for errors
+          without messages.
+
+     ‘:fringe-bitmap BITMAP’
+          A fringe bitmap symbol denoting the bitmap to use for fringe
+          indicators for this level.  See Info node *note (elisp)Fringe Bitmaps:: for more information about fringe bitmaps,
+          including a list of built-in fringe bitmaps.
+
+     ‘:fringe-face FACE’
+          A face symbol denoting the face to use for fringe indicators
+          for this level.
+
+     ‘:error-list-face FACE’
+          A face symbol denoting the face to use for messages of this
+          level in the error list.  See *note ‘flycheck-list-errors’: 4b.
+
+ -- Function: flycheck -error-level-p level
+
+     Determine whether LEVEL is a Flycheck error level.
+
+\1f
+File: flycheck.info,  Node: Flycheck buffer status,  Next: Utilities,  Prev: Errors,  Up: Flycheck API
+
+10.5 Flycheck buffer status
+===========================
+
+ -- Hook: flycheck -status-changed-functions
+
+          Variable properties: This variable may be risky if used as a
+          file-local variable.
+
+     Functions to run if the Flycheck status changed.
+
+     This hook is run whenever the status of Flycheck changes.  Each
+     hook function takes the status symbol as sinlge argument, as
+     given to *note ‘flycheck-report-status’: 25a, which see.
+
+     This variable is a abnormal hook.  See Info
+     node *note (elisp)Hooks::.
+
+     This hook was introduced, or its default value was changed, in
+     version 0.20 of the flycheck package.
+
+ -- Function: flycheck -report-status status
+
+     Report Flycheck STATUS.
+
+     STATUS is one of the following symbols:
+
+     ‘`not-checked'’
+          The current buffer was not checked.
+
+     ‘`no-checker'’
+          Automatic syntax checker selection did not find a suitable
+          syntax checker.
+
+     ‘`running'’
+          A syntax check is now running in the current buffer.
+
+     ‘`errored'’
+          The current syntax check has errored.
+
+     ‘`finished'’
+          The current syntax check was finished normally.
+
+     ‘`interrupted'’
+          The current syntax check was interrupted.
+
+     ‘`suspicious'’
+          The last syntax check had a suspicious result.
+
+     Set *note ‘flycheck-last-status-change’: 90. and call
+     *note ‘flycheck-status-changed-functions’: 19e. with STATUS.  Afterwards
+     refresh the mode line.
+
+ -- Variable: flycheck -last-status-change
+
+          Variable properties: Automatically becomes buffer-local when
+          set.
+
+     The last status change in the current buffer.
+
+ -- Function: flycheck -mode-line-status-text &optional status
+
+     Get a text describing STATUS for use in the mode line.
+
+     STATUS defaults to *note ‘flycheck-last-status-change’: 90. if omitted or
+     nil.
+
+\1f
+File: flycheck.info,  Node: Utilities,  Prev: Flycheck buffer status,  Up: Flycheck API
+
+10.6 Utilities
+==============
+
+ -- Function: flycheck -string-list-p obj
+
+     Determine if OBJ is a list of strings.
+
+ -- Function: flycheck -symbol-list-p obj
+
+     Determine if OBJ is a list of symbols.
+
+\1f
+File: flycheck.info,  Node: Flycheck ERT API,  Next: Contribution guidelines,  Prev: Flycheck API,  Up: Top
+
+11 Flycheck ERT API
+*******************
+
+This chapter documents the Flycheck ERT API, which is used throughout
+Flycheck’s own test suite, and available for use in test suites for your
+own Flycheck extensions.
+
+* Menu:
+
+* Compatibility:: 
+* Loading and initializing:: 
+* Utilities: Utilities<2>. 
+* Defining test cases:: 
+
+\1f
+File: flycheck.info,  Node: Compatibility,  Next: Loading and initializing,  Up: Flycheck ERT API
+
+11.1 Compatibility
+==================
+
+‘flycheck-ert’ is compatible with all ERT versions included in Emacs
+from 24.1 onwards.
+
+     Note: Test skipping
+
+     ERT in Emacs 24.3 and earlier does not support skipped tests.  For
+     these versions, ‘flycheck-ert’ provides limited support for skipped
+     tests by marking them as expected to fail.
+
+     For this feature to work, you *must* call ‘flycheck-ert-initialize’
+     after defining all test cases.
+
+\1f
+File: flycheck.info,  Node: Loading and initializing,  Next: Utilities<2>,  Prev: Compatibility,  Up: Flycheck ERT API
+
+11.2 Loading and initializing
+=============================
+
+The ERT API is provided by the ‘flycheck-ert’ library, which is part of
+the Flycheck package.  If the Flycheck package is installed (see *note
+Installation: 31.), you can load the ERT API with:
+
+     (require 'flycheck-ert)
+
+This will also load the ‘ert’ and ‘flycheck’ libraries.
+
+Flycheck ERT supports test resources (see *note Accessing test
+resources: 261.).  For this feature, you need to initialize Flycheck ERT
+with a resource directory by calling *note flycheck-ert-initialize:
+262.:
+
+ -- Function: flycheck -ert-initialize resource-dir
+
+     Initialize a test suite with RESOURCE-DIR.
+
+     RESOURCE-DIR is the directory, *note ‘flycheck-ert-resource-filename’: 263.
+     should use to lookup resource files.
+
+\1f
+File: flycheck.info,  Node: Utilities<2>,  Next: Defining test cases,  Prev: Loading and initializing,  Up: Flycheck ERT API
+
+11.3 Utilities
+==============
+
+* Menu:
+
+* Creating temporary buffers:: 
+* Scoping resource access:: 
+* Accessing test resources:: 
+* Obtaining information about the environment:: 
+
+\1f
+File: flycheck.info,  Node: Creating temporary buffers,  Next: Scoping resource access,  Up: Utilities<2>
+
+11.3.1 Creating temporary buffers
+---------------------------------
+
+ -- Macro: flycheck -ert-with-temp-buffer &rest body
+
+     Eval BODY within a temporary buffer.
+
+     Like ‘`with-temp-buffer'’, but resets the modification state of the
+     temporary buffer to make sure that it is properly killed even if
+     it has a backing file and is modified.
+
+ -- Macro: flycheck -ert-with-file-buffer file-name &rest body
+
+     Create a buffer from FILE-NAME and eval BODY.
+
+     BODY is evaluated with ‘`current-buffer'’ being a buffer with the
+     contents FILE-NAME.
+
+\1f
+File: flycheck.info,  Node: Scoping resource access,  Next: Accessing test resources,  Prev: Creating temporary buffers,  Up: Utilities<2>
+
+11.3.2 Scoping resource access
+------------------------------
+
+ -- Macro: flycheck -ert-with-help-buffer &rest body
+
+     Execute BODY and kill the help buffer afterwards.
+
+     Use this macro to test functions that create a Help buffer.
+
+ -- Macro: flycheck -ert-with-env env &rest body
+
+     Add ENV to ‘`process-environment'’ in BODY.
+
+     Execute BODY with a ‘`process-environment'’ with contains all
+     variables from ENV added.
+
+     ENV is an alist, where each cons cell ‘(VAR . VALUE)’ is a
+     environment variable VAR to be added to ‘`process-environment'’
+     with VALUE.
+
+ -- Macro: flycheck -ert-with-global-mode &rest body
+
+     Execute BODY with Global Flycheck Mode enabled.
+
+     After BODY, restore the old state of Global Flycheck Mode.
+
+\1f
+File: flycheck.info,  Node: Accessing test resources,  Next: Obtaining information about the environment,  Prev: Scoping resource access,  Up: Utilities<2>
+
+11.3.3 Accessing test resources
+-------------------------------
+
+The following functions and macros load resources from the directory
+given to *note flycheck-ert-initialize: 262.
+
+ -- Function: flycheck -ert-resource-filename resource-file
+
+     Determine the absolute file name of a RESOURCE-FILE.
+
+     Relative file names are expanded against
+     ‘`flycheck-ert-resources-directory'’.
+
+ -- Macro: flycheck -ert-with-resource-buffer resource-file &rest body
+
+     Create a temp buffer from a RESOURCE-FILE and execute BODY.
+
+     The absolute file name of RESOURCE-FILE is determined with
+     *note ‘flycheck-ert-resource-filename’: 263.
+
+ -- Function: flycheck -ert-locate-config-file filename _checker
+
+     Find a configuration FILENAME within unit tests.
+
+     _CHECKER is ignored.
+
+\1f
+File: flycheck.info,  Node: Obtaining information about the environment,  Prev: Accessing test resources,  Up: Utilities<2>
+
+11.3.4 Obtaining information about the environment
+--------------------------------------------------
+
+ -- Constant: flycheck -ert-user-error-type
+
+     The ‘`user-error'’ type used by Flycheck.
+
+ -- Function: flycheck -ert-travis-ci-p
+
+     Determine whether we are running on Travis CI.
+
+ -- Function: flycheck -ert-check-gpg
+
+     Check whether GPG is available.
+
+ -- Function: flycheck -ert-extract-version-command re executable &rest
+          args
+
+     Use RE to extract the version from EXECUTABLE with ARGS.
+
+     Run EXECUTABLE with ARGS, catch the output, and apply RE to find
+     the version number.  Return the text captured by the first group
+     in RE, or nil, if EXECUTABLE is missing, or if RE failed to
+     match.
+
+\1f
+File: flycheck.info,  Node: Defining test cases,  Prev: Utilities<2>,  Up: Flycheck ERT API
+
+11.4 Defining test cases
+========================
+
+In addition to the standard ‘ert-deftest’ from ERT, this library
+provides macros for specialized test case definitions:
+
+ -- Macro: flycheck -ert-def-checker-test checker language name &rest
+          keys-and-body
+
+     Define a test case for a syntax CHECKER for LANGUAGE.
+
+     CHECKER is a symbol or a list of symbols denoting syntax checkers
+     being tested by the test.  The test case is skipped, if any of
+     these checkers cannot be used.  LANGUAGE is a symbol or a list of
+     symbols denoting the programming languages supported by the
+     syntax checkers.  This is currently only used for tagging the
+     test appropriately.
+
+     NAME is a symbol denoting the local name of the test.  The test
+     itself is ultimately named
+     ‘`flycheck-define-checker/CHECKER/NAME'’.  If CHECKER is a list,
+     the first checker in the list is used for naming the test.
+
+     Optionally, the keyword arguments ‘`:tags'’ and ‘`:expected-result'’
+     may be given.  They have the same meaning as in ‘`ert-deftest.'’,
+     and are added to the tags and result expectations set up by this
+     macro.
+
+     The remaining forms denote the body of the test case, including
+     assertions and setup code.
+
+* Menu:
+
+* Checking results of test cases:: 
+* Invoking syntax checkers in test cases:: 
+* Writing assertions:: 
+
+\1f
+File: flycheck.info,  Node: Checking results of test cases,  Next: Invoking syntax checkers in test cases,  Up: Defining test cases
+
+11.4.1 Checking results of test cases
+-------------------------------------
+
+Flycheck ERT provides some functions to check the results of test cases,
+which are handy in ‘:expected-result’ forms.
+
+ -- Function: flycheck -ert-syntax-check-timed-out-p result
+
+     Whether RESULT denotes a timed-out test.
+
+     RESULT is an ERT test result object.
+
+\1f
+File: flycheck.info,  Node: Invoking syntax checkers in test cases,  Next: Writing assertions,  Prev: Checking results of test cases,  Up: Defining test cases
+
+11.4.2 Invoking syntax checkers in test cases
+---------------------------------------------
+
+ -- Function: flycheck -ert-buffer-sync
+
+     Like *note ‘flycheck-buffer’: 47, but synchronously.
+
+ -- Function: flycheck -ert-ensure-clear
+
+     Clear the current buffer.
+
+     Raise an assertion error if the buffer is not clear afterwards.
+
+\1f
+File: flycheck.info,  Node: Writing assertions,  Prev: Invoking syntax checkers in test cases,  Up: Defining test cases
+
+11.4.3 Writing assertions
+-------------------------
+
+ -- Function: flycheck -ert-should-overlay error
+
+     Test that ERROR has a proper overlay in the current buffer.
+
+     ERROR is a Flycheck error object.
+
+ -- Function: flycheck -ert-should-errors &rest errors
+
+     Test that the current buffers has ERRORS.
+
+     ERRORS is a list of errors expected to be present in the current
+     buffer.  Each error is given as a list of arguments to
+     *note ‘flycheck-error-new-at’: 248.
+
+     If ERRORS are omitted, test that there are no errors at all in
+     the current buffer.
+
+     With ERRORS, test that each error in ERRORS is present in the
+     current buffer, and that the number of errors in the current
+     buffer is equal to the number of given ERRORS.  In other words,
+     check that the buffer has all ERRORS, and no other errors.
+
+ -- Function: flycheck -ert-should-syntax-check resource-file modes
+          &rest errors
+
+     Test a syntax check in RESOURCE-FILE with MODES.
+
+     RESOURCE-FILE is the file to check.  MODES is a single major mode
+     symbol or a list thereof, specifying the major modes to syntax
+     check with.  If more than one major mode is specified, the test
+     is run for each mode separately, so if you give three major
+     modes, the entire test will run three times.  ERRORS is the list
+     of expected errors, as in *note ‘flycheck-ert-should-errors’: 27d.  If
+     omitted, the syntax check must not emit any errors.  The errors
+     are cleared after each test.
+
+     The syntax checker is selected via standard syntax checker
+     selection.  To test a specific checker, you need to set
+     *note ‘flycheck-checker’: 23. or *note ‘flycheck-disabled-checkers’: 5f. accordingly
+     before using this predicate, depending on whether you want to use
+     manual or automatic checker selection.
+
+     During the syntax check, configuration files of syntax checkers
+     are also searched in the ‘`config-files'’ sub-directory of the
+     resource directory.
+
+ -- Function: flycheck -ert-at-nth-error n
+
+     Determine whether point is at the N’th Flycheck error.
+
+     Return non-nil if the point is at the N’th Flycheck error in the
+     current buffer.  Otherwise return nil.
+
+\1f
+File: flycheck.info,  Node: Contribution guidelines,  Next: Testing Flycheck,  Prev: Flycheck ERT API,  Up: Top
+
+12 Contribution guidelines
+**************************
+
+If you discovered bugs and issues, have ideas for improvements or new
+features, or want to contribute a new syntax checker, please report to
+the issue tracker(1) the repository and send a pull request, but respect
+the following guidelines.
+
+* Menu:
+
+* Reporting issues:: 
+* Contributing code:: 
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues
+
+\1f
+File: flycheck.info,  Node: Reporting issues,  Next: Contributing code,  Up: Contribution guidelines
+
+12.1 Reporting issues
+=====================
+
+Please report issues to the issue tracker(1).
+
+   - Check that the issue has not already been reported.
+
+   - Check that the issue has not already been fixed in the latest code.
+
+   - Check that your setup is fine with ‘M-x flycheck-verify-setup’.
+
+   - Be clear and precise (do not prose, but name functions and commands
+     exactly).
+
+   - Include the version of Flycheck as shown by ‘M-x flycheck-version’.
+
+   - Open an issue with a clear title and description in grammatically
+     correct, complete sentences.
+
+   ---------- Footnotes ----------
+
+   (1) https://github.com/flycheck/flycheck/issues
+
+\1f
+File: flycheck.info,  Node: Contributing code,  Prev: Reporting issues,  Up: Contribution guidelines
+
+12.2 Contributing code
+======================
+
+Contributions of code, either as pull requests or as patches, are _very_
+welcome, but please respect the following guidelines.
+
+* Menu:
+
+* General:: 
+* Code style:: 
+* Commit messages:: 
+* Contributing syntax checkers:: 
+* Pull requests:: 
+
+\1f
+File: flycheck.info,  Node: General,  Next: Code style,  Up: Contributing code
+
+12.2.1 General
+--------------
+
+   - Write good and _complete_ code.
+
+   - Provide use cases and rationale for new features.
+
+\1f
+File: flycheck.info,  Node: Code style,  Next: Commit messages,  Prev: General,  Up: Contributing code
+
+12.2.2 Code style
+-----------------
+
+   - Generally, use the same coding style and spacing.
+
+   - Do not use tabs for indentation.
+
+   - Add docstrings for every declaration.
+
+   - Make sure your code compiles without warnings with ‘make compile’,
+     and has no checkdoc issues with ‘M-x checkdoc-buffer’ or ‘C-c ? d’.
+     If you are using Flycheck, just make sure that your code has no
+     Flycheck warnings.
+
+\1f
+File: flycheck.info,  Node: Commit messages,  Next: Contributing syntax checkers,  Prev: Code style,  Up: Contributing code
+
+12.2.3 Commit messages
+----------------------
+
+Write commit messages according to Tim Pope’s guidelines(1).  In short:
+
+   - Start with a capitalized, short (50 characters or less) summary,
+     followed by a blank line.
+
+   - If necessary, add one or more paragraphs with details, wrapped at
+     72 characters.
+
+   - Use present tense and write in the imperative: “Fix bug”, not
+     “fixed bug” or “fixes bug”.
+
+   - Separate paragraphs by blank lines.
+
+   - Do _not_ use special markup (e.g.  Markdown).  Commit messages are
+     plain text.  You may use ‘*emphasis*’ or ‘_underline_’ though,
+     following conventions established on mailing lists.
+
+This is a model commit message:
+
+     Capitalized, short (50 chars or less) summary
+
+     More detailed explanatory text, if necessary.  Wrap it to about 72
+     characters or so.  In some contexts, the first line is treated as the
+     subject of an email and the rest of the text as the body.  The blank
+     line separating the summary from the body is critical (unless you omit
+     the body entirely); tools like rebase can get confused if you run the
+     two together.
+
+     Write your commit message in the imperative: "Fix bug" and not "Fixed bug"
+     or "Fixes bug."  This convention matches up with commit messages generated
+     by commands like git merge and git revert.
+
+     Further paragraphs come after blank lines.
+
+     - Bullet points are okay, too
+
+     - Typically a hyphen or asterisk is used for the bullet, followed by a
+       single space, with blank lines in between, but conventions vary here
+
+     - Use a hanging indent
+
+Git Commit Mode(2) and Magit(3) provide a major mode for Git commit
+messages, which helps you to comply to these guidelines.
+
+   ---------- Footnotes ----------
+
+   (1) 
+http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
+
+   (2) https://github.com/magit/git-modes/
+
+   (3) https://github.com/magit/magit/
+
+\1f
+File: flycheck.info,  Node: Contributing syntax checkers,  Next: Pull requests,  Prev: Commit messages,  Up: Contributing code
+
+12.2.4 Contributing syntax checkers
+-----------------------------------
+
+For syntax checkers, some special guidelines apply in addition to the
+above:
+
+   - Provide a link to the website of the syntax checker tool in the
+     comments of your pull request.
+
+   - Add a proper docstring to your syntax checker, including this URL.
+
+   - Add unit tests for your syntax checker, or provide example code
+     that triggers errors for each error pattern of the syntax checker.
+
+   - Extend the Ansible playbooks in ‘playbooks/’ to install the
+     required tools in the CI environment and the local testing VM, or
+     explain how to install the tool on an Ubuntu 12.04 system.
+
+     Note: Unit tests that can run on Travis CI are *mandatory* for all
+     syntax checkers in Flycheck.
+
+\1f
+File: flycheck.info,  Node: Pull requests,  Prev: Contributing syntax checkers,  Up: Contributing code
+
+12.2.5 Pull requests
+--------------------
+
+   - Use a *topic branch* to easily amend a pull request later, if
+     necessary.
+
+   - Do *not* open new pull requests, when asked to improve your patch.
+     Instead, amend your commits with ‘git rebase -i’, and then update
+     the pull request with ‘git push --force’
+
+   - Open a pull request(1) that relates to but one subject with a clear
+     title and description in grammatically correct, complete sentences.
+
+     Note: Pull requests *must* pass all tests on Travis CI before being
+     merged.
+
+   ---------- Footnotes ----------
+
+   (1) https://help.github.com/articles/using-pull-requests
+
+\1f
+File: flycheck.info,  Node: Testing Flycheck,  Next: Writing documentation,  Prev: Contribution guidelines,  Up: Top
+
+13 Testing Flycheck
+*******************
+
+Flycheck comes with a large unit test suite, which tests all syntax
+checkers and large parts of Flychecks internal API and interactive
+commands.
+
+This document explains how to use this test suite.
+
+* Menu:
+
+* Test suite layout:: 
+* Test running:: 
+* Virtual test environment:: 
+* Travis CI:: 
+
+\1f
+File: flycheck.info,  Node: Test suite layout,  Next: Test running,  Up: Testing Flycheck
+
+13.1 Test suite layout
+======================
+
+The library ‘flycheck-ert.el’ provides many extensions to ERT, generic
+ones as well as specific utilities for testing Flycheck code and syntax
+checkers.  You may use this library to write test cases for your own
+Flycheck extensions: It is part of the Flycheck package.
+
+All test code is contained in the ‘test/’ sub-directory, which has the
+following contents:
+
+   - ‘flycheck-test.el’: The actual unit test suite, that is, the test
+     cases plus some local utility functions and macros.
+
+   - ‘resources/’: Resource files used by the test suite, including
+     example code in various programming languages to test syntax
+     checkers.
+
+   - ‘run.el’: A simple test runner for non-interactive use, which reads
+     ERT selectors from the command line and runs all matching tests.
+
+\1f
+File: flycheck.info,  Node: Test running,  Next: Virtual test environment,  Prev: Test suite layout,  Up: Testing Flycheck
+
+13.2 Test running
+=================
+
+First install Emacs Lisp dependencies using Cask(1):
+
+     $ make deps
+
+Then install the syntax checkers that you’d like to test:
+
+     $ brew install go
+     $ pip install --user pylint
+     $ npm install --global coffee coffee-lint jshint
+     $ cabal install hlint shellcheck
+
+     Note: If you’d like to keep your environment clean, use the *note
+     Virtual test environment: 290. instead.
+
+Run the entire test suite:
+
+     $ make test
+
+     Note: Tests which can’t be run because of missing tools are
+     gracefully skipped.
+
+You may also run a specific subset of test cases by passing an ERT
+selector expression.  The following example runs all tests for C and
+C++, except those whose name matches ‘gcc’:
+
+     $ make ERTSELECTOR='(and (or (tag language-c) (tag language-c++)) (not "gcc"))' test
+
+See *note (ert)Test Selectors:: for the syntax of test selectors.
+
+You can also use a different Emacs to run the tests with:
+
+     $ make EMACS=emacs-snapshot test
+
+     Note: Keep in mind that you must quote the expression for your
+     shell _and_ for Emacs Lisp.
+
+   ---------- Footnotes ----------
+
+   (1) http://cask.readthedocs.org
+
+\1f
+File: flycheck.info,  Node: Virtual test environment,  Next: Travis CI,  Prev: Test running,  Up: Testing Flycheck
+
+13.3 Virtual test environment
+=============================
+
+To run all tests successfully, you need a large amount of external
+tools.  To keep your environment clean, and test against a reference
+environment, Flycheck provides a virtual machine with a complete test
+environment, based on VirtualBox and Vagrant.
+
+The virtual machine contains
+
+   - The latest stable Emacs release
+
+   - A nightly build of Emacs trunk
+
+   - ‘make’ and Cask(1)
+
+   - All syntax checkers supported by Flycheck
+
+To use this VM, first install the following tools on your system:
+
+   - VirtualBox(2)
+
+   - Vagrant(3)
+
+   - Ansible(4)
+
+On Linux, these packages are typically available from the package
+manager of your distribution.  On OS X, use the binaries provided for
+Vagrant and VirtualBox, and install Ansible from Homebrew(5) with ‘brew
+install ansible’.
+
+To start the VM run the following command in the root directory of
+Flycheck:
+
+     $ vagrant up
+
+     Warning: On the first time, this command will setup and provision
+     the VM, and *download and install over 1GB* of images and packages
+     along the way.  Depending on your network connection and disk
+     speed, this can take an hour or more.
+
+After the VM is started, you can connect to it:
+
+     $ vagrant ssh
+
+This will give you a bash prompt within the VM, on which you can run the
+tests as explained in *note Test running: 28e.
+
+To switch between Emacs versions, pass ‘EMACS’ to ‘make test’:
+
+     $ make EMACS=emacs24 test
+     $ make EMACS=emacs-snapshot test
+
+The latter is the default.
+
+When finished, you can shutdown the VM with:
+
+     $ vagrant halt
+
+Occasionally you should provision the test environment again, to update
+to the latest Emacs nightly build, and to follow updates of syntax
+checker tools.  To do so, use the ‘--provision’ flag when starting the
+VM:
+
+     $ vagrant up --provision
+
+You can also provision a running machine with:
+
+     $ vagrant provision
+
+The VM is provisioned from Ansible playbooks in the ‘playbooks/’
+sub-directory of the top-level source directory.
+
+   ---------- Footnotes ----------
+
+   (1) http://cask.readthedocs.org
+
+   (2) https://www.virtualbox.org/
+
+   (3) https://www.vagrantup.com/
+
+   (4) http://www.ansible.com/home
+
+   (5) http://brew.sh/
+
+\1f
+File: flycheck.info,  Node: Travis CI,  Prev: Virtual test environment,  Up: Testing Flycheck
+
+13.4 Travis CI
+==============
+
+The entire test suite continuously runs on *note Travis CI: 293. after
+every push, with the latest Emacs release and a nightly Emacs snapshot.
+
+Travis CI is configured from ‘.travis.yml’ in the top-level source
+directory, and uses mostly the same playbooks for provisioning.
+
+     Note: Travis CI is the *reference environment* for Flycheck’s test
+     suite.  All tests *must pass* on Travis CI.
+
+     In case Travis CI diverges from the *note VM: 290, Travis CI is
+     authoritative.
+
+\1f
+File: flycheck.info,  Node: Writing documentation,  Next: Maintenance tasks,  Prev: Testing Flycheck,  Up: Top
+
+14 Writing documentation
+************************
+
+This document explains how to edit and building the documentation of
+Flycheck.
+
+* Menu:
+
+* Build environment setup:: 
+* Building HTML and Texinfo:: 
+* Verifying references:: 
+
+\1f
+File: flycheck.info,  Node: Build environment setup,  Next: Building HTML and Texinfo,  Up: Writing documentation
+
+14.1 Build environment setup
+============================
+
+Flycheck’s documentation is written using Sphinx(1) and
+sphinxcontrib-emacs(2).  To build the documentation locally, you need to
+install these tools first.  This section guides you through the process
+of installing them.
+
+First make sure, that you have Python 2.7 and virtualenv(3) available.
+To install virtualenv, use:
+
+     $ pip install --user virtualenv
+
+     Note: You probably need to install pip(4) first.  It is available
+     in the package repositories of most Linux distributions, as
+     ‘python-pip’ or similar.  If ‘pip’ is not available for your Linux
+     distribution, or if you are using OS X, please follow the
+     instructions to install pip(5).
+
+Then add ‘~/Library/Python/2.7/bin’ (on OS X) or ‘~/.local/bin’ (on
+other Unix variants) to ‘$PATH’.
+
+Now create a virtual environment and install the requirements of the
+documentation:
+
+     $ mkdir -p ~/.virtualenvs
+     $ virtualenv -p python2.7 ~/.virtualenvs/cask
+     $ pip install -r doc/requirements.txt
+
+Now you are set up to build the documentation.
+
+   ---------- Footnotes ----------
+
+   (1) http://sphinx-doc.org
+
+   (2) http://sphinxcontrib-emacs.readthedocs.org/en/latest/
+
+   (3) http://virtualenv.readthedocs.org/en/latest/
+
+   (4) https://pip.pypa.io/
+
+   (5) https://pip.pypa.io/en/latest/installing.html
+
+\1f
+File: flycheck.info,  Node: Building HTML and Texinfo,  Next: Verifying references,  Prev: Build environment setup,  Up: Writing documentation
+
+14.2 Building HTML and Texinfo
+==============================
+
+First, switch to the virtual environment you created in the *note Build
+environment setup: 296, and make sure that the requirements are up to
+date:
+
+     $ source ~/.virtualenvs/cask/bin/activate
+     $ pip install -r doc/requirements.txt
+
+Now build the documentation:
+
+     $ make html
+     $ make texinfo
+
+The HTML documentation is build to ‘build/doc/html/’, where you can
+preview it.  The Texinfo build goes to ‘doc/flycheck.texi’.
+
+     Warning: Unlike the HTML output, the Texinfo output is _committed_
+     to the repository, since it is needed by MELPA(1) to build an Info
+     manual for inclusion in the Flycheck packages.
+
+   ---------- Footnotes ----------
+
+   (1) http://melpa.org/
+
+\1f
+File: flycheck.info,  Node: Verifying references,  Prev: Building HTML and Texinfo,  Up: Writing documentation
+
+14.3 Verifying references
+=========================
+
+Sphinx emits warnings for internal references and cross-references to
+Emacs Lisp symbols that could not be resolved.  Your documentation
+should build without any such warnings.
+
+You can additionally verify all external references with:
+
+     $ source ~/.virtualenvs/cask/bin/activate
+     $ make linkcheck
+
+\1f
+File: flycheck.info,  Node: Maintenance tasks,  Next: GNU General Public License,  Prev: Writing documentation,  Up: Top
+
+15 Maintenance tasks
+********************
+
+This document explains various maintenance tasks for Flycheck, that
+contributors have to perform under specific circumstances.
+
+* Menu:
+
+* Rebuilding the Texinfo:: 
+* Rasterized logo files:: 
+
+\1f
+File: flycheck.info,  Node: Rebuilding the Texinfo,  Next: Rasterized logo files,  Up: Maintenance tasks
+
+15.1 Rebuilding the Texinfo
+===========================
+
+Flycheck contains a Texinfo version of the documentation at
+‘doc/flycheck.texi’, to allow MELPA(1) to build the Info manual for
+Flycheck.
+
+     Warning: Do *not* edit this file.  It is generated automatically
+     from Flycheck’s documentation.
+
+When making changes to the documentation, you need to rebuild the
+Texinfo version with, by following the *note instructions to build the
+documentation: 298.
+
+   ---------- Footnotes ----------
+
+   (1) http://melpa.org/
+
+\1f
+File: flycheck.info,  Node: Rasterized logo files,  Prev: Rebuilding the Texinfo,  Up: Maintenance tasks
+
+15.2 Rasterized logo files
+==========================
+
+The source of the Flycheck logo is ‘flycheck.svg’.  The documentation
+contains rasterized versions of this logo at
+
+   - ‘doc/images/logo.png’ (the logo shown in the documentation and the
+     README)
+
+   - ‘doc/images/favicon.ico’ (the logo for use as favicon of the
+     documentation)
+
+     Warning: Do *not* change these files directly.  They are generated
+     automatically from the SVG source.
+
+When changing the Flycheck logo, you need to rebuild these files with:
+
+     make images
+
+You need *convert* from ImageMagick(1) and Inkscape(2).  Make sure that
+‘inkscape’ is in ‘$PATH’, because ImageMagick’s own SVG renderer cannot
+properly render the logo.
+
+   ---------- Footnotes ----------
+
+   (1) http://www.imagemagick.org/
+
+   (2) https://www.inkscape.org/
+
+\1f
+File: flycheck.info,  Node: GNU General Public License,  Next: GNU Free Documentation License,  Prev: Maintenance tasks,  Up: Top
+
+16 GNU General Public License
+*****************************
+
+                         GNU GENERAL PUBLIC LICENSE
+                            Version 3, 29 June 2007
+
+      Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+      Everyone is permitted to copy and distribute verbatim copies
+      of this license document, but changing it is not allowed.
+
+                                 Preamble
+
+       The GNU General Public License is a free, copyleft license for
+     software and other kinds of works.
+
+       The licenses for most software and other practical works are designed
+     to take away your freedom to share and change the works.  By contrast,
+     the GNU General Public License is intended to guarantee your freedom to
+     share and change all versions of a program--to make sure it remains free
+     software for all its users.  We, the Free Software Foundation, use the
+     GNU General Public License for most of our software; it applies also to
+     any other work released this way by its authors.  You can apply it to
+     your programs, too.
+
+       When we speak of free software, we are referring to freedom, not
+     price.  Our General Public Licenses are designed to make sure that you
+     have the freedom to distribute copies of free software (and charge for
+     them if you wish), that you receive source code or can get it if you
+     want it, that you can change the software or use pieces of it in new
+     free programs, and that you know you can do these things.
+
+       To protect your rights, we need to prevent others from denying you
+     these rights or asking you to surrender the rights.  Therefore, you have
+     certain responsibilities if you distribute copies of the software, or if
+     you modify it: responsibilities to respect the freedom of others.
+
+       For example, if you distribute copies of such a program, whether
+     gratis or for a fee, you must pass on to the recipients the same
+     freedoms that you received.  You must make sure that they, too, receive
+     or can get the source code.  And you must show them these terms so they
+     know their rights.
+
+       Developers that use the GNU GPL protect your rights with two steps:
+     (1) assert copyright on the software, and (2) offer you this License
+     giving you legal permission to copy, distribute and/or modify it.
+
+       For the developers' and authors' protection, the GPL clearly explains
+     that there is no warranty for this free software.  For both users' and
+     authors' sake, the GPL requires that modified versions be marked as
+     changed, so that their problems will not be attributed erroneously to
+     authors of previous versions.
+
+       Some devices are designed to deny users access to install or run
+     modified versions of the software inside them, although the manufacturer
+     can do so.  This is fundamentally incompatible with the aim of
+     protecting users' freedom to change the software.  The systematic
+     pattern of such abuse occurs in the area of products for individuals to
+     use, which is precisely where it is most unacceptable.  Therefore, we
+     have designed this version of the GPL to prohibit the practice for those
+     products.  If such problems arise substantially in other domains, we
+     stand ready to extend this provision to those domains in future versions
+     of the GPL, as needed to protect the freedom of users.
+
+       Finally, every program is threatened constantly by software patents.
+     States should not allow patents to restrict development and use of
+     software on general-purpose computers, but in those that do, we wish to
+     avoid the special danger that patents applied to a free program could
+     make it effectively proprietary.  To prevent this, the GPL assures that
+     patents cannot be used to render the program non-free.
+
+       The precise terms and conditions for copying, distribution and
+     modification follow.
+
+                            TERMS AND CONDITIONS
+
+       0. Definitions.
+
+       "This License" refers to version 3 of the GNU General Public License.
+
+       "Copyright" also means copyright-like laws that apply to other kinds of
+     works, such as semiconductor masks.
+
+       "The Program" refers to any copyrightable work licensed under this
+     License.  Each licensee is addressed as "you".  "Licensees" and
+     "recipients" may be individuals or organizations.
+
+       To "modify" a work means to copy from or adapt all or part of the work
+     in a fashion requiring copyright permission, other than the making of an
+     exact copy.  The resulting work is called a "modified version" of the
+     earlier work or a work "based on" the earlier work.
+
+       A "covered work" means either the unmodified Program or a work based
+     on the Program.
+
+       To "propagate" a work means to do anything with it that, without
+     permission, would make you directly or secondarily liable for
+     infringement under applicable copyright law, except executing it on a
+     computer or modifying a private copy.  Propagation includes copying,
+     distribution (with or without modification), making available to the
+     public, and in some countries other activities as well.
+
+       To "convey" a work means any kind of propagation that enables other
+     parties to make or receive copies.  Mere interaction with a user through
+     a computer network, with no transfer of a copy, is not conveying.
+
+       An interactive user interface displays "Appropriate Legal Notices"
+     to the extent that it includes a convenient and prominently visible
+     feature that (1) displays an appropriate copyright notice, and (2)
+     tells the user that there is no warranty for the work (except to the
+     extent that warranties are provided), that licensees may convey the
+     work under this License, and how to view a copy of this License.  If
+     the interface presents a list of user commands or options, such as a
+     menu, a prominent item in the list meets this criterion.
+
+       1. Source Code.
+
+       The "source code" for a work means the preferred form of the work
+     for making modifications to it.  "Object code" means any non-source
+     form of a work.
+
+       A "Standard Interface" means an interface that either is an official
+     standard defined by a recognized standards body, or, in the case of
+     interfaces specified for a particular programming language, one that
+     is widely used among developers working in that language.
+
+       The "System Libraries" of an executable work include anything, other
+     than the work as a whole, that (a) is included in the normal form of
+     packaging a Major Component, but which is not part of that Major
+     Component, and (b) serves only to enable use of the work with that
+     Major Component, or to implement a Standard Interface for which an
+     implementation is available to the public in source code form.  A
+     "Major Component", in this context, means a major essential component
+     (kernel, window system, and so on) of the specific operating system
+     (if any) on which the executable work runs, or a compiler used to
+     produce the work, or an object code interpreter used to run it.
+
+       The "Corresponding Source" for a work in object code form means all
+     the source code needed to generate, install, and (for an executable
+     work) run the object code and to modify the work, including scripts to
+     control those activities.  However, it does not include the work's
+     System Libraries, or general-purpose tools or generally available free
+     programs which are used unmodified in performing those activities but
+     which are not part of the work.  For example, Corresponding Source
+     includes interface definition files associated with source files for
+     the work, and the source code for shared libraries and dynamically
+     linked subprograms that the work is specifically designed to require,
+     such as by intimate data communication or control flow between those
+     subprograms and other parts of the work.
+
+       The Corresponding Source need not include anything that users
+     can regenerate automatically from other parts of the Corresponding
+     Source.
+
+       The Corresponding Source for a work in source code form is that
+     same work.
+
+       2. Basic Permissions.
+
+       All rights granted under this License are granted for the term of
+     copyright on the Program, and are irrevocable provided the stated
+     conditions are met.  This License explicitly affirms your unlimited
+     permission to run the unmodified Program.  The output from running a
+     covered work is covered by this License only if the output, given its
+     content, constitutes a covered work.  This License acknowledges your
+     rights of fair use or other equivalent, as provided by copyright law.
+
+       You may make, run and propagate covered works that you do not
+     convey, without conditions so long as your license otherwise remains
+     in force.  You may convey covered works to others for the sole purpose
+     of having them make modifications exclusively for you, or provide you
+     with facilities for running those works, provided that you comply with
+     the terms of this License in conveying all material for which you do
+     not control copyright.  Those thus making or running the covered works
+     for you must do so exclusively on your behalf, under your direction
+     and control, on terms that prohibit them from making any copies of
+     your copyrighted material outside their relationship with you.
+
+       Conveying under any other circumstances is permitted solely under
+     the conditions stated below.  Sublicensing is not allowed; section 10
+     makes it unnecessary.
+
+       3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+       No covered work shall be deemed part of an effective technological
+     measure under any applicable law fulfilling obligations under article
+     11 of the WIPO copyright treaty adopted on 20 December 1996, or
+     similar laws prohibiting or restricting circumvention of such
+     measures.
+
+       When you convey a covered work, you waive any legal power to forbid
+     circumvention of technological measures to the extent such circumvention
+     is effected by exercising rights under this License with respect to
+     the covered work, and you disclaim any intention to limit operation or
+     modification of the work as a means of enforcing, against the work's
+     users, your or third parties' legal rights to forbid circumvention of
+     technological measures.
+
+       4. Conveying Verbatim Copies.
+
+       You may convey verbatim copies of the Program's source code as you
+     receive it, in any medium, provided that you conspicuously and
+     appropriately publish on each copy an appropriate copyright notice;
+     keep intact all notices stating that this License and any
+     non-permissive terms added in accord with section 7 apply to the code;
+     keep intact all notices of the absence of any warranty; and give all
+     recipients a copy of this License along with the Program.
+
+       You may charge any price or no price for each copy that you convey,
+     and you may offer support or warranty protection for a fee.
+
+       5. Conveying Modified Source Versions.
+
+       You may convey a work based on the Program, or the modifications to
+     produce it from the Program, in the form of source code under the
+     terms of section 4, provided that you also meet all of these conditions:
+
+         a) The work must carry prominent notices stating that you modified
+         it, and giving a relevant date.
+
+         b) The work must carry prominent notices stating that it is
+         released under this License and any conditions added under section
+         7.  This requirement modifies the requirement in section 4 to
+         "keep intact all notices".
+
+         c) You must license the entire work, as a whole, under this
+         License to anyone who comes into possession of a copy.  This
+         License will therefore apply, along with any applicable section 7
+         additional terms, to the whole of the work, and all its parts,
+         regardless of how they are packaged.  This License gives no
+         permission to license the work in any other way, but it does not
+         invalidate such permission if you have separately received it.
+
+         d) If the work has interactive user interfaces, each must display
+         Appropriate Legal Notices; however, if the Program has interactive
+         interfaces that do not display Appropriate Legal Notices, your
+         work need not make them do so.
+
+       A compilation of a covered work with other separate and independent
+     works, which are not by their nature extensions of the covered work,
+     and which are not combined with it such as to form a larger program,
+     in or on a volume of a storage or distribution medium, is called an
+     "aggregate" if the compilation and its resulting copyright are not
+     used to limit the access or legal rights of the compilation's users
+     beyond what the individual works permit.  Inclusion of a covered work
+     in an aggregate does not cause this License to apply to the other
+     parts of the aggregate.
+
+       6. Conveying Non-Source Forms.
+
+       You may convey a covered work in object code form under the terms
+     of sections 4 and 5, provided that you also convey the
+     machine-readable Corresponding Source under the terms of this License,
+     in one of these ways:
+
+         a) Convey the object code in, or embodied in, a physical product
+         (including a physical distribution medium), accompanied by the
+         Corresponding Source fixed on a durable physical medium
+         customarily used for software interchange.
+
+         b) Convey the object code in, or embodied in, a physical product
+         (including a physical distribution medium), accompanied by a
+         written offer, valid for at least three years and valid for as
+         long as you offer spare parts or customer support for that product
+         model, to give anyone who possesses the object code either (1) a
+         copy of the Corresponding Source for all the software in the
+         product that is covered by this License, on a durable physical
+         medium customarily used for software interchange, for a price no
+         more than your reasonable cost of physically performing this
+         conveying of source, or (2) access to copy the
+         Corresponding Source from a network server at no charge.
+
+         c) Convey individual copies of the object code with a copy of the
+         written offer to provide the Corresponding Source.  This
+         alternative is allowed only occasionally and noncommercially, and
+         only if you received the object code with such an offer, in accord
+         with subsection 6b.
+
+         d) Convey the object code by offering access from a designated
+         place (gratis or for a charge), and offer equivalent access to the
+         Corresponding Source in the same way through the same place at no
+         further charge.  You need not require recipients to copy the
+         Corresponding Source along with the object code.  If the place to
+         copy the object code is a network server, the Corresponding Source
+         may be on a different server (operated by you or a third party)
+         that supports equivalent copying facilities, provided you maintain
+         clear directions next to the object code saying where to find the
+         Corresponding Source.  Regardless of what server hosts the
+         Corresponding Source, you remain obligated to ensure that it is
+         available for as long as needed to satisfy these requirements.
+
+         e) Convey the object code using peer-to-peer transmission, provided
+         you inform other peers where the object code and Corresponding
+         Source of the work are being offered to the general public at no
+         charge under subsection 6d.
+
+       A separable portion of the object code, whose source code is excluded
+     from the Corresponding Source as a System Library, need not be
+     included in conveying the object code work.
+
+       A "User Product" is either (1) a "consumer product", which means any
+     tangible personal property which is normally used for personal, family,
+     or household purposes, or (2) anything designed or sold for incorporation
+     into a dwelling.  In determining whether a product is a consumer product,
+     doubtful cases shall be resolved in favor of coverage.  For a particular
+     product received by a particular user, "normally used" refers to a
+     typical or common use of that class of product, regardless of the status
+     of the particular user or of the way in which the particular user
+     actually uses, or expects or is expected to use, the product.  A product
+     is a consumer product regardless of whether the product has substantial
+     commercial, industrial or non-consumer uses, unless such uses represent
+     the only significant mode of use of the product.
+
+       "Installation Information" for a User Product means any methods,
+     procedures, authorization keys, or other information required to install
+     and execute modified versions of a covered work in that User Product from
+     a modified version of its Corresponding Source.  The information must
+     suffice to ensure that the continued functioning of the modified object
+     code is in no case prevented or interfered with solely because
+     modification has been made.
+
+       If you convey an object code work under this section in, or with, or
+     specifically for use in, a User Product, and the conveying occurs as
+     part of a transaction in which the right of possession and use of the
+     User Product is transferred to the recipient in perpetuity or for a
+     fixed term (regardless of how the transaction is characterized), the
+     Corresponding Source conveyed under this section must be accompanied
+     by the Installation Information.  But this requirement does not apply
+     if neither you nor any third party retains the ability to install
+     modified object code on the User Product (for example, the work has
+     been installed in ROM).
+
+       The requirement to provide Installation Information does not include a
+     requirement to continue to provide support service, warranty, or updates
+     for a work that has been modified or installed by the recipient, or for
+     the User Product in which it has been modified or installed.  Access to a
+     network may be denied when the modification itself materially and
+     adversely affects the operation of the network or violates the rules and
+     protocols for communication across the network.
+
+       Corresponding Source conveyed, and Installation Information provided,
+     in accord with this section must be in a format that is publicly
+     documented (and with an implementation available to the public in
+     source code form), and must require no special password or key for
+     unpacking, reading or copying.
+
+       7. Additional Terms.
+
+       "Additional permissions" are terms that supplement the terms of this
+     License by making exceptions from one or more of its conditions.
+     Additional permissions that are applicable to the entire Program shall
+     be treated as though they were included in this License, to the extent
+     that they are valid under applicable law.  If additional permissions
+     apply only to part of the Program, that part may be used separately
+     under those permissions, but the entire Program remains governed by
+     this License without regard to the additional permissions.
+
+       When you convey a copy of a covered work, you may at your option
+     remove any additional permissions from that copy, or from any part of
+     it.  (Additional permissions may be written to require their own
+     removal in certain cases when you modify the work.)  You may place
+     additional permissions on material, added by you to a covered work,
+     for which you have or can give appropriate copyright permission.
+
+       Notwithstanding any other provision of this License, for material you
+     add to a covered work, you may (if authorized by the copyright holders of
+     that material) supplement the terms of this License with terms:
+
+         a) Disclaiming warranty or limiting liability differently from the
+         terms of sections 15 and 16 of this License; or
+
+         b) Requiring preservation of specified reasonable legal notices or
+         author attributions in that material or in the Appropriate Legal
+         Notices displayed by works containing it; or
+
+         c) Prohibiting misrepresentation of the origin of that material, or
+         requiring that modified versions of such material be marked in
+         reasonable ways as different from the original version; or
+
+         d) Limiting the use for publicity purposes of names of licensors or
+         authors of the material; or
+
+         e) Declining to grant rights under trademark law for use of some
+         trade names, trademarks, or service marks; or
+
+         f) Requiring indemnification of licensors and authors of that
+         material by anyone who conveys the material (or modified versions of
+         it) with contractual assumptions of liability to the recipient, for
+         any liability that these contractual assumptions directly impose on
+         those licensors and authors.
+
+       All other non-permissive additional terms are considered "further
+     restrictions" within the meaning of section 10.  If the Program as you
+     received it, or any part of it, contains a notice stating that it is
+     governed by this License along with a term that is a further
+     restriction, you may remove that term.  If a license document contains
+     a further restriction but permits relicensing or conveying under this
+     License, you may add to a covered work material governed by the terms
+     of that license document, provided that the further restriction does
+     not survive such relicensing or conveying.
+
+       If you add terms to a covered work in accord with this section, you
+     must place, in the relevant source files, a statement of the
+     additional terms that apply to those files, or a notice indicating
+     where to find the applicable terms.
+
+       Additional terms, permissive or non-permissive, may be stated in the
+     form of a separately written license, or stated as exceptions;
+     the above requirements apply either way.
+
+       8. Termination.
+
+       You may not propagate or modify a covered work except as expressly
+     provided under this License.  Any attempt otherwise to propagate or
+     modify it is void, and will automatically terminate your rights under
+     this License (including any patent licenses granted under the third
+     paragraph of section 11).
+
+       However, if you cease all violation of this License, then your
+     license from a particular copyright holder is reinstated (a)
+     provisionally, unless and until the copyright holder explicitly and
+     finally terminates your license, and (b) permanently, if the copyright
+     holder fails to notify you of the violation by some reasonable means
+     prior to 60 days after the cessation.
+
+       Moreover, your license from a particular copyright holder is
+     reinstated permanently if the copyright holder notifies you of the
+     violation by some reasonable means, this is the first time you have
+     received notice of violation of this License (for any work) from that
+     copyright holder, and you cure the violation prior to 30 days after
+     your receipt of the notice.
+
+       Termination of your rights under this section does not terminate the
+     licenses of parties who have received copies or rights from you under
+     this License.  If your rights have been terminated and not permanently
+     reinstated, you do not qualify to receive new licenses for the same
+     material under section 10.
+
+       9. Acceptance Not Required for Having Copies.
+
+       You are not required to accept this License in order to receive or
+     run a copy of the Program.  Ancillary propagation of a covered work
+     occurring solely as a consequence of using peer-to-peer transmission
+     to receive a copy likewise does not require acceptance.  However,
+     nothing other than this License grants you permission to propagate or
+     modify any covered work.  These actions infringe copyright if you do
+     not accept this License.  Therefore, by modifying or propagating a
+     covered work, you indicate your acceptance of this License to do so.
+
+       10. Automatic Licensing of Downstream Recipients.
+
+       Each time you convey a covered work, the recipient automatically
+     receives a license from the original licensors, to run, modify and
+     propagate that work, subject to this License.  You are not responsible
+     for enforcing compliance by third parties with this License.
+
+       An "entity transaction" is a transaction transferring control of an
+     organization, or substantially all assets of one, or subdividing an
+     organization, or merging organizations.  If propagation of a covered
+     work results from an entity transaction, each party to that
+     transaction who receives a copy of the work also receives whatever
+     licenses to the work the party's predecessor in interest had or could
+     give under the previous paragraph, plus a right to possession of the
+     Corresponding Source of the work from the predecessor in interest, if
+     the predecessor has it or can get it with reasonable efforts.
+
+       You may not impose any further restrictions on the exercise of the
+     rights granted or affirmed under this License.  For example, you may
+     not impose a license fee, royalty, or other charge for exercise of
+     rights granted under this License, and you may not initiate litigation
+     (including a cross-claim or counterclaim in a lawsuit) alleging that
+     any patent claim is infringed by making, using, selling, offering for
+     sale, or importing the Program or any portion of it.
+
+       11. Patents.
+
+       A "contributor" is a copyright holder who authorizes use under this
+     License of the Program or a work on which the Program is based.  The
+     work thus licensed is called the contributor's "contributor version".
+
+       A contributor's "essential patent claims" are all patent claims
+     owned or controlled by the contributor, whether already acquired or
+     hereafter acquired, that would be infringed by some manner, permitted
+     by this License, of making, using, or selling its contributor version,
+     but do not include claims that would be infringed only as a
+     consequence of further modification of the contributor version.  For
+     purposes of this definition, "control" includes the right to grant
+     patent sublicenses in a manner consistent with the requirements of
+     this License.
+
+       Each contributor grants you a non-exclusive, worldwide, royalty-free
+     patent license under the contributor's essential patent claims, to
+     make, use, sell, offer for sale, import and otherwise run, modify and
+     propagate the contents of its contributor version.
+
+       In the following three paragraphs, a "patent license" is any express
+     agreement or commitment, however denominated, not to enforce a patent
+     (such as an express permission to practice a patent or covenant not to
+     sue for patent infringement).  To "grant" such a patent license to a
+     party means to make such an agreement or commitment not to enforce a
+     patent against the party.
+
+       If you convey a covered work, knowingly relying on a patent license,
+     and the Corresponding Source of the work is not available for anyone
+     to copy, free of charge and under the terms of this License, through a
+     publicly available network server or other readily accessible means,
+     then you must either (1) cause the Corresponding Source to be so
+     available, or (2) arrange to deprive yourself of the benefit of the
+     patent license for this particular work, or (3) arrange, in a manner
+     consistent with the requirements of this License, to extend the patent
+     license to downstream recipients.  "Knowingly relying" means you have
+     actual knowledge that, but for the patent license, your conveying the
+     covered work in a country, or your recipient's use of the covered work
+     in a country, would infringe one or more identifiable patents in that
+     country that you have reason to believe are valid.
+
+       If, pursuant to or in connection with a single transaction or
+     arrangement, you convey, or propagate by procuring conveyance of, a
+     covered work, and grant a patent license to some of the parties
+     receiving the covered work authorizing them to use, propagate, modify
+     or convey a specific copy of the covered work, then the patent license
+     you grant is automatically extended to all recipients of the covered
+     work and works based on it.
+
+       A patent license is "discriminatory" if it does not include within
+     the scope of its coverage, prohibits the exercise of, or is
+     conditioned on the non-exercise of one or more of the rights that are
+     specifically granted under this License.  You may not convey a covered
+     work if you are a party to an arrangement with a third party that is
+     in the business of distributing software, under which you make payment
+     to the third party based on the extent of your activity of conveying
+     the work, and under which the third party grants, to any of the
+     parties who would receive the covered work from you, a discriminatory
+     patent license (a) in connection with copies of the covered work
+     conveyed by you (or copies made from those copies), or (b) primarily
+     for and in connection with specific products or compilations that
+     contain the covered work, unless you entered into that arrangement,
+     or that patent license was granted, prior to 28 March 2007.
+
+       Nothing in this License shall be construed as excluding or limiting
+     any implied license or other defenses to infringement that may
+     otherwise be available to you under applicable patent law.
+
+       12. No Surrender of Others' Freedom.
+
+       If conditions are imposed on you (whether by court order, agreement or
+     otherwise) that contradict the conditions of this License, they do not
+     excuse you from the conditions of this License.  If you cannot convey a
+     covered work so as to satisfy simultaneously your obligations under this
+     License and any other pertinent obligations, then as a consequence you may
+     not convey it at all.  For example, if you agree to terms that obligate you
+     to collect a royalty for further conveying from those to whom you convey
+     the Program, the only way you could satisfy both those terms and this
+     License would be to refrain entirely from conveying the Program.
+
+       13. Use with the GNU Affero General Public License.
+
+       Notwithstanding any other provision of this License, you have
+     permission to link or combine any covered work with a work licensed
+     under version 3 of the GNU Affero General Public License into a single
+     combined work, and to convey the resulting work.  The terms of this
+     License will continue to apply to the part which is the covered work,
+     but the special requirements of the GNU Affero General Public License,
+     section 13, concerning interaction through a network will apply to the
+     combination as such.
+
+       14. Revised Versions of this License.
+
+       The Free Software Foundation may publish revised and/or new versions of
+     the GNU General Public License from time to time.  Such new versions will
+     be similar in spirit to the present version, but may differ in detail to
+     address new problems or concerns.
+
+       Each version is given a distinguishing version number.  If the
+     Program specifies that a certain numbered version of the GNU General
+     Public License "or any later version" applies to it, you have the
+     option of following the terms and conditions either of that numbered
+     version or of any later version published by the Free Software
+     Foundation.  If the Program does not specify a version number of the
+     GNU General Public License, you may choose any version ever published
+     by the Free Software Foundation.
+
+       If the Program specifies that a proxy can decide which future
+     versions of the GNU General Public License can be used, that proxy's
+     public statement of acceptance of a version permanently authorizes you
+     to choose that version for the Program.
+
+       Later license versions may give you additional or different
+     permissions.  However, no additional obligations are imposed on any
+     author or copyright holder as a result of your choosing to follow a
+     later version.
+
+       15. Disclaimer of Warranty.
+
+       THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+     APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+     HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+     OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+     THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+     PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+     IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+     ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+       16. Limitation of Liability.
+
+       IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+     WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+     THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+     GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+     USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+     DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+     PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+     EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+     SUCH DAMAGES.
+
+       17. Interpretation of Sections 15 and 16.
+
+       If the disclaimer of warranty and limitation of liability provided
+     above cannot be given local legal effect according to their terms,
+     reviewing courts shall apply local law that most closely approximates
+     an absolute waiver of all civil liability in connection with the
+     Program, unless a warranty or assumption of liability accompanies a
+     copy of the Program in return for a fee.
+
+                          END OF TERMS AND CONDITIONS
+
+                 How to Apply These Terms to Your New Programs
+
+       If you develop a new program, and you want it to be of the greatest
+     possible use to the public, the best way to achieve this is to make it
+     free software which everyone can redistribute and change under these terms.
+
+       To do so, attach the following notices to the program.  It is safest
+     to attach them to the start of each source file to most effectively
+     state the exclusion of warranty; and each file should have at least
+     the "copyright" line and a pointer to where the full notice is found.
+
+         <one line to give the program's name and a brief idea of what it does.>
+         Copyright (C) <year>  <name of author>
+
+         This program 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.
+
+         This program 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.
+
+         You should have received a copy of the GNU General Public License
+         along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+     Also add information on how to contact you by electronic and paper mail.
+
+       If the program does terminal interaction, make it output a short
+     notice like this when it starts in an interactive mode:
+
+         <program>  Copyright (C) <year>  <name of author>
+         This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+         This is free software, and you are welcome to redistribute it
+         under certain conditions; type `show c' for details.
+
+     The hypothetical commands `show w' and `show c' should show the appropriate
+     parts of the General Public License.  Of course, your program's commands
+     might be different; for a GUI interface, you would use an "about box".
+
+       You should also get your employer (if you work as a programmer) or school,
+     if any, to sign a "copyright disclaimer" for the program, if necessary.
+     For more information on this, and how to apply and follow the GNU GPL, see
+     <http://www.gnu.org/licenses/>.
+
+       The GNU General Public License does not permit incorporating your program
+     into proprietary programs.  If your program is a subroutine library, you
+     may consider it more useful to permit linking proprietary applications with
+     the library.  If this is what you want to do, use the GNU Lesser General
+     Public License instead of this License.  But first, please read
+     <http://www.gnu.org/philosophy/why-not-lgpl.html>.
+
+\1f
+File: flycheck.info,  Node: GNU Free Documentation License,  Next: Index,  Prev: GNU General Public License,  Up: Top
+
+17 GNU Free Documentation License
+*********************************
+
+
+                     GNU Free Documentation License
+                      Version 1.3, 3 November 2008
+
+
+      Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+          <http://fsf.org/>
+      Everyone is permitted to copy and distribute verbatim copies
+      of this license document, but changing it is not allowed.
+
+     0. PREAMBLE
+
+     The purpose of this License is to make a manual, textbook, or other
+     functional and useful document "free" in the sense of freedom: to
+     assure everyone the effective freedom to copy and redistribute it,
+     with or without modifying it, either commercially or noncommercially.
+     Secondarily, this License preserves for the author and publisher a way
+     to get credit for their work, while not being considered responsible
+     for modifications made by others.
+
+     This License is a kind of "copyleft", which means that derivative
+     works of the document must themselves be free in the same sense.  It
+     complements the GNU General Public License, which is a copyleft
+     license designed for free software.
+
+     We have designed this License in order to use it for manuals for free
+     software, because free software needs free documentation: a free
+     program should come with manuals providing the same freedoms that the
+     software does.  But this License is not limited to software manuals;
+     it can be used for any textual work, regardless of subject matter or
+     whether it is published as a printed book.  We recommend this License
+     principally for works whose purpose is instruction or reference.
+
+
+     1. APPLICABILITY AND DEFINITIONS
+
+     This License applies to any manual or other work, in any medium, that
+     contains a notice placed by the copyright holder saying it can be
+     distributed under the terms of this License.  Such a notice grants a
+     world-wide, royalty-free license, unlimited in duration, to use that
+     work under the conditions stated herein.  The "Document", below,
+     refers to any such manual or work.  Any member of the public is a
+     licensee, and is addressed as "you".  You accept the license if you
+     copy, modify or distribute the work in a way requiring permission
+     under copyright law.
+
+     A "Modified Version" of the Document means any work containing the
+     Document or a portion of it, either copied verbatim, or with
+     modifications and/or translated into another language.
+
+     A "Secondary Section" is a named appendix or a front-matter section of
+     the Document that deals exclusively with the relationship of the
+     publishers or authors of the Document to the Document's overall
+     subject (or to related matters) and contains nothing that could fall
+     directly within that overall subject.  (Thus, if the Document is in
+     part a textbook of mathematics, a Secondary Section may not explain
+     any mathematics.)  The relationship could be a matter of historical
+     connection with the subject or with related matters, or of legal,
+     commercial, philosophical, ethical or political position regarding
+     them.
+
+     The "Invariant Sections" are certain Secondary Sections whose titles
+     are designated, as being those of Invariant Sections, in the notice
+     that says that the Document is released under this License.  If a
+     section does not fit the above definition of Secondary then it is not
+     allowed to be designated as Invariant.  The Document may contain zero
+     Invariant Sections.  If the Document does not identify any Invariant
+     Sections then there are none.
+
+     The "Cover Texts" are certain short passages of text that are listed,
+     as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+     the Document is released under this License.  A Front-Cover Text may
+     be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+     A "Transparent" copy of the Document means a machine-readable copy,
+     represented in a format whose specification is available to the
+     general public, that is suitable for revising the document
+     straightforwardly with generic text editors or (for images composed of
+     pixels) generic paint programs or (for drawings) some widely available
+     drawing editor, and that is suitable for input to text formatters or
+     for automatic translation to a variety of formats suitable for input
+     to text formatters.  A copy made in an otherwise Transparent file
+     format whose markup, or absence of markup, has been arranged to thwart
+     or discourage subsequent modification by readers is not Transparent.
+     An image format is not Transparent if used for any substantial amount
+     of text.  A copy that is not "Transparent" is called "Opaque".
+
+     Examples of suitable formats for Transparent copies include plain
+     ASCII without markup, Texinfo input format, LaTeX input format, SGML
+     or XML using a publicly available DTD, and standard-conforming simple
+     HTML, PostScript or PDF designed for human modification.  Examples of
+     transparent image formats include PNG, XCF and JPG.  Opaque formats
+     include proprietary formats that can be read and edited only by
+     proprietary word processors, SGML or XML for which the DTD and/or
+     processing tools are not generally available, and the
+     machine-generated HTML, PostScript or PDF produced by some word
+     processors for output purposes only.
+
+     The "Title Page" means, for a printed book, the title page itself,
+     plus such following pages as are needed to hold, legibly, the material
+     this License requires to appear in the title page.  For works in
+     formats which do not have any title page as such, "Title Page" means
+     the text near the most prominent appearance of the work's title,
+     preceding the beginning of the body of the text.
+
+     The "publisher" means any person or entity that distributes copies of
+     the Document to the public.
+
+     A section "Entitled XYZ" means a named subunit of the Document whose
+     title either is precisely XYZ or contains XYZ in parentheses following
+     text that translates XYZ in another language.  (Here XYZ stands for a
+     specific section name mentioned below, such as "Acknowledgements",
+     "Dedications", "Endorsements", or "History".)  To "Preserve the Title"
+     of such a section when you modify the Document means that it remains a
+     section "Entitled XYZ" according to this definition.
+
+     The Document may include Warranty Disclaimers next to the notice which
+     states that this License applies to the Document.  These Warranty
+     Disclaimers are considered to be included by reference in this
+     License, but only as regards disclaiming warranties: any other
+     implication that these Warranty Disclaimers may have is void and has
+     no effect on the meaning of this License.
+
+     2. VERBATIM COPYING
+
+     You may copy and distribute the Document in any medium, either
+     commercially or noncommercially, provided that this License, the
+     copyright notices, and the license notice saying this License applies
+     to the Document are reproduced in all copies, and that you add no
+     other conditions whatsoever to those of this License.  You may not use
+     technical measures to obstruct or control the reading or further
+     copying of the copies you make or distribute.  However, you may accept
+     compensation in exchange for copies.  If you distribute a large enough
+     number of copies you must also follow the conditions in section 3.
+
+     You may also lend copies, under the same conditions stated above, and
+     you may publicly display copies.
+
+
+     3. COPYING IN QUANTITY
+
+     If you publish printed copies (or copies in media that commonly have
+     printed covers) of the Document, numbering more than 100, and the
+     Document's license notice requires Cover Texts, you must enclose the
+     copies in covers that carry, clearly and legibly, all these Cover
+     Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+     the back cover.  Both covers must also clearly and legibly identify
+     you as the publisher of these copies.  The front cover must present
+     the full title with all words of the title equally prominent and
+     visible.  You may add other material on the covers in addition.
+     Copying with changes limited to the covers, as long as they preserve
+     the title of the Document and satisfy these conditions, can be treated
+     as verbatim copying in other respects.
+
+     If the required texts for either cover are too voluminous to fit
+     legibly, you should put the first ones listed (as many as fit
+     reasonably) on the actual cover, and continue the rest onto adjacent
+     pages.
+
+     If you publish or distribute Opaque copies of the Document numbering
+     more than 100, you must either include a machine-readable Transparent
+     copy along with each Opaque copy, or state in or with each Opaque copy
+     a computer-network location from which the general network-using
+     public has access to download using public-standard network protocols
+     a complete Transparent copy of the Document, free of added material.
+     If you use the latter option, you must take reasonably prudent steps,
+     when you begin distribution of Opaque copies in quantity, to ensure
+     that this Transparent copy will remain thus accessible at the stated
+     location until at least one year after the last time you distribute an
+     Opaque copy (directly or through your agents or retailers) of that
+     edition to the public.
+
+     It is requested, but not required, that you contact the authors of the
+     Document well before redistributing any large number of copies, to
+     give them a chance to provide you with an updated version of the
+     Document.
+
+
+     4. MODIFICATIONS
+
+     You may copy and distribute a Modified Version of the Document under
+     the conditions of sections 2 and 3 above, provided that you release
+     the Modified Version under precisely this License, with the Modified
+     Version filling the role of the Document, thus licensing distribution
+     and modification of the Modified Version to whoever possesses a copy
+     of it.  In addition, you must do these things in the Modified Version:
+
+     A. Use in the Title Page (and on the covers, if any) a title distinct
+        from that of the Document, and from those of previous versions
+        (which should, if there were any, be listed in the History section
+        of the Document).  You may use the same title as a previous version
+        if the original publisher of that version gives permission.
+     B. List on the Title Page, as authors, one or more persons or entities
+        responsible for authorship of the modifications in the Modified
+        Version, together with at least five of the principal authors of the
+        Document (all of its principal authors, if it has fewer than five),
+        unless they release you from this requirement.
+     C. State on the Title page the name of the publisher of the
+        Modified Version, as the publisher.
+     D. Preserve all the copyright notices of the Document.
+     E. Add an appropriate copyright notice for your modifications
+        adjacent to the other copyright notices.
+     F. Include, immediately after the copyright notices, a license notice
+        giving the public permission to use the Modified Version under the
+        terms of this License, in the form shown in the Addendum below.
+     G. Preserve in that license notice the full lists of Invariant Sections
+        and required Cover Texts given in the Document's license notice.
+     H. Include an unaltered copy of this License.
+     I. Preserve the section Entitled "History", Preserve its Title, and add
+        to it an item stating at least the title, year, new authors, and
+        publisher of the Modified Version as given on the Title Page.  If
+        there is no section Entitled "History" in the Document, create one
+        stating the title, year, authors, and publisher of the Document as
+        given on its Title Page, then add an item describing the Modified
+        Version as stated in the previous sentence.
+     J. Preserve the network location, if any, given in the Document for
+        public access to a Transparent copy of the Document, and likewise
+        the network locations given in the Document for previous versions
+        it was based on.  These may be placed in the "History" section.
+        You may omit a network location for a work that was published at
+        least four years before the Document itself, or if the original
+        publisher of the version it refers to gives permission.
+     K. For any section Entitled "Acknowledgements" or "Dedications",
+        Preserve the Title of the section, and preserve in the section all
+        the substance and tone of each of the contributor acknowledgements
+        and/or dedications given therein.
+     L. Preserve all the Invariant Sections of the Document,
+        unaltered in their text and in their titles.  Section numbers
+        or the equivalent are not considered part of the section titles.
+     M. Delete any section Entitled "Endorsements".  Such a section
+        may not be included in the Modified Version.
+     N. Do not retitle any existing section to be Entitled "Endorsements"
+        or to conflict in title with any Invariant Section.
+     O. Preserve any Warranty Disclaimers.
+
+     If the Modified Version includes new front-matter sections or
+     appendices that qualify as Secondary Sections and contain no material
+     copied from the Document, you may at your option designate some or all
+     of these sections as invariant.  To do this, add their titles to the
+     list of Invariant Sections in the Modified Version's license notice.
+     These titles must be distinct from any other section titles.
+
+     You may add a section Entitled "Endorsements", provided it contains
+     nothing but endorsements of your Modified Version by various
+     parties--for example, statements of peer review or that the text has
+     been approved by an organization as the authoritative definition of a
+     standard.
+
+     You may add a passage of up to five words as a Front-Cover Text, and a
+     passage of up to 25 words as a Back-Cover Text, to the end of the list
+     of Cover Texts in the Modified Version.  Only one passage of
+     Front-Cover Text and one of Back-Cover Text may be added by (or
+     through arrangements made by) any one entity.  If the Document already
+     includes a cover text for the same cover, previously added by you or
+     by arrangement made by the same entity you are acting on behalf of,
+     you may not add another; but you may replace the old one, on explicit
+     permission from the previous publisher that added the old one.
+
+     The author(s) and publisher(s) of the Document do not by this License
+     give permission to use their names for publicity for or to assert or
+     imply endorsement of any Modified Version.
+
+
+     5. COMBINING DOCUMENTS
+
+     You may combine the Document with other documents released under this
+     License, under the terms defined in section 4 above for modified
+     versions, provided that you include in the combination all of the
+     Invariant Sections of all of the original documents, unmodified, and
+     list them all as Invariant Sections of your combined work in its
+     license notice, and that you preserve all their Warranty Disclaimers.
+
+     The combined work need only contain one copy of this License, and
+     multiple identical Invariant Sections may be replaced with a single
+     copy.  If there are multiple Invariant Sections with the same name but
+     different contents, make the title of each such section unique by
+     adding at the end of it, in parentheses, the name of the original
+     author or publisher of that section if known, or else a unique number.
+     Make the same adjustment to the section titles in the list of
+     Invariant Sections in the license notice of the combined work.
+
+     In the combination, you must combine any sections Entitled "History"
+     in the various original documents, forming one section Entitled
+     "History"; likewise combine any sections Entitled "Acknowledgements",
+     and any sections Entitled "Dedications".  You must delete all sections
+     Entitled "Endorsements".
+
+
+     6. COLLECTIONS OF DOCUMENTS
+
+     You may make a collection consisting of the Document and other
+     documents released under this License, and replace the individual
+     copies of this License in the various documents with a single copy
+     that is included in the collection, provided that you follow the rules
+     of this License for verbatim copying of each of the documents in all
+     other respects.
+
+     You may extract a single document from such a collection, and
+     distribute it individually under this License, provided you insert a
+     copy of this License into the extracted document, and follow this
+     License in all other respects regarding verbatim copying of that
+     document.
+
+
+     7. AGGREGATION WITH INDEPENDENT WORKS
+
+     A compilation of the Document or its derivatives with other separate
+     and independent documents or works, in or on a volume of a storage or
+     distribution medium, is called an "aggregate" if the copyright
+     resulting from the compilation is not used to limit the legal rights
+     of the compilation's users beyond what the individual works permit.
+     When the Document is included in an aggregate, this License does not
+     apply to the other works in the aggregate which are not themselves
+     derivative works of the Document.
+
+     If the Cover Text requirement of section 3 is applicable to these
+     copies of the Document, then if the Document is less than one half of
+     the entire aggregate, the Document's Cover Texts may be placed on
+     covers that bracket the Document within the aggregate, or the
+     electronic equivalent of covers if the Document is in electronic form.
+     Otherwise they must appear on printed covers that bracket the whole
+     aggregate.
+
+
+     8. TRANSLATION
+
+     Translation is considered a kind of modification, so you may
+     distribute translations of the Document under the terms of section 4.
+     Replacing Invariant Sections with translations requires special
+     permission from their copyright holders, but you may include
+     translations of some or all Invariant Sections in addition to the
+     original versions of these Invariant Sections.  You may include a
+     translation of this License, and all the license notices in the
+     Document, and any Warranty Disclaimers, provided that you also include
+     the original English version of this License and the original versions
+     of those notices and disclaimers.  In case of a disagreement between
+     the translation and the original version of this License or a notice
+     or disclaimer, the original version will prevail.
+
+     If a section in the Document is Entitled "Acknowledgements",
+     "Dedications", or "History", the requirement (section 4) to Preserve
+     its Title (section 1) will typically require changing the actual
+     title.
+
+
+     9. TERMINATION
+
+     You may not copy, modify, sublicense, or distribute the Document
+     except as expressly provided under this License.  Any attempt
+     otherwise to copy, modify, sublicense, or distribute it is void, and
+     will automatically terminate your rights under this License.
+
+     However, if you cease all violation of this License, then your license
+     from a particular copyright holder is reinstated (a) provisionally,
+     unless and until the copyright holder explicitly and finally
+     terminates your license, and (b) permanently, if the copyright holder
+     fails to notify you of the violation by some reasonable means prior to
+     60 days after the cessation.
+
+     Moreover, your license from a particular copyright holder is
+     reinstated permanently if the copyright holder notifies you of the
+     violation by some reasonable means, this is the first time you have
+     received notice of violation of this License (for any work) from that
+     copyright holder, and you cure the violation prior to 30 days after
+     your receipt of the notice.
+
+     Termination of your rights under this section does not terminate the
+     licenses of parties who have received copies or rights from you under
+     this License.  If your rights have been terminated and not permanently
+     reinstated, receipt of a copy of some or all of the same material does
+     not give you any rights to use it.
+
+
+     10. FUTURE REVISIONS OF THIS LICENSE
+
+     The Free Software Foundation may publish new, revised versions of the
+     GNU Free Documentation License from time to time.  Such new versions
+     will be similar in spirit to the present version, but may differ in
+     detail to address new problems or concerns.  See
+     http://www.gnu.org/copyleft/.
+
+     Each version of the License is given a distinguishing version number.
+     If the Document specifies that a particular numbered version of this
+     License "or any later version" applies to it, you have the option of
+     following the terms and conditions either of that specified version or
+     of any later version that has been published (not as a draft) by the
+     Free Software Foundation.  If the Document does not specify a version
+     number of this License, you may choose any version ever published (not
+     as a draft) by the Free Software Foundation.  If the Document
+     specifies that a proxy can decide which future versions of this
+     License can be used, that proxy's public statement of acceptance of a
+     version permanently authorizes you to choose that version for the
+     Document.
+
+     11. RELICENSING
+
+     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+     World Wide Web server that publishes copyrightable works and also
+     provides prominent facilities for anybody to edit those works.  A
+     public wiki that anybody can edit is an example of such a server.  A
+     "Massive Multiauthor Collaboration" (or "MMC") contained in the site
+     means any set of copyrightable works thus published on the MMC site.
+
+     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+     license published by Creative Commons Corporation, a not-for-profit
+     corporation with a principal place of business in San Francisco,
+     California, as well as future copyleft versions of that license
+     published by that same organization.
+
+     "Incorporate" means to publish or republish a Document, in whole or in
+     part, as part of another Document.
+
+     An MMC is "eligible for relicensing" if it is licensed under this
+     License, and if all works that were first published under this License
+     somewhere other than this MMC, and subsequently incorporated in whole or
+     in part into the MMC, (1) had no cover texts or invariant sections, and
+     (2) were thus incorporated prior to November 1, 2008.
+
+     The operator of an MMC Site may republish an MMC contained in the site
+     under CC-BY-SA on the same site at any time before August 1, 2009,
+     provided the MMC is eligible for relicensing.
+
+
+     ADDENDUM: How to use this License for your documents
+
+     To use this License in a document you have written, include a copy of
+     the License in the document and put the following copyright and
+     license notices just after the title page:
+
+         Copyright (c)  YEAR  YOUR NAME.
+         Permission is granted to copy, distribute and/or modify this document
+         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".
+
+     If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+     replace the "with...Texts." line with this:
+
+         with the Invariant Sections being LIST THEIR TITLES, with the
+         Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+     If you have Invariant Sections without Cover Texts, or some other
+     combination of the three, merge those two alternatives to suit the
+     situation.
+
+     If your document contains nontrivial examples of program code, we
+     recommend releasing these examples in parallel under your choice of
+     free software license, such as the GNU General Public License,
+     to permit their use in free software.
+
+\1f
+File: flycheck.info,  Node: Index,  Prev: GNU Free Documentation License,  Up: Top
+
+Index
+*****
+
+\0\b[index\0\b]
+* Menu:
+
+* ;auto; Emacs Lisp function:            Error analysis.      (line  20)
+* ada-gnat; Emacs Lisp Flycheck syntax checker: Ada.          (line   6)
+* asciidoc; Emacs Lisp Flycheck syntax checker: AsciiDoc.     (line   6)
+* c/c++-clang; Emacs Lisp Flycheck syntax checker: C/C++.     (line   6)
+* c/c++-cppcheck; Emacs Lisp Flycheck syntax checker: C/C++.  (line 375)
+* c/c++-gcc; Emacs Lisp Flycheck syntax checker: C/C++.       (line 209)
+* cfengine; Emacs Lisp Flycheck syntax checker: CFEngine.     (line   6)
+* chaining:                              Glossary.            (line  37)
+* chef-foodcritic; Emacs Lisp Flycheck syntax checker: Chef.  (line  11)
+* coffee-coffeelint; Emacs Lisp Flycheck syntax checker: Coffeescript.
+                                                              (line  20)
+* coffee; Emacs Lisp Flycheck syntax checker: Coffeescript.   (line   6)
+* coq; Emacs Lisp Flycheck syntax checker: Coq.               (line   6)
+* css-csslint; Emacs Lisp Flycheck syntax checker: CSS.       (line   6)
+* d-dmd; Emacs Lisp Flycheck syntax checker: D.               (line   6)
+* disabled syntax checker:               Glossary.            (line  14)
+* elixir; Emacs Lisp Flycheck syntax checker: Elixir.         (line   6)
+* emacs-lisp-checkdoc; Emacs Lisp Flycheck syntax checker: Emacs Lisp.
+                                                              (line  98)
+* emacs-lisp; Emacs Lisp Flycheck syntax checker: Emacs Lisp. (line  11)
+* enabled syntax checker:                Glossary.            (line  20)
+* erlang; Emacs Lisp Flycheck syntax checker: Erlang.         (line   6)
+* eruby-erubis; Emacs Lisp Flycheck syntax checker: ERuby.    (line   6)
+* flycheck-add-mode; Emacs Lisp function: Generic syntax checkers<2>.
+                                                              (line 198)
+* flycheck-add-next-checker; Emacs Lisp function: Generic syntax checkers<2>.
+                                                              (line 208)
+* flycheck-add-overlay; Emacs Lisp function: Error processing<2>.
+                                                              (line   8)
+* flycheck-after-syntax-check-hook; Emacs Lisp hook: Syntax checks.
+                                                              (line  27)
+* flycheck-before-syntax-check-hook; Emacs Lisp hook: Syntax checks.
+                                                              (line  48)
+* flycheck-buffer-saved-p; Emacs Lisp function: Predicates for syntax checkers.
+                                                              (line   8)
+* flycheck-buffer; Emacs Lisp command:   Checking buffers.    (line  75)
+* flycheck-check-syntax-automatically; Emacs Lisp user option: Checking buffers.
+                                                              (line  19)
+* flycheck-checker-error-threshold; Emacs Lisp user option: Error reporting.
+                                                              (line  18)
+* flycheck-checker; Emacs Lisp variable: Selecting syntax checkers.
+                                                              (line 155)
+* flycheck-checkers; Emacs Lisp user option: Selecting syntax checkers.
+                                                              (line   9)
+* flycheck-chktexrc; Emacs Lisp user option: TeX/LaTeX.       (line  20)
+* flycheck-clang-args; Emacs Lisp user option: C/C++.         (line  23)
+* flycheck-clang-blocks; Emacs Lisp user option: C/C++.       (line  35)
+* flycheck-clang-definitions; Emacs Lisp user option: C/C++.  (line  52)
+* flycheck-clang-include-path; Emacs Lisp user option: C/C++. (line  69)
+* flycheck-clang-includes; Emacs Lisp user option: C/C++.     (line  86)
+* flycheck-clang-language-standard; Emacs Lisp user option: C/C++.
+                                                              (line 103)
+* flycheck-clang-ms-extensions; Emacs Lisp user option: C/C++.
+                                                              (line 120)
+* flycheck-clang-no-exceptions; Emacs Lisp user option: C/C++.
+                                                              (line 136)
+* flycheck-clang-no-rtti; Emacs Lisp user option: C/C++.      (line 152)
+* flycheck-clang-standard-library; Emacs Lisp user option: C/C++.
+                                                              (line 167)
+* flycheck-clang-warnings; Emacs Lisp user option: C/C++.     (line 187)
+* flycheck-clear; Emacs Lisp command:    Error reporting.     (line 187)
+* flycheck-coffeelintrc; Emacs Lisp user option: Coffeescript.
+                                                              (line  31)
+* flycheck-collapse-error-message-whitespace; Emacs Lisp function: Error filters.
+                                                              (line  26)
+* flycheck-compile; Emacs Lisp command:  Finding the right error patterns.
+                                                              (line  16)
+* flycheck-completion-system; Emacs Lisp user option: Selecting syntax checkers.
+                                                              (line 118)
+* flycheck-copy-errors-as-kill; Emacs Lisp command: Copying killing errors.
+                                                              (line   9)
+* flycheck-count-errors; Emacs Lisp function: Error analysis. (line   8)
+* flycheck-cppcheck-checks; Emacs Lisp user option: C/C++.    (line 384)
+* flycheck-cppcheck-inconclusive; Emacs Lisp user option: C/C++.
+                                                              (line 406)
+* flycheck-current-errors; Emacs Lisp variable: Errors.       (line   9)
+* flycheck-dedent-error-messages; Emacs Lisp function: Error filters.
+                                                              (line  32)
+* flycheck-def-args-var; Emacs Lisp macro: Options for command syntax checkers.
+                                                              (line  23)
+* flycheck-def-config-file-var; Emacs Lisp macro: Configuration files for command syntax checkers.
+                                                              (line   9)
+* flycheck-def-executable-var; Emacs Lisp macro: Command syntax checkers.
+                                                              (line  87)
+* flycheck-def-option-var; Emacs Lisp macro: Options for command syntax checkers.
+                                                              (line   9)
+* flycheck-define-checker; Emacs Lisp macro: Command syntax checkers.
+                                                              (line 106)
+* flycheck-define-command-checker; Emacs Lisp function: Command syntax checkers.
+                                                              (line  11)
+* flycheck-define-error-level; Emacs Lisp function: Error levels<2>.
+                                                              (line  23)
+* flycheck-define-generic-checker; Emacs Lisp function: Generic syntax checkers<2>.
+                                                              (line  10)
+* flycheck-dequalify-error-ids; Emacs Lisp function: Error filters.
+                                                              (line  53)
+* flycheck-describe-checker; Emacs Lisp command: Selecting syntax checkers.
+                                                              (line 187)
+* flycheck-disabled-checkers; Emacs Lisp user option: Selecting syntax checkers.
+                                                              (line  34)
+* flycheck-display-error-messages-unless-error-list; Emacs Lisp function: Error reporting.
+                                                              (line 161)
+* flycheck-display-error-messages; Emacs Lisp function: Error reporting.
+                                                              (line 148)
+* flycheck-display-errors-delay; Emacs Lisp user option: Error reporting.
+                                                              (line 117)
+* flycheck-display-errors-function; Emacs Lisp user option: Error reporting.
+                                                              (line 133)
+* flycheck-dmd-include-path; Emacs Lisp user option: D.       (line  15)
+* flycheck-emacs-lisp-initialize-packages; Emacs Lisp user option: Emacs Lisp.
+                                                              (line  27)
+* flycheck-emacs-lisp-load-path; Emacs Lisp user option: Emacs Lisp.
+                                                              (line  46)
+* flycheck-emacs-lisp-package-user-dir; Emacs Lisp user option: Emacs Lisp.
+                                                              (line  74)
+* flycheck-error-<; Emacs Lisp function: Errors.              (line 169)
+* flycheck-error-buffer; Emacs Lisp slot: Errors.             (line  25)
+* flycheck-error-checker; Emacs Lisp slot: Errors.            (line  30)
+* flycheck-error-column-region; Emacs Lisp function: Errors.  (line 131)
+* flycheck-error-column; Emacs Lisp slot: Errors.             (line  42)
+* flycheck-error-filename; Emacs Lisp slot: Errors.           (line  34)
+* flycheck-error-format; Emacs Lisp function: Errors.         (line 162)
+* flycheck-error-id; Emacs Lisp slot:    Errors.              (line  71)
+* flycheck-error-level-<; Emacs Lisp function: Errors.        (line 175)
+* flycheck-error-level-p; Emacs Lisp function: Error levels<2>.
+                                                              (line  63)
+* flycheck-error-level; Emacs Lisp slot: Errors.              (line  66)
+* flycheck-error-line-region; Emacs Lisp function: Errors.    (line 121)
+* flycheck-error-line; Emacs Lisp slot:  Errors.              (line  38)
+* flycheck-error-list-after-refresh-hook; Emacs Lisp hook: Listing errors.
+                                                              (line  22)
+* flycheck-error-list-checker-name; Emacs Lisp face: Listing errors.
+                                                              (line  64)
+* flycheck-error-list-column-number; Emacs Lisp face: Listing errors.
+                                                              (line  57)
+* flycheck-error-list-highlight; Emacs Lisp face: Listing errors.
+                                                              (line  40)
+* flycheck-error-list-line-number; Emacs Lisp face: Listing errors.
+                                                              (line  50)
+* flycheck-error-message; Emacs Lisp slot: Errors.            (line  62)
+* flycheck-error-new-at; Emacs Lisp function: Errors.         (line  81)
+* flycheck-error-new; Emacs Lisp function: Errors.            (line 102)
+* flycheck-error-parser; Emacs Lisp function: Error parsers.  (line  23)
+* flycheck-error-pos; Emacs Lisp function: Errors.            (line 153)
+* flycheck-error-thing-region; Emacs Lisp function: Errors.   (line 141)
+* flycheck-error-with-buffer; Emacs Lisp macro: Errors.       (line 115)
+* flycheck-error; Emacs Lisp CL struct:  Errors.              (line  20)
+* flycheck-error; Emacs Lisp face:       Error reporting.     (line  72)
+* flycheck-ert-at-nth-error; Emacs Lisp function: Writing assertions.
+                                                              (line  52)
+* flycheck-ert-buffer-sync; Emacs Lisp function: Invoking syntax checkers in test cases.
+                                                              (line   6)
+* flycheck-ert-check-gpg; Emacs Lisp function: Obtaining information about the environment.
+                                                              (line  14)
+* flycheck-ert-def-checker-test; Emacs Lisp macro: Defining test cases.
+                                                              (line   9)
+* flycheck-ert-ensure-clear; Emacs Lisp function: Invoking syntax checkers in test cases.
+                                                              (line  10)
+* flycheck-ert-extract-version-command; Emacs Lisp function: Obtaining information about the environment.
+                                                              (line  18)
+* flycheck-ert-initialize; Emacs Lisp function: Loading and initializing.
+                                                              (line  19)
+* flycheck-ert-locate-config-file; Emacs Lisp function: Accessing test resources.
+                                                              (line  23)
+* flycheck-ert-resource-filename; Emacs Lisp function: Accessing test resources.
+                                                              (line   9)
+* flycheck-ert-should-errors; Emacs Lisp function: Writing assertions.
+                                                              (line  12)
+* flycheck-ert-should-overlay; Emacs Lisp function: Writing assertions.
+                                                              (line   6)
+* flycheck-ert-should-syntax-check; Emacs Lisp function: Writing assertions.
+                                                              (line  28)
+* flycheck-ert-syntax-check-timed-out-p; Emacs Lisp function: Checking results of test cases.
+                                                              (line   9)
+* flycheck-ert-travis-ci-p; Emacs Lisp function: Obtaining information about the environment.
+                                                              (line  10)
+* flycheck-ert-user-error-type; Emacs Lisp constant: Obtaining information about the environment.
+                                                              (line   6)
+* flycheck-ert-with-env; Emacs Lisp macro: Scoping resource access.
+                                                              (line  12)
+* flycheck-ert-with-file-buffer; Emacs Lisp macro: Creating temporary buffers.
+                                                              (line  14)
+* flycheck-ert-with-global-mode; Emacs Lisp macro: Scoping resource access.
+                                                              (line  23)
+* flycheck-ert-with-help-buffer; Emacs Lisp macro: Scoping resource access.
+                                                              (line   6)
+* flycheck-ert-with-resource-buffer; Emacs Lisp macro: Accessing test resources.
+                                                              (line  16)
+* flycheck-ert-with-temp-buffer; Emacs Lisp macro: Creating temporary buffers.
+                                                              (line   6)
+* flycheck-eslint-rulesdir; Emacs Lisp user option: Javascript.
+                                                              (line  32)
+* flycheck-eslintrc; Emacs Lisp user option: Javascript.      (line  56)
+* flycheck-first-error; Emacs Lisp command: Navigating and jumping to errors.
+                                                              (line  66)
+* flycheck-flake8-error-level-alist; Emacs Lisp user option: Python.
+                                                              (line  16)
+* flycheck-flake8-maximum-complexity; Emacs Lisp user option: Python.
+                                                              (line  41)
+* flycheck-flake8-maximum-line-length; Emacs Lisp user option: Python.
+                                                              (line  58)
+* flycheck-flake8rc; Emacs Lisp user option: Python.          (line  80)
+* flycheck-fold-include-levels; Emacs Lisp function: Error filters.
+                                                              (line  42)
+* flycheck-fringe-error; Emacs Lisp face: Error reporting.    (line 105)
+* flycheck-fringe-info; Emacs Lisp face: Error reporting.     (line 105)
+* flycheck-fringe-warning; Emacs Lisp face: Error reporting.  (line 105)
+* flycheck-gcc-args; Emacs Lisp user option: C/C++.           (line 226)
+* flycheck-gcc-definitions; Emacs Lisp user option: C/C++.    (line 238)
+* flycheck-gcc-include-path; Emacs Lisp user option: C/C++.   (line 255)
+* flycheck-gcc-includes; Emacs Lisp user option: C/C++.       (line 272)
+* flycheck-gcc-language-standard; Emacs Lisp user option: C/C++.
+                                                              (line 289)
+* flycheck-gcc-no-exceptions; Emacs Lisp user option: C/C++.  (line 306)
+* flycheck-gcc-no-rtti; Emacs Lisp user option: C/C++.        (line 322)
+* flycheck-gcc-openmp; Emacs Lisp user option: C/C++.         (line 337)
+* flycheck-gcc-warnings; Emacs Lisp user option: C/C++.       (line 353)
+* flycheck-gfortran-args; Emacs Lisp user option: Fortran.    (line  16)
+* flycheck-gfortran-include-path; Emacs Lisp user option: Fortran.
+                                                              (line  28)
+* flycheck-gfortran-language-standard; Emacs Lisp user option: Fortran.
+                                                              (line  45)
+* flycheck-gfortran-layout; Emacs Lisp user option: Fortran.  (line  62)
+* flycheck-gfortran-warnings; Emacs Lisp user option: Fortran.
+                                                              (line  82)
+* flycheck-ghc-args; Emacs Lisp user option: Haskell.         (line  23)
+* flycheck-ghc-language-extensions; Emacs Lisp user option: Haskell.
+                                                              (line  35)
+* flycheck-ghc-no-user-package-database; Emacs Lisp user option: Haskell.
+                                                              (line  52)
+* flycheck-ghc-package-databases; Emacs Lisp user option: Haskell.
+                                                              (line  68)
+* flycheck-ghc-search-path; Emacs Lisp user option: Haskell.  (line  85)
+* flycheck-gjslintrc; Emacs Lisp user option: Javascript.     (line  76)
+* flycheck-gnat-args; Emacs Lisp user option: Ada.            (line  16)
+* flycheck-gnat-include-path; Emacs Lisp user option: Ada.    (line  28)
+* flycheck-gnat-language-standard; Emacs Lisp user option: Ada.
+                                                              (line  45)
+* flycheck-gnat-warnings; Emacs Lisp user option: Ada.        (line  62)
+* flycheck-go-vet-print-functions; Emacs Lisp user option: Go.
+                                                              (line  72)
+* flycheck-has-errors-p; Emacs Lisp function: Error analysis. (line  16)
+* flycheck-has-max-errors-p; Emacs Lisp function: Error analysis.
+                                                              (line  20)
+* flycheck-highlighting-mode; Emacs Lisp user option: Error reporting.
+                                                              (line  38)
+* flycheck-idle-change-delay; Emacs Lisp user option: Checking buffers.
+                                                              (line  55)
+* flycheck-increment-error-columns; Emacs Lisp function: Error filters.
+                                                              (line  19)
+* flycheck-indication-mode; Emacs Lisp user option: Error reporting.
+                                                              (line  89)
+* flycheck-info; Emacs Lisp face:        Error reporting.     (line  72)
+* flycheck-jshintrc; Emacs Lisp user option: Javascript.      (line  15)
+* flycheck-keymap-prefix; Emacs Lisp user option: Usage.      (line  13)
+* flycheck-last-status-change; Emacs Lisp variable: Flycheck buffer status.
+                                                              (line  55)
+* flycheck-lintr-caching; Emacs Lisp user option: R.          (line  15)
+* flycheck-lintr-linters; Emacs Lisp user option: R.          (line  32)
+* flycheck-list-errors; Emacs Lisp command: Listing errors.   (line   9)
+* flycheck-locate-config-file-functions; Emacs Lisp user option: Syntax checker configuration files.
+                                                              (line  20)
+* flycheck-locate-config-file; Emacs Lisp function: Configuration files for command syntax checkers.
+                                                              (line  28)
+* flycheck-mode-line-status-text; Emacs Lisp function: Flycheck buffer status.
+                                                              (line  62)
+* flycheck-mode-line; Emacs Lisp user option: Mode line reporting.
+                                                              (line  44)
+* flycheck-mode; Emacs Lisp command:     Enabling syntax checking<2>.
+                                                              (line  40)
+* flycheck-mode; Emacs Lisp user option: Enabling syntax checking<2>.
+                                                              (line  44)
+* flycheck-navigation-minimum-level; Emacs Lisp user option: Navigating and jumping to errors.
+                                                              (line  82)
+* flycheck-next-error; Emacs Lisp command: Navigating and jumping to errors.
+                                                              (line  48)
+* flycheck-option-comma-separated-list; Emacs Lisp function: Options for command syntax checkers.
+                                                              (line  44)
+* flycheck-option-int; Emacs Lisp function: Options for command syntax checkers.
+                                                              (line  37)
+* flycheck-parse-checkstyle; Emacs Lisp function: Error parsers.
+                                                              (line  10)
+* flycheck-parse-with-patterns; Emacs Lisp function: Error parsing with regular expressions.
+                                                              (line  39)
+* flycheck-parse-xml-string; Emacs Lisp function: Error parsers.
+                                                              (line  31)
+* flycheck-perlcritic-severity; Emacs Lisp user option: Perl. (line  28)
+* flycheck-phpcs-standard; Emacs Lisp user option: PHP.       (line  63)
+* flycheck-phpmd-rulesets; Emacs Lisp user option: PHP.       (line  39)
+* flycheck-previous-error; Emacs Lisp command: Navigating and jumping to errors.
+                                                              (line  57)
+* flycheck-process-error-functions; Emacs Lisp hook: Error processing<2>.
+                                                              (line   6)
+* flycheck-pylintrc; Emacs Lisp user option: Python.          (line  99)
+* flycheck-registered-checker-p; Emacs Lisp function: Generic syntax checkers<2>.
+                                                              (line 188)
+* flycheck-remove-error-ids; Emacs Lisp function: Error filters.
+                                                              (line  65)
+* flycheck-report-status; Emacs Lisp function: Flycheck buffer status.
+                                                              (line  23)
+* flycheck-rubocop-lint-only; Emacs Lisp user option: Ruby.   (line  23)
+* flycheck-rubocoprc; Emacs Lisp user option: Ruby.           (line  42)
+* flycheck-rubylintrc; Emacs Lisp user option: Ruby.          (line  61)
+* flycheck-rust-check-tests; Emacs Lisp user option: Rust.    (line  17)
+* flycheck-rust-crate-root; Emacs Lisp user option: Rust.     (line  34)
+* flycheck-rust-crate-type; Emacs Lisp user option: Rust.     (line  54)
+* flycheck-rust-library-path; Emacs Lisp user option: Rust.   (line  67)
+* flycheck-rx-to-string; Emacs Lisp function: Error parsing with regular expressions.
+                                                              (line  12)
+* flycheck-sanitize-errors; Emacs Lisp function: Error filters.
+                                                              (line   9)
+* flycheck-sass-compass; Emacs Lisp user option: Sass.        (line  15)
+* flycheck-scalastyle-jar; Emacs Lisp user option: Scala.     (line  33)
+* flycheck-scalastylerc; Emacs Lisp user option: Scala.       (line  52)
+* flycheck-scss-compass; Emacs Lisp user option: Scss.        (line  15)
+* flycheck-select-checker; Emacs Lisp command: Selecting syntax checkers.
+                                                              (line  74)
+* flycheck-set-checker-executable; Emacs Lisp command: Syntax checker executables.
+                                                              (line  22)
+* flycheck-shellcheck-excluded-warnings; Emacs Lisp user option: Shell script languages.
+                                                              (line  81)
+* flycheck-sphinx-warn-on-missing-references; Emacs Lisp user option: ReStructuredText.
+                                                              (line  21)
+* flycheck-standard-error-navigation; Emacs Lisp user option: Navigating and jumping to errors.
+                                                              (line  21)
+* flycheck-status-changed-functions; Emacs Lisp hook: Flycheck buffer status.
+                                                              (line   6)
+* flycheck-string-list-p; Emacs Lisp function: Utilities.     (line   6)
+* flycheck-substitute-argument; Emacs Lisp function: Command arguments.
+                                                              (line  11)
+* flycheck-symbol-list-p; Emacs Lisp function: Utilities.     (line  10)
+* flycheck-syntax-check-failed-hook; Emacs Lisp hook: Syntax checks.
+                                                              (line  66)
+* flycheck-temp-prefix; Emacs Lisp user option: Checking buffers.
+                                                              (line  99)
+* flycheck-tidyrc; Emacs Lisp user option: HTML.              (line  15)
+* flycheck-verify-setup; Emacs Lisp command: Checking buffers.
+                                                              (line  86)
+* flycheck-warning; Emacs Lisp face:     Error reporting.     (line  72)
+* fortran-gfortran; Emacs Lisp Flycheck syntax checker: Fortran.
+                                                              (line   6)
+* global-flycheck-mode; Emacs Lisp command: Enabling syntax checking<2>.
+                                                              (line   9)
+* global-flycheck-mode; Emacs Lisp user option: Enabling syntax checking<2>.
+                                                              (line  26)
+* go-build; Emacs Lisp Flycheck syntax checker: Go.           (line  93)
+* go-errcheck; Emacs Lisp Flycheck syntax checker: Go.        (line 121)
+* go-gofmt; Emacs Lisp Flycheck syntax checker: Go.           (line   6)
+* go-golint; Emacs Lisp Flycheck syntax checker: Go.          (line  32)
+* go-test; Emacs Lisp Flycheck syntax checker: Go.            (line 107)
+* go-vet; Emacs Lisp Flycheck syntax checker: Go.             (line  51)
+* haml; Emacs Lisp Flycheck syntax checker: Haml.             (line   6)
+* handlebars; Emacs Lisp Flycheck syntax checker: Handlebars. (line   6)
+* haskell-ghc; Emacs Lisp Flycheck syntax checker: Haskell.   (line   6)
+* haskell-hlint; Emacs Lisp Flycheck syntax checker: Haskell. (line 109)
+* html-tidy; Emacs Lisp Flycheck syntax checker: HTML.        (line   6)
+* javascript-eslint; Emacs Lisp Flycheck syntax checker: Javascript.
+                                                              (line  23)
+* javascript-gjslint; Emacs Lisp Flycheck syntax checker: Javascript.
+                                                              (line  67)
+* javascript-jshint; Emacs Lisp Flycheck syntax checker: Javascript.
+                                                              (line   6)
+* json-jsonlint; Emacs Lisp Flycheck syntax checker: JSON.    (line   6)
+* less; Emacs Lisp Flycheck syntax checker: LESS.             (line   6)
+* lua; Emacs Lisp Flycheck syntax checker: Lua.               (line   6)
+* make; Emacs Lisp Flycheck syntax checker: Make.             (line   6)
+* perl-perlcritic; Emacs Lisp Flycheck syntax checker: Perl.  (line  19)
+* perl; Emacs Lisp Flycheck syntax checker: Perl.             (line   6)
+* php-phpcs; Emacs Lisp Flycheck syntax checker: PHP.         (line  54)
+* php-phpmd; Emacs Lisp Flycheck syntax checker: PHP.         (line  23)
+* php; Emacs Lisp Flycheck syntax checker: PHP.               (line   6)
+* puppet-lint; Emacs Lisp Flycheck syntax checker: Puppet.    (line  20)
+* puppet-parser; Emacs Lisp Flycheck syntax checker: Puppet.  (line   6)
+* python-flake8; Emacs Lisp Flycheck syntax checker: Python.  (line   6)
+* python-pycompile; Emacs Lisp Flycheck syntax checker: Python.
+                                                              (line 107)
+* python-pylint; Emacs Lisp Flycheck syntax checker: Python.  (line  88)
+* r-lintr; Emacs Lisp Flycheck syntax checker: R.             (line   6)
+* racket; Emacs Lisp Flycheck syntax checker: Racket.         (line   6)
+* registered syntax checker:             Glossary.            (line   9)
+* rpm-rpmlint; Emacs Lisp Flycheck syntax checker: RPM SPEC.  (line   6)
+* rst-sphinx; Emacs Lisp Flycheck syntax checker: ReStructuredText.
+                                                              (line  12)
+* rst; Emacs Lisp Flycheck syntax checker: ReStructuredText.  (line   6)
+* ruby-jruby; Emacs Lisp Flycheck syntax checker: Ruby.       (line  94)
+* ruby-rubocop; Emacs Lisp Flycheck syntax checker: Ruby.     (line   6)
+* ruby-rubylint; Emacs Lisp Flycheck syntax checker: Ruby.    (line  50)
+* ruby; Emacs Lisp Flycheck syntax checker: Ruby.             (line  72)
+* rust; Emacs Lisp Flycheck syntax checker: Rust.             (line   6)
+* sass; Emacs Lisp Flycheck syntax checker: Sass.             (line   6)
+* scala-scalastyle; Emacs Lisp Flycheck syntax checker: Scala.
+                                                              (line  20)
+* scala; Emacs Lisp Flycheck syntax checker: Scala.           (line   6)
+* scss; Emacs Lisp Flycheck syntax checker: Scss.             (line   6)
+* sh-bash; Emacs Lisp Flycheck syntax checker: Shell script languages.
+                                                              (line   6)
+* sh-posix-bash; Emacs Lisp Flycheck syntax checker: Shell script languages.
+                                                              (line  39)
+* sh-posix-dash; Emacs Lisp Flycheck syntax checker: Shell script languages.
+                                                              (line  20)
+* sh-shellcheck; Emacs Lisp Flycheck syntax checker: Shell script languages.
+                                                              (line  72)
+* sh-zsh; Emacs Lisp Flycheck syntax checker: Shell script languages.
+                                                              (line  58)
+* slim; Emacs Lisp Flycheck syntax checker: Slim.             (line   6)
+* status-callback; Emacs Lisp function:  Status callback protocol.
+                                                              (line  10)
+* suitable syntax checker:               Glossary.            (line  25)
+* syntax checker:                        Glossary.            (line   6)
+* tex-chktex; Emacs Lisp Flycheck syntax checker: TeX/LaTeX.  (line  11)
+* tex-lacheck; Emacs Lisp Flycheck syntax checker: TeX/LaTeX. (line  28)
+* texinfo; Emacs Lisp Flycheck syntax checker: Texinfo.       (line   6)
+* verilog-verilator; Emacs Lisp Flycheck syntax checker: Verilog.
+                                                              (line   6)
+* xml-xmllint; Emacs Lisp Flycheck syntax checker: XML.       (line  12)
+* xml-xmlstarlet; Emacs Lisp Flycheck syntax checker: XML.    (line   6)
+* yaml-jsyaml; Emacs Lisp Flycheck syntax checker: YAML.      (line   6)
+* yaml-ruby; Emacs Lisp Flycheck syntax checker: YAML.        (line  12)
+
diff --git a/elpa/flycheck-cask-readme.txt b/elpa/flycheck-cask-readme.txt
new file mode 100644 (file)
index 0000000..1fe73b3
--- /dev/null
@@ -0,0 +1,7 @@
+Add Cask support for Flycheck.
+
+Configure Flycheck to initialize packages from Cask in Cask projects.
+
+Setup
+
+(add-hook 'flycheck-mode-hook #'flycheck-cask-setup)
diff --git a/elpa/flycheck-readme.txt b/elpa/flycheck-readme.txt
new file mode 100644 (file)
index 0000000..c0da3eb
--- /dev/null
@@ -0,0 +1,8 @@
+Modern on-the-fly syntax checking for GNU Emacs.
+
+Provide `flycheck-mode' which enables on-the-fly syntax checking for a large
+number of different modes and languages (see `flycheck-checkers' for a
+complete list).
+
+Support for new modes and languages can be added by defining a new syntax
+checker (see `flycheck-define-checker').