]> git.bundesbrandschatzamt.de Git - emacsconfig.git/commitdiff
new version of flycheck.
authorAndreas Gerler <baronNOSPAMbundesbrandschatzamt.de>
Tue, 14 Jul 2015 20:58:47 +0000 (22:58 +0200)
committerAndreas Gerler <baronNOSPAMbundesbrandschatzamt.de>
Tue, 14 Jul 2015 20:58:47 +0000 (22:58 +0200)
16 files changed:
bba.org
elpa/flycheck-20150125.601/dir [deleted file]
elpa/flycheck-20150125.601/flycheck-autoloads.el [deleted file]
elpa/flycheck-20150125.601/flycheck-ert.el [deleted file]
elpa/flycheck-20150125.601/flycheck-pkg.el [deleted file]
elpa/flycheck-20150125.601/flycheck.el [deleted file]
elpa/flycheck-20150125.601/flycheck.info [deleted file]
elpa/flycheck-20150125.601/flycheck.info-1 [deleted file]
elpa/flycheck-20150125.601/flycheck.info-2 [deleted file]
elpa/flycheck-20150703.359/dir [new file with mode: 0644]
elpa/flycheck-20150703.359/fdl-1.3.info [new file with mode: 0644]
elpa/flycheck-20150703.359/flycheck-autoloads.el [new file with mode: 0644]
elpa/flycheck-20150703.359/flycheck-ert.el [new file with mode: 0644]
elpa/flycheck-20150703.359/flycheck-pkg.el [new file with mode: 0644]
elpa/flycheck-20150703.359/flycheck.el [new file with mode: 0644]
elpa/flycheck-20150703.359/flycheck.info [new file with mode: 0644]

diff --git a/bba.org b/bba.org
index b8bf9d19695cb0db21d3dbd73eebda759b518fd8..358be589dd40b79cdb1b6d1a81839bc115004f11 100644 (file)
--- a/bba.org
+++ b/bba.org
@@ -259,7 +259,7 @@ snippets. Some help for Perl and even for org-mode.
 #+BEGIN_SRC emacs-lisp
     (if (>= emacs-major-version 24)
         (progn
-          (add-to-list 'load-path "~/.emacs.d/elpa/flycheck-20150125.601")
+          (add-to-list 'load-path "~/.emacs.d/elpa/flycheck-20150703.359")
           (require 'flycheck)
           (add-hook 'after-init-hook #'global-flycheck-mode)
           ))
diff --git a/elpa/flycheck-20150125.601/dir b/elpa/flycheck-20150125.601/dir
deleted file mode 100644 (file)
index 1443f76..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-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
deleted file mode 100644 (file)
index dba1324..0000000
+++ /dev/null
@@ -1,227 +0,0 @@
-;;; 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
deleted file mode 100644 (file)
index 120fc6e..0000000
+++ /dev/null
@@ -1,469 +0,0 @@
-;;; 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
deleted file mode 100644 (file)
index 709a8f1..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-(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
deleted file mode 100644 (file)
index 12224f6..0000000
+++ /dev/null
@@ -1,7259 +0,0 @@
-;;; 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
deleted file mode 100644 (file)
index 8819b13..0000000
+++ /dev/null
@@ -1,2183 +0,0 @@
-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
deleted file mode 100644 (file)
index 568c1f6..0000000
+++ /dev/null
@@ -1,9340 +0,0 @@
-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
deleted file mode 100644 (file)
index 03cd9b4..0000000
+++ /dev/null
@@ -1,3771 +0,0 @@
-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-20150703.359/dir b/elpa/flycheck-20150703.359/dir
new file mode 100644 (file)
index 0000000..78c0b2c
--- /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).         Modern on-the-fly syntax checking
diff --git a/elpa/flycheck-20150703.359/fdl-1.3.info b/elpa/flycheck-20150703.359/fdl-1.3.info
new file mode 100644 (file)
index 0000000..d0fd1fb
--- /dev/null
@@ -0,0 +1,484 @@
+This is fdl-1.3.info, produced by makeinfo version 5.2 from
+fdl-1.3.texi.
+
+                     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
+Tag Table:
+\1f
+End Tag Table
diff --git a/elpa/flycheck-20150703.359/flycheck-autoloads.el b/elpa/flycheck-20150703.359/flycheck-autoloads.el
new file mode 100644 (file)
index 0000000..b3a75a6
--- /dev/null
@@ -0,0 +1,222 @@
+;;; flycheck-autoloads.el --- automatically extracted autoloads
+;;
+;;; Code:
+(add-to-list 'load-path (or (file-name-directory #$) (car load-path)))
+\f
+;;;### (autoloads nil "flycheck" "flycheck.el" (21910 48941 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") (21910
+;;;;;;  48941 793934 0))
+
+;;;***
+\f
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; End:
+;;; flycheck-autoloads.el ends here
diff --git a/elpa/flycheck-20150703.359/flycheck-ert.el b/elpa/flycheck-20150703.359/flycheck-ert.el
new file mode 100644 (file)
index 0000000..9d1b8c1
--- /dev/null
@@ -0,0 +1,470 @@
+;;; flycheck-ert.el --- Flycheck: ERT extensions  -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2013-2015 Sebastian Wiesner and Flycheck contributors
+
+;; Author: Sebastian Wiesner <swiesnerNOSPAMlunaryorn.com>
+;; Maintainer: 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 (if old-state 1 -1)))))
+
+(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-20150703.359/flycheck-pkg.el b/elpa/flycheck-20150703.359/flycheck-pkg.el
new file mode 100644 (file)
index 0000000..fb2c668
--- /dev/null
@@ -0,0 +1,11 @@
+(define-package "flycheck" "20150703.359" "On-the-fly syntax checking"
+  '((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-20150703.359/flycheck.el b/elpa/flycheck-20150703.359/flycheck.el
new file mode 100644 (file)
index 0000000..1809cfb
--- /dev/null
@@ -0,0 +1,7520 @@
+;;; flycheck.el --- On-the-fly syntax checking -*- lexical-binding: t; -*-
+
+;; Copyright (c) 2012-2015 Sebastian Wiesner and Flycheck contributors
+;; Copyright (C) 2013, 2014 Free Software Foundation, Inc.
+;;
+;; Author: Sebastian Wiesner <swiesnerNOSPAMlunaryorn.com>
+;; Maintainer: Sebastian Wiesner <swiesnerNOSPAMlunaryorn.com>
+;; URL: https://www.flycheck.org
+;; Keywords: convenience, languages, tools
+;; Version: 0.24-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:
+
+;; On-the-fly syntax checking for GNU Emacs 24.
+;;
+;; This package provides on-the-fly syntax checking for GNU Emacs 24.  It is a
+;; replacement for the older Flymake extension which is part of GNU Emacs, with
+;; many improvements and additional features.
+;;
+;; Flycheck provides fully-automatic, fail-safe, on-the-fly background syntax
+;; checking for over 30 programming and markup languages with more than 70
+;; different tools.  It highlights errors and warnings inline in the buffer, and
+;; provides an optional IDE-like error list.
+;;
+;; It comes with a rich interface for custom syntax checkers and other
+;; extensions, and has already many 3rd party extensions adding new features.
+;;
+;; # Setup
+;;
+;; Flycheck works best on Unix systems.  It does not officially support Windows,
+;; but tries to maintain Windows compatibility and should generally work fine on
+;; Windows, too.
+;;
+;; To enable Flycheck add the following to your init file:
+;;
+;;    (add-hook 'after-init-hook #'global-flycheck-mode)
+;;
+;; Flycheck will then automatically check buffers in supported languages, as
+;; long as all necessary tools are present.
+;;
+;; # Documentation
+;;
+;; Flycheck comes with a rich manual, which you can read in Emacs with `M-x
+;; flycheck-info' after installing this package.  It is also available online at
+;; URL `http://www.flycheck.org/manual/latest/index.html'.
+;;
+;; The manual has a Quickstart section which gives you a short and comprehensive
+;; introduction into Flycheck's features and usage, and a complete list of all
+;; supported languages and tools.
+
+;;; 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 "Website" "http://www.flycheck.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
+    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
+    javascript-jscs
+    javascript-standard
+    json-jsonlint
+    less
+    luacheck
+    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-lint
+    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 nil
+  "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 nil
+  "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"))
+
+;; Add built-in functions to our hooks, via `add-hook', to make sure that our
+;; functions are really present, even if the variable was implicitly defined by
+;; another call to `add-hook' that occurred before Flycheck was loaded.  See
+;; http://lists.gnu.org/archive/html/emacs-devel/2015-02/msg01271.html for why
+;; we don't initialize the hook variables right away.  We append our own
+;; functions, because a user likely expects that their functions come first,
+;; even if the added them before Flycheck was loaded.
+(dolist (hook (list #'flycheck-locate-config-file-absolute-path
+                    #'flycheck-locate-config-file-ancestor-directories
+                    #'flycheck-locate-config-file-home))
+  (add-hook 'flycheck-locate-config-file-functions hook 'append))
+
+(add-hook 'flycheck-process-error-functions #'flycheck-add-overlay 'append)
+
+\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."
+  (let ((file-a (expand-file-name file-a))
+        (file-b (expand-file-name file-b)))
+    ;; We must resolve symbolic links here, since some syntax checker always
+    ;; output canonical file names with all symbolic links resolved.  However,
+    ;; we still do a simple path compassion first, to avoid the comparatively
+    ;; expensive file system call if possible.  See
+    ;; https://github.com/flycheck/flycheck/issues/561
+    (or (string= (directory-file-name file-a) (directory-file-name file-b))
+        (string= (directory-file-name (file-truename file-a))
+                 (directory-file-name (file-truename 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)
+         (not (flycheck-disabled-checker-p checker))
+         (or (not modes) (memq major-mode modes))
+         (funcall predicate))))
+
+(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
+  :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-get-checker-for-buffer ()
+  "Find the checker for the current buffer.
+
+Use the selected checker for the current buffer, if any,
+otherwise search for the best checker from `flycheck-checkers'.
+
+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))
+    (let ((checkers flycheck-checkers))
+      (while (and checkers (not (flycheck-may-use-checker (car checkers))))
+        (setq checkers (cdr checkers)))
+      (car checkers))))
+
+(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-get-checker-for-buffer)))))
+  (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)
+    (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'."
+  (declare (interactive-only "Directly set `flycheck-disabled-checkers' instead"))
+  (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.
+      (when (memq checker flycheck-disabled-checkers)
+        (setq flycheck-disabled-checkers
+              (remq checker flycheck-disabled-checkers))
+        (flycheck-buffer))
+    (unless (memq checker flycheck-disabled-checkers)
+      (push checker flycheck-disabled-checkers)
+      (flycheck-buffer))))
+
+\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 ()
+  "Start checking syntax in the current buffer.
+
+Get a syntax checker for the current buffer with
+`flycheck-get-checker-for-buffer', and start it."
+  (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
+                  (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))
+
+\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)))
+       (file-exists-p default-directory)
+       (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
+  ;; Do not expose Global Flycheck Mode on customize interface, because the
+  ;; interaction between package.el and customize is currently broken.  See
+  ;; https://github.com/flycheck/flycheck/issues/595
+
+  ;; :require 'flycheck :group
+  ;; '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))
+            (id (flycheck-error-id err)))
+        (when message
+          (setq message (string-trim message))
+          (setf (flycheck-error-message err)
+                (if (string-empty-p message) nil message)))
+        (when (and id (string-empty-p id))
+          (setf (flycheck-error-id err) nil))
+        (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."
+  ;; This function runs from a timer, so we must take care to not ignore any
+  ;; errors
+  (with-demoted-errors "Flycheck error display error: %s"
+    (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."
+  (declare (interactive-only "Set the executable variable directly instead"))
+  (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)))
+
+\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)
+                     (`info 0))))
+    (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 (flycheck-get-checker-for-buffer)))
+     (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 gle 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-pedantic nil c/c++-clang
+  "Whether to warn about language extensions in Clang.
+
+For ISO C, follows the version specified by any -std option used.
+When non-nil, disable non-ISO extensions to C/C++ via
+`-pedantic'."
+  :type 'boolean
+  :safe #'booleanp
+  :package-version '(flycheck . "0.23"))
+
+(flycheck-def-option-var flycheck-clang-pedantic-errors nil c/c++-clang
+  "Whether to error on language extensions in Clang.
+
+For ISO C, follows the version specified by any -std option used.
+When non-nil, disable non-ISO extensions to C/C++ via
+`-pedantic-errors'."
+  :type 'boolean
+  :safe #'booleanp
+  :package-version '(flycheck . "0.23"))
+
+(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-flag "-pedantic" flycheck-clang-pedantic)
+            (option-flag "-pedantic-errors" flycheck-clang-pedantic-errors)
+            (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-pedantic nil c/c++-clang
+  "Whether to warn about language extensions in GCC.
+
+For ISO C, follows the version specified by any -std option used.
+When non-nil, disable non-ISO extensions to C/C++ via
+`-pedantic'."
+  :type 'boolean
+  :safe #'booleanp
+  :package-version '(flycheck . "0.23"))
+
+(flycheck-def-option-var flycheck-gcc-pedantic-errors nil c/c++-clang
+  "Whether to error on language extensions in GCC.
+
+For ISO C, follows the version specified by any -std option used.
+When non-nil, disable non-ISO extensions to C/C++ via
+`-pedantic-errors'."
+  :type 'boolean
+  :safe #'booleanp
+  :package-version '(flycheck . "0.23"))
+
+(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 "-pedantic" flycheck-gcc-pedantic)
+            (option-flag "-pedantic-errors" flycheck-gcc-pedantic-errors)
+            (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-def-option-var flycheck-foodcritic-tags nil chef-foodcritic
+  "A list of tags to select for Foodcritic.
+
+The value of this variable is a list of strings where each string
+is a tag expression describing Foodcritic rules to enable or
+disable, via the `--tags' option.  To disable a tag, prefix it
+with `~'."
+  :type '(repeat :tag "Tags" (string :tag "Tag expression"))
+  :safe #'flycheck-string-list-p
+  :package-version '(flycheck . "0.23"))
+
+(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"
+            (option-list "--tags" flycheck-foodcritic-tags)
+            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-def-args-var flycheck-dmd-args d-dmd
+  :package-version '(flycheck . "0.24"))
+
+(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)
+            (eval flycheck-dmd-args)
+            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)
+
+(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 `user-init-file' or 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)
+             (or (flycheck-in-user-emacs-directory-p (buffer-file-name))
+                 ;; `user-init-file' is nil in non-interactive sessions.  Now,
+                 ;; no user would possibly use Flycheck in a non-interactive
+                 ;; session, but our unit tests run non-interactively, so we
+                 ;; have to handle this case anyway
+                 (and user-init-file
+                      (flycheck-same-files-p (buffer-file-name)
+                                             user-init-file)))
+           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"
+          ;; If we have `checkdoc-file' (in Emacs 25) use it, otherwise fall
+          ;; back to printing the result buffer of checkdoc.
+          (if (fboundp 'checkdoc-file)
+              (checkdoc-file source)
+            (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-def-option-var flycheck-erlang-include-path nil erlang
+  "A list of include directories for Erlang.
+
+The value of this variable is a list of strings, where each
+string is a directory to add to the include path of erlc.
+Relative paths are relative to the file being checked."
+  :type '(repeat (directory :tag "Include directory"))
+  :safe #'flycheck-string-list-p
+  :package-version '(flycheck . "0.24"))
+
+(flycheck-define-checker erlang
+  "An Erlang syntax checker using the Erlang interpreter.
+
+See URL `http://www.erlang.org/'."
+  :command ("erlc"
+            "-o" temporary-directory
+            (option-list "-I" flycheck-erlang-include-path)
+            "-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 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 web-mode)
+  :predicate
+  (lambda ()
+    (if (eq major-mode 'web-mode)
+        ;; Check if this is a handlebars file since web-mode does not store the
+        ;; non-canonical engine name
+        (let* ((regexp-alist (bound-and-true-p web-mode-engine-file-regexps))
+               (pattern (cdr (assoc "handlebars" regexp-alist))))
+          (and pattern (buffer-file-name)
+               (string-match-p pattern (buffer-file-name))))
+      t)))
+
+(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)
+  :next-checkers ((warning . javascript-jscs)))
+
+(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 (flycheck-increment-error-columns errors)))
+                  errors)
+  :modes (js-mode js2-mode js3-mode)
+  :next-checkers ((warning . javascript-jscs)))
+
+(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)
+  :next-checkers ((warning . javascript-jscs)))
+
+(defun flycheck-parse-jscs (output checker buffer)
+  "Parse JSCS OUTPUT from CHECKER and BUFFER.
+
+Like `flycheck-parse-checkstyle', but catches errors about no
+configuration found and prevents to be reported as a suspicious
+error."
+  (if (string-match-p (rx string-start "No configuration found") output)
+      (let ((message "No JSCS configuration found.  Set `flycheck-jscsrc' for JSCS"))
+        (list (flycheck-error-new-at 1 nil 'warning message
+                                     :checker checker
+                                     :buffer buffer
+                                     :filename (buffer-file-name buffer))))
+    (flycheck-parse-checkstyle output checker buffer)))
+
+(flycheck-def-config-file-var flycheck-jscsrc javascript-jscs ".jscsrc"
+  :safe #'stringp
+  :package-version '(flycheck . "0.24"))
+
+(flycheck-define-checker javascript-jscs
+  "A Javascript style checker using JSCS.
+
+See URL `http://www.jscs.info'."
+  :command ("jscs" "--reporter=checkstyle"
+            (config-file "--config" flycheck-jscsrc)
+            source)
+  :error-parser flycheck-parse-jscs
+  :error-filter (lambda (errors)
+                  (flycheck-remove-error-ids
+                   (flycheck-sanitize-errors errors)))
+  :modes (js-mode js2-mode js3-mode))
+
+(flycheck-define-checker javascript-standard
+  "A Javascript code and style checker for the (Semi-)Standard Style.
+
+This checker works with `standard' and `semistandard', defaulting
+to the former.  To use it with the latter, set
+`flycheck-javascript-standard-executable' to `semistandard'.
+
+See URL `https://github.com/feross/standard' and URL
+`https://github.com/Flet/semistandard'."
+  :command ("standard" source)
+  :error-patterns
+  ((error line-start
+          "  " (file-name) ":" line ":" column ":" (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-def-config-file-var flycheck-luacheckrc luacheck ".luacheckrc"
+  :safe #'stringp
+  :package-version '(flycheck . "0.23"))
+
+(flycheck-define-checker luacheck
+  "A Lua syntax checker using luacheck.
+
+See URL `https://github.com/mpeterv/luacheck'."
+  :command ("luacheck"
+            (config-file "--config" flycheck-luacheckrc)
+            "--formatter" "plain"
+            "--codes"                   ; Show warning codes
+            "--no-color"
+            source)
+  :error-patterns
+  ((warning line-start (file-name)
+            ":" line ":" column ": (" (id (and "W" (one-or-more digit)))
+            ") " (message) line-end)
+   (error line-start (file-name)
+          ":" line ":" column ":" (message) line-end))
+  :modes lua-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-def-option-var flycheck-perl-include-path nil perl
+  "A list of include directories for Perl.
+
+The value of this variable is a list of strings, where each
+string is a directory to add to the include path of Perl.
+Relative paths are relative to the file being checked."
+  :type '(repeat (directory :tag "Include directory"))
+  :safe #'flycheck-string-list-p
+  :package-version '(flycheck . "0.24"))
+
+(flycheck-define-checker perl
+  "A Perl syntax checker using the Perl interpreter.
+
+See URL `http://www.perl.org'."
+  :command ("perl" "-w" "-c"
+            (option-list "-I" flycheck-perl-include-path)
+            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
+  (
+   ;; Patterns for Puppet 4
+   (error line-start "Error: Could not parse for environment "
+          (one-or-more word) ":"
+          (message) " at " (file-name) ":" line ":" column line-end)
+   (error line-start "Error: Could not parse for environment "
+          (one-or-more word) ":"
+          (message) " in file " (file-name) " at line " line ":" column
+          line-end)
+   ;; Errors from Puppet < 4
+   (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)
+   (error line-start "Sorry: IndentationError: "
+          (message) "(" (file-name) ", line " line ")"
+          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-args-var flycheck-rust-args rust
+  :package-version '(flycheck . "0.24"))
+
+(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 flycheck-rust-args)
+            (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: "
+          (or
+           ;; Multiline errors
+           (and (message (minimal-match (one-or-more anything)))
+                " [" (id "E" (one-or-more digit)) "]")
+           (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)))))
+
+(defconst flycheck-scss-lint-checkstyle-re
+  (rx "cannot load such file" (1+ not-newline) "scss_lint_reporter_checkstyle")
+  "Regular expression to parse missing checkstyle error.")
+
+(defun flycheck-parse-scss-lint (output checker buffer)
+  "Parse SCSS-Lint OUTPUT from CHECKER and BUFFER.
+
+Like `flycheck-parse-checkstyle', but catches errors about
+missing checkstyle reporter from SCSS-Lint."
+  (if (string-match-p flycheck-scss-lint-checkstyle-re output)
+      (list (flycheck-error-new-at
+             1 nil 'error "Checkstyle reporter for SCSS-Lint missing.
+Please run gem install scss_lint_reporter_checkstyle"
+             :checker checker
+             :buffer buffer
+             :filename (buffer-file-name buffer)))
+    (flycheck-parse-checkstyle output checker buffer)))
+
+(flycheck-def-config-file-var flycheck-scss-lintrc scss-lint ".scss-lint.yml"
+  :safe #'stringp
+  :package-version '(flycheck . "0.23"))
+
+(flycheck-define-checker scss-lint
+  "A SCSS syntax checker using SCSS-Lint.
+
+See URL `https://github.com/brigade/scss-lint'."
+  :command ("scss-lint"
+            "--require=scss_lint_reporter_checkstyle"
+            "--format=Checkstyle"
+            (config-file "--config" flycheck-scss-lintrc)
+            source)
+  ;; We cannot directly parse Checkstyle XML, since for some mysterious reason
+  ;; SCSS-Lint doesn't have a built-in Checkstyle reporter, and instead ships it
+  ;; as an addon which might not be installed.  We use a custom error parser to
+  ;; check whether the addon is missing and turn that into a special kind of
+  ;; Flycheck error.
+  :error-parser flycheck-parse-scss-lint
+  :modes scss-mode)
+
+(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)
+  "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-20150703.359/flycheck.info b/elpa/flycheck-20150703.359/flycheck.info
new file mode 100644 (file)
index 0000000..3cc82f2
--- /dev/null
@@ -0,0 +1,2893 @@
+This is flycheck.info, produced by makeinfo version 5.2 from
+flycheck.texi.
+
+Modern on-the-fly syntax checking for GNU Emacs 24.
+
+   Copyright © 2014–2015 Sebastian Wiesner
+
+     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”.
+
+     A copy of the license is also available from the Free Software
+     Foundation Web site at <http://www.gnu.org/licenses/fdl.html>.
+
+     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). Modern on-the-fly syntax checking
+END-INFO-DIR-ENTRY
+
+\1f
+File: flycheck.info,  Node: Top,  Next: Introduction,  Up: (dir)
+
+Flycheck
+********
+
+Modern on-the-fly syntax checking for GNU Emacs 24.
+
+   Copyright © 2014–2015 Sebastian Wiesner
+
+     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”.
+
+     A copy of the license is also available from the Free Software
+     Foundation Web site at <http://www.gnu.org/licenses/fdl.html>.
+
+     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>.
+
+   Flycheck is a modern GNU Emacs package that provides on-the-fly
+syntax checking for buffers.  It is intended as replacement for the
+older Flymake package which is built into Emacs.
+
+   *Note Introduction::, for more information about Flycheck.  For
+installations instructions and a quick tutorial, *note Installation::
+and *note Quickstart:: respectively.  *Note Usage::, for a detailed user
+guide.
+
+* Menu:
+
+* Introduction::                An introduction to Flycheck
+* Installation::                How to install Flycheck
+* Quickstart::                  A quick Flycheck tutorial
+* Usage::                       How to use Flycheck
+* Syntax checker definitions::  How to add new syntax checkers to Flycheck
+* Flycheck hooks::              How to hook into Flycheck
+* Flycheck API::                API documentation
+* Supported languages::         A list of supported languages
+* Issues::                      How to report issues in Flycheck
+* GNU Free Documentation License::  How to copy this manual
+* Main Index::                  Index of Flycheck concepts
+* Key Index::                   Index of all keybindings
+* Function and Variable Index::  Index of commands, options and types
+
+\1f
+File: flycheck.info,  Node: Introduction,  Next: Installation,  Prev: Top,  Up: Top
+
+1 Introduction
+**************
+
+Flycheck provides 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.
+
+   Flycheck runs various linting tools and services to automatically
+check the contents of buffers while you are typing, and reports warnings
+and errors directly in the buffer, in the mode line and in an optional
+error list.  You can navigate errors and warnings in the current buffer,
+show the corresponding messages, and copy errors to the kill ring.
+
+   • Over 40 languages with more than 70 checkers.  *Note Supported
+     languages::.
+   • Fully automatic, fail-safe, on-the-fly syntax checking in buffers
+   • In-buffer error highlighting, with fringe indicators
+   • Error navigation
+   • Auto-updating error list
+   • Many customisation options
+   • A comprehensive manual
+   • A simple API to add support for new languages and tools
+   • A “doesn’t get in your way guarantee”
+
+\1f
+File: flycheck.info,  Node: Installation,  Next: Quickstart,  Prev: Introduction,  Up: Top
+
+2 Installation
+**************
+
+2.1 Prerequisites
+=================
+
+Flycheck needs GNU Emacs 24.  Older releases of GNU Emacs or other
+flavours of Emacs (e.g.  XEmacs, Aquamacs, etc.)  are _not_ supported.
+
+   Flycheck works best on Unix-like operating systems.  It is
+extensively tested on Linux and OS X.
+
+   *Warning:* Flycheck tries to maintain compatibility with Windows as
+well, 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 issues or problems on
+Windows, _you are on your own_.  The Flycheck developers cannot answer
+questions about Windows, or fix Windows-specific issues.
+
+2.2 Syntax checking tools
+=========================
+
+Flycheck does _not_ check buffers itself.  It relies on _external_
+programs to check buffers, which need to be installed separately.  *Note
+Supported languages::, for a list of required programs for each language
+supported by Flycheck.
+
+   Most of these programs are available in the package repositories of
+Linux distributions, or with the standard package managers of specific
+programming languages (e.g.  Rubygems, NPM, Cabal, etc.)
+
+2.3 Installation
+================
+
+Install Flycheck via Emacs’ built-in package manager, from the MELPA
+Stable (http://stable.melpa.org) repository:
+
+     M-x package-install RET flycheck
+
+   Alternatively, you may use the MELPA (http://melpa.org) repository,
+which hosts the most recent development version.  Note that these
+repositories are not included in GNU Emacs by default.
+
+   You need to enable them explicitly, by adding the following to your
+init file:
+
+     (require 'package)
+     (add-to-list 'package-archives
+                  '("melpa" . "http://melpa.org/packages/") t)
+     (package-initialize)
+
+   *Warning:* Flycheck is available from Marmalade
+(https://marmalade-repo.org/), but due to frequent outages of this
+repository we recommend against it.
+
+2.4 Cask
+========
+
+If you use Cask (https://github.com/cask/cask) to manage your packages,
+add the following to your ‘Cask’ file:
+
+     (source gnu)
+     (source melpa-stable)
+
+     (depends-on "flycheck")
+
+\1f
+File: flycheck.info,  Node: Quickstart,  Next: Usage,  Prev: Installation,  Up: Top
+
+3 Quickstart
+************
+
+3.1 Install and enable Flycheck
+===============================
+
+To get started with Flycheck, enable it by adding the following to your
+init file:
+
+     (add-hook 'after-init-hook #'global-flycheck-mode)
+
+   If you don’t know where your init file is take a look at the value of
+the variable ‘user-init-file’ with ‘C-h v user-init-file’.
+
+3.2 Install syntax checker tools
+================================
+
+Next you need to install syntax checking tools for the major modes you
+are using.  For instance, for Python you may want to install Pylint
+(http://pylint.org):
+
+     $ pip install pylint
+
+   For Ruby, you might want to use Rubocop
+(https://github.com/bbatsov/rubocop) and ruby-lint
+(https://github.com/YorickPeterse/ruby-lint):
+
+     $ gem install rubocop ruby-lint
+
+   *Note Supported languages::, for a complete list of all languages
+that Flycheck supports.
+
+3.3 Check syntax in a buffer
+============================
+
+Now switch to a Python or Ruby Mode buffer and run ‘M-x
+flycheck-verify-setup’ to check whether Flycheck is correctly setup.
+
+   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’
+(‘flycheck-buffer’).
+
+3.4 Navigate and list errors
+============================
+
+Use ‘C-c ! n’ (‘flycheck-next-error’) and ‘C-c ! p’
+(‘flycheck-previous-error’) 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’ (‘flycheck-list-errors’) 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.
+
+3.5 More features
+=================
+
+All Flycheck commands are available in the Emacs menu at ‘Syntax
+checking’ in the ‘Tools’ menu.
+
+   The same menu is also available by clicking on the mode line lighter
+of Flycheck.
+
+\1f
+File: flycheck.info,  Node: Usage,  Next: Syntax checker definitions,  Prev: Quickstart,  Up: Top
+
+4 Usage
+*******
+
+This chapter explains the usage of Flycheck in-depth.
+
+   *Note:* All commands in this chapter are documented with their
+default key prefix ‘C-c !’.  You can customise this prefix with
+‘flycheck-keymap-prefix’, but remember your custom prefix while reading
+this chapter.
+
+* Menu:
+
+* Checking buffers::            How buffers are checked
+* Syntax checkers::             Tools used to check a buffer
+* Reporting results::           How results of checks are reported
+* Navigating errors::           How to navigate to Flycheck errors
+* Displaying errors::           How to display error messages
+* Killing errors::              How to put error messages into the kill ring
+* Listing errors::              How to show a list of all errors
+* Mode line display::           How to interpret Flycheck’s mode line
+* Configuring checkers::        How to configure syntax checkers
+
+\1f
+File: flycheck.info,  Node: Checking buffers,  Next: Syntax checkers,  Up: Usage
+
+4.1 Checking buffers
+====================
+
+The minor mode ‘flycheck-mode’ enables syntax checking in a single
+buffer.  ‘global-flycheck-mode’ automatically enables ‘flycheck-mode’
+all buffers whenever possible.  You can exclude specific major modes
+from ‘global-flycheck-mode’ with ‘flycheck-global-modes’.
+
+   *Note:* ‘global-flycheck-mode’ does not enable ‘flycheck-mode’ for
+remote or encrypted files.  The former is flaky and might be very slow,
+and the latter would leak confidential data to temporary directories.
+You may still check syntax in these buffers by manually enabling
+‘flycheck-mode’ with ‘M-x flycheck-mode’.  However, this is _not_
+recommended for said reasons.
+
+   Add the following code to your init file to enable syntax checking
+permanently:
+
+     (add-hook 'after-init-hook #'global-flycheck-mode)
+
+   When ‘flycheck-mode’ is enabled, Flycheck automatically checks a
+buffer whenever
+
+   • the buffer is saved,
+   • new lines are inserted,
+   • or a short time after you stopped to make changes to the buffer.
+
+   You can customise this behaviour by changing
+‘flycheck-check-syntax-automatically’:
+
+ -- User Option: flycheck-check-syntax-automatically
+     A list of events that trigger a new syntax check in the current
+     buffer:
+
+     ‘save’
+          Check the buffer immediately after it was saved.
+     ‘idle-change’
+          Check the buffer a short time after the last change to the
+          buffer.  The delay is customisable with
+          ‘flycheck-idle-change-delay’.
+     ‘new-line’
+          Check the buffer immediately after a new line was inserted.
+     ‘mode-enabled’
+          Check the buffer immediately after Flycheck Mode was enabled.
+
+     For instance, with the following code in your init file Flycheck
+     will only check the buffer when it is saved, but never while you
+     are making changes to the buffer:
+
+          (setq flycheck-check-syntax-automatically '(mode-enabled save))
+
+   In addition to automatic syntax checking you can always check the
+current buffer manually:
+
+‘C-c ! c’
+‘M-x flycheck-buffer’
+     Check syntax in the current buffer.
+
+*Note:* If syntax checking does not work, please check your setup:
+
+‘C-c ! v’
+‘M-x flycheck-verify-setup’
+     Popup a buffer with information about the Flycheck setup for the
+     current buffer.
+
+     Lists the syntax checkers available for the current buffer,
+     together with potential problems in their setup.
+
+   During syntax checks Flycheck creates temporary files to feed to
+contents of the current buffer to external programs.  You can change the
+prefix used for the names of these temporary files with
+‘flycheck-temp-prefix’.
+
+\1f
+File: flycheck.info,  Node: Syntax checkers,  Next: Reporting results,  Prev: Checking buffers,  Up: Usage
+
+4.2 Syntax checkers
+===================
+
+Flycheck does not check buffers by itself, but relies on external
+_syntax checkers_.  When checking a buffer Flycheck automatically
+selects the best syntax checker from ‘flycheck-checkers’:
+
+ -- User Option: flycheck-checkers
+     A list of all syntax checkers available for syntax checking.
+
+     A syntax checker in this list is a _registered_ syntax checker.
+
+   Flycheck may apply further syntax checkers to the current buffer, if
+the selected syntax checker _chains_ to other syntax checkers.  For
+instance, the ‘emacs-lisp’ syntax checker, which checks Emacs Lisp with
+Emacs’ byte compiler, _chains_ to the ‘emacs-lisp-checkdoc’ syntax
+checker, which checks Emacs Lisp for violations of documentation
+conventions, *note (elisp)Documentation Tips::.  In Emacs Lisp buffers,
+Flycheck will first use ‘emacs-lisp’, and then ‘emacs-lisp-checkdoc’.
+
+   Flycheck ignores chained checkers which are not contained in
+‘flycheck-checkers’.
+
+   Like everything else in GNU Emacs, syntax checkers have online
+documentation as well.  If you are interested what major modes a
+particular syntax checker in ‘flycheck-checkers’ supports, or what tool
+it uses, type <C-c ! ?>:
+
+‘C-c ! ?’
+‘M-x flycheck-describe-checker’
+     Prompt for a syntax checker and show its documentation.
+
+     The documentation includes the name of the program or service used
+     by the syntax checker, a list of major modes in which the checker
+     will be used, and a list of its options.
+
+   Instead of letting Flycheck select a syntax checker automatically you
+can also explicitly tell Flycheck which checker to use for the current
+buffer, by manually selecting a specific syntax checker:
+
+‘C-c ! s’
+‘M-x flycheck-select-checker’
+     Prompt for a syntax checker and select this syntax checker for the
+     current buffer.
+
+‘C-u C-c ! s’
+‘C-u M-x flycheck-select-checker’ Remove any manual
+     syntax checker selection for the current buffer, and let Flycheck
+     automatically select a syntax checker from ‘flycheck-checkers’
+     again.
+
+   You can also select a syntax checker via the variable
+‘flycheck-checker’.  In fact, ‘flycheck-select-checker’ just sets this
+variable accordingly:
+
+ -- Variable: flycheck-checker
+     A syntax checker to use for the current buffer.
+
+     If nil (the default), Flycheck will automatically select the best
+     checker from ‘flycheck-checkers’.
+
+     If set to a syntax checker, Flycheck will use this syntax checker
+     for the current buffer, and never automatically select any other.
+     Flycheck still runs chained checkers, though.
+
+     If the syntax checker selected by this variable does not work in
+     the current buffer, Flycheck signals an error.
+
+     You can set this variable locally.  For instance, if your Python
+     project mandates Flake8 (http://flake8.readthedocs.org/en/2.2.3/)
+     as a syntax checker, you can tell Flycheck to only use the
+     corresponding checker ‘python-flake8’ in Python files of your
+     project by setting ‘flycheck-checker’ as a directory-local variable
+     in the top-level directory of your project with ‘M-x
+     add-dir-local-variable RET python-mode RET flycheck-checker RET
+     python-flake8’.  *Note (emacs)Directory Variables::, for more
+     information about directory variables.
+
+   Occasionally you may want to disable specific syntax checkers
+completely, so that they can never be used at all, neither via automatic
+nor via manual selection:
+
+‘C-c ! x’
+‘M-x flycheck-disable-checker’
+     Prompt for a syntax checker to disable in the current buffer.
+
+‘C-u C-c ! x’
+‘C-u M-x flycheck-disable-checker’
+     Prompt for a syntax checker to re-enable in the current buffer.
+
+   This is particularly useful if you want to disable syntax checkers
+that are chained after others.  For instance, if you do not care for
+documentation conventions of Emacs Lisp you may not need for the
+‘emacs-lisp-checkdoc’ checker, so you can disable it for the current
+buffer with <M-x flycheck-disable-checker RET emacs-lisp-checkdoc>.
+
+   ‘flycheck-disable-checker’ acutally sets the buffer-local value of
+the ‘flycheck-disabled-checkers’ option:
+
+ -- User Option: flycheck-disabled-checkers
+     A list of disabled syntax checkers.  Flycheck will _never_ use
+     disabled syntax checkers to check a buffer.
+
+     You can customise this variable with <M-x customize-variable RET
+     flycheck-disabled-checkers> or set its default value in your init
+     file to permanently disable specific checkers.  For instance, to
+     permanently disable Clang for all C/C++ buffers:
+
+          (setq-default flycheck-disabled-checkers '(c/c++-clang))
+
+     You can also disable checkers via local variables.  For instance,
+     to disable ‘emacs-lisp-checkdoc’ for your entire project, add it to
+     ‘flycheck-disabled-checkers’ in the ‘.dir-locals.el’ file of your
+     project:
+
+          ((emacs-lisp-mode (flycheck-disabled-checkers emacs-lisp-checkdoc)))
+
+     *Note (emacs)Directory Variables::, for more information about
+     directory variables.
+
+   You can change the completion system used by the commands of this
+section with ‘flycheck-completion-system’.
+
+\1f
+File: flycheck.info,  Node: Reporting results,  Next: Navigating errors,  Prev: Syntax checkers,  Up: Usage
+
+4.3 Reporting results of syntax checking
+========================================
+
+When a syntax check in the current buffer has finished, Flycheck reports
+the results of the syntax checkers used by the check in the current
+buffer:
+
+   • It highlights errors and warnings reported by a syntax checking in
+     the buffer according to ‘flycheck-highlighting-mode’,
+   • and indicates these locations in the fringe according to
+     ‘flycheck-indication-mode’.
+
+ -- User Option: flycheck-highlighting-mode
+     How Flycheck highlights errors and warnings in the buffer:
+
+     ‘columns’
+          Highlight the column of the error, if the error has a column,
+          otherwise behave as ‘lines’.
+     ‘symbols’
+          Highlight the symbol at the error column, if any, otherwise
+          behave like ‘columns’.  This is default
+     ‘sexps’
+          Highlight the expression at the error column, if any,
+          otherwise behave like ‘columns’.  *Warning:* ‘sexps’ can be
+          _very_ slow in some major modes, notably the built-in
+          ‘python-mode’.
+     ‘nil’
+          Do not highlight errors at all.
+
+     Flycheck uses the ‘flycheck-error’, ‘flycheck-warning’ and
+     ‘flycheck-info’ faces to highlight errors, warnings and info
+     messages respectively.
+
+ -- User Option: flycheck-indication-mode
+     How Flycheck indicates errors and warnings:
+
+     ‘left-fringe’
+     ‘right-fringe’
+          Indicate errors in the left or right fringe respectively.
+          *Note (emacs)Fringes::, for more information about fringes.
+
+          Flycheck uses the ‘flycheck-fringe-error’,
+          ‘flycheck-fringe-warning’, and ‘flycheck-fringe-info’ faces
+          for the indicators for the corresponding error levels.
+     ‘nil’
+          Do not indicate errors and warnings.
+
+   To avoid flooding a buffer with excessive reports, Flycheck discards
+any reports and _disables_ the corresponding syntax checker
+subsequently, if the total number of reported errors of any level
+exceeds the value of ‘flycheck-checker-error-threshold’.
+
+   You can explicitly clear with the ‘flycheck-clear’ command.
+
+\1f
+File: flycheck.info,  Node: Navigating errors,  Next: Displaying errors,  Prev: Reporting results,  Up: Usage
+
+4.4 Navigating 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.
+*Note (emacs)Compilation Mode::, for more information about these
+commands.  You can disable this integration by setting
+‘flycheck-standard-error-navigation’ to nil, and re-enabling
+‘flycheck-mode’ afterwards.
+
+   *Note:* With standard error navigation _visible_ compilation buffers
+(e.g.  from M-x compile, M-x grep, M-x occur, etc.)  take precedence
+over Flycheck errors.
+
+   Flycheck provides an independent set of navigation commands which
+will always navigate Flycheck errors in the current buffer, regardless
+of visible compilation buffers and ‘flycheck-standard-error-navigation’:
+
+‘C-c ! n’
+‘M-x flycheck-next-error’
+     Jump to the next 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.  With negative prefix argument, move
+     to previous errors instead.  Signal an error, if there are no more
+     Flycheck errors.
+
+‘C-c ! p’
+‘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
+     error before the current point.  With negative prefix argument,
+     move to next errors instead.  Signal an error, if there are no more
+     Flycheck errors.
+
+‘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.  With negative prefix argument, move to the last error
+     instead.
+
+   By default, these commands consider all errors in the current buffer.
+With ‘flycheck-navigation-minimum-level’ you can restrict them to errors
+above certain levels:
+
+ -- User Option: flycheck-navigation-minimum-level
+     The minimum levels of errors to consider for navigation.
+
+     If set to an error level, only navigate to errors whose level is as
+     least as severe as this one.  If nil, navigate to all errors.
+
+\1f
+File: flycheck.info,  Node: Displaying errors,  Next: Killing errors,  Prev: Navigating errors,  Up: Usage
+
+4.5 Displaying errors
+=====================
+
+If the point is on a Flycheck error, Flycheck will display the message
+and ID of the error at point in the echo area after a short delay.
+
+ -- User Option: flycheck-display-errors-delay
+     The number of seconds to wait before displaying the error at point.
+     Floating point numbers can express fractions of seconds.
+
+   You can set ‘flycheck-display-errors-function’ to change how Flycheck
+displays error, and what information it displays:
+
+ -- User Option: flycheck-display-errors-function
+     A function to display errors.  The function is called with a list
+     of Flycheck error objects to display.  *Note Errors::, for more
+     information about these objects.
+
+   Flycheck provides some built-in display functions:
+
+ -- Function: flycheck-display-error-messages
+     Show error messages and IDs in the echo area.
+
+ -- Function: flycheck-display-error-messages-unless-error-list
+     Like ‘flycheck-display-error-messages’, but does not show anything
+     if the error list is visible.  *Note Listing errors::, for more
+     information about the error list.
+
+   The flycheck-pos-tip (https://github.com/flycheck/flycheck-pos-tip)
+extension provides an alternative display function, which shows error
+messages in a graphical popup.
+
+\1f
+File: flycheck.info,  Node: Killing errors,  Next: Listing errors,  Prev: Displaying errors,  Up: Usage
+
+4.6 Killing errors
+==================
+
+You can also put error messages into the kill ring:
+
+‘C-c ! C-w’
+‘M-x flycheck-copy-errors-as-kill’
+     Copy all Flycheck error messages at point into the kill ring.
+
+     Each error message is killed _separately_, so ‘C-y’ (‘yank’) only
+     yanks a single error message.  You can use ‘M-y’ (‘yank-pop’) to
+     cycle between the killed messages after yanking the first one.
+
+‘C-u C-c ! C-w’
+‘C-u M-x flycheck-copy-errors-as-kill’
+     Copy all Flycheck error messages at point, including their IDs.
+
+‘M-0 C-c ! C-w’
+‘M-0 M-x flycheck-copy-errors-as-kill’
+     Copy the IDs of the errors at point.
+
+\1f
+File: flycheck.info,  Node: Listing errors,  Next: Mode line display,  Prev: Killing errors,  Up: Usage
+
+4.7 Listing errors
+==================
+
+To get an overview of all errors in the current buffer you can popup an
+error list:
+
+‘C-c ! l’
+‘M-x flycheck-list-errors’
+‘M-x list-flycheck-errors’
+     List all errors in the current buffer.
+
+     The error list automatically refreshes itself after a syntax check.
+     It also follows the current buffer and window, and automatically
+     updates to show the errors of the new buffer if you switch to
+     another buffer or window.  After each refresh the hook
+     ‘flycheck-error-list-after-refresh-hook’.
+
+   In the error list window the following keybindings are available:
+
+‘n’
+     Move to the next error.
+‘p’
+     Move to the previous error.
+‘q’
+     Hide the error list window.
+‘RET’
+     Jump to the location of the error at point.
+‘g’
+     Refresh the error list, by triggering a new syntax check in the
+     associated buffer.
+‘S’
+     Sort the error list by the column at point.  Press repeatedly to
+     inverse the sorting order.
+
+     For instance, you can sort errors by their level by moving the
+     point onto the text of the ‘Level’ column, and then pressing ‘S’.
+     You can achieve the same effect by clicking on the column header.
+
+   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 the ‘flycheck-error-list-highlight’ face.
+
+\1f
+File: flycheck.info,  Node: Mode line display,  Next: Configuring checkers,  Prev: Listing errors,  Up: Usage
+
+4.8 Mode line display
+=====================
+
+Flycheck always indicates its current state in the mode line, with one
+of the following strings:
+
+‘FlyC’
+     There are no errors in the current buffer.
+‘FlyC*’
+     Flycheck currently checks the current buffer.
+‘FlyC:3/5’
+     There are three errors and five warnings in the current buffer.
+‘FlyC-’
+     Flycheck did not find any syntax checker for the current buffer.
+     Try ‘C-c ! v’ (‘flycheck-verify-setup’) to find out why.
+‘FlyC!’
+     The syntax check failed.  Inspect the ‘*Messages*’ buffer for more
+     information about the failure.
+‘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* appear for built-in syntax checkers.
+If it does, please consider reporting an issue to the Flycheck
+developers.  *Note Issues::, for more information.
+
+   The 3rd party extension flycheck-color-mode-line
+(https://github.com/flycheck/flycheck-color-mode-line) automatically
+changes the background colour of the mode line according to the results
+of the last syntax check.
+
+\1f
+File: flycheck.info,  Node: Configuring checkers,  Prev: Mode line display,  Up: Usage
+
+4.9 Configuring syntax checkers
+===============================
+
+Flycheck provides a rich interface to configure syntax checkers.  There
+are three different kinds of options for syntax checkers:
+
+   • _Syntax checker options_ which directly change specific settings of
+     syntax checkers,
+   • _syntax checker configuration files_ which point syntax checkers to
+     configuration files which can comprehensively configure a syntax
+     checker, and
+   • _syntax checker executables_ which change the executables that
+     Flycheck runs for syntax checkers.
+
+4.9.1 Syntax checker options
+----------------------------
+
+Man syntax checkers can be configured via individual options.  For
+instance, the ‘flycheck-flake8-maximum-line-length’ tells the
+‘python-flake8’ syntax checker about the maximum number of characters
+allowed on a line.  Use the command ‘flycheck-describe-checker’ to see
+what options a syntax checker provides.  Type ‘M-x customize-group RET
+flycheck-options’ to get a list of all available options.
+
+   Options are mainly intended to be set per file or per project via
+file or directory variables.  *Note (emacs)File Variables::, and *note
+(emacs)Directory Variables:: respectively, for more information.
+
+   For instance, if you the following file variables section at the end
+of a Python file, the ‘python-flake8’ syntax checker will warn about
+lines longer than 100 characters, rather than the default limit of 80
+characters:
+
+     # Local Variables:
+     # flycheck-flake8-maximum-line-length: 100
+     # End:
+
+4.9.2 Syntax checker configuration files
+----------------------------------------
+
+Some syntax checkers also read configuration files.  These syntax
+checkers have an associated _configuration file variable_ which
+specifies the path to the configuration file.  All configuration file
+variables are customisable via ‘M-x customize-group RET
+flycheck-config-files’.
+
+   If the value of a configuration file variable is nil, Flycheck will
+not use any configuration file for the corresponding syntax checker.  If
+it is a string, however, Flycheck tries to locate an appropriate
+configuration file, with the following procedure:
+
+  1. If the value contains a directory separator, expand the path
+     against the ‘default-directory’ of the current buffer.
+  2. If the buffer has a file name, search the buffer’s directory and
+     any ancestor directories up to the root directory for the
+     configuration file.
+  3. Eventually try to find the configuration file in the user’s home
+     directory.
+
+   If any of these steps returns an existing file, this file is given to
+the syntax checker.  For instance, assume you edit the file
+‘foo/bar/hello.py’ in the following project layout:
+
+     .
+     ├── .pylintrc
+     ├── README.rst
+     ├── foo
+     │   ├── __init__.py
+     │   └── bar
+     │       ├── __init__.py
+     │       └── hello.py
+     └── setup.py
+
+   When using the ‘python-pylint’ syntax checker, Flycheck would find
+the file ‘.pylintrc’ and pass it to ‘pylint’.  This file could then
+contain project-wide style settings for your Python code.
+
+   You can change the default procedure for locating configuration files
+by adding or replacing functions in
+‘flycheck-locate-config-file-functions’:
+
+ -- User Option: flycheck-locate-config-file-functions
+     Functions to locate configuration files.
+
+     Each function accepts two arguments VALUE and CHECKER.  VALUE is
+     the value of the configuration file variable, and CHECKER is the
+     syntax checker to locate a configuration file for.  The function
+     shall either return a string with the absolute path to an existing
+     configuration file, or nil if it could not locate the file.
+
+     Flycheck calls the functions in order of appearance, until the
+     first function returns nil.  If all functions return nil, no
+     configuration file is given to the syntax checker.
+
+   *Note:* The formats of configuration files are specific to each
+syntax checker.  Please consult the documentation of the corresponding
+checker tool for information about the configuration file format
+understood by the tool.
+
+   Like syntax checker options (*note Syntax checker options::) you can
+set these variables with file or directory variables.  *Note (emacs)File
+Variables::, and *note (emacs)Directory Variables:: respectively, for
+more information.
+
+4.9.3 Syntax checker executables
+--------------------------------
+
+Occasionally, you need to point Flycheck to a different executable when
+running a syntax checker.  For instance, you might want to use ‘gcc-4.9’
+to check your C code, or use ‘pylint’ from a specific virtualenv.
+
+   For these situations, each syntax checker has a buffer-local,
+customizable variable named ‘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.
+
+   You can either set these variables directly in your init file, or
+change them interactively:
+
+‘C-c ! e’
+‘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.
+‘C-u C-c ! e’
+‘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 definitions,  Next: Flycheck hooks,  Prev: Usage,  Up: Top
+
+5 Syntax checker definitions
+****************************
+
+This chapter explains how to add new syntax checkers and how to extend
+built-in syntax checkers, by example.  *Note Flycheck API::, for a
+detailed reference on the involved types, functions and macros.
+
+   If you define a new syntax checker or have an extension to a built-in
+syntax checker, please report it to Flycheck (*note Issues::), so that
+we can consider it for inclusion to make it available to all other users
+of Flycheck.
+
+* Menu:
+
+* Defining syntax checkers::    How to define new syntax checkers
+* Finding error patterns::      How to find error patterns for a checker
+* Trying new checkers::         How to try a new syntax checker
+* Registering new checkers::    How to register for automatic selection
+* Parsing structured output::   How to parse structured output like XML
+* Passing configuration to checkers::  How to make syntax checkers configurable
+* Controlling use of checkers:: How to control when checkers are used
+* Applying multiple checkers::  How to use more than one checker per buffer
+
+\1f
+File: flycheck.info,  Node: Defining syntax checkers,  Next: Finding error patterns,  Up: Syntax checker definitions
+
+5.1 Defining syntax checkers
+============================
+
+Flycheck provides the macro ‘flycheck-define-checker’ to define a new
+syntax checker.  The following example defines a simple syntax checker
+for the popular Pylint (http://www.pylint.org/) 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 ‘flycheck-define-checker’ 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 ‘flycheck-describe-checker’ at ‘C-c ! ?’, e.g.  ‘C-c ! ?
+python-pylint’.
+
+   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.
+
+     Refer to the function ‘flycheck-substitute-argument’ for a complete
+     list of all special symbols.
+
+   • 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.
+     ‘flycheck-define-error-level’ lets you 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.
+
+     Refer to the function ‘flycheck-rx-to-string’ for a complete list
+     of supported forms.
+
+   • The ‘:modes’ property denotes the major modes, in which Flycheck
+     may use this syntax checker.  ‘pylint’ checks Javascript, so the
+     ‘:modes’ of our example specify ‘python-mode’.
+
+\1f
+File: flycheck.info,  Node: Finding error patterns,  Next: Trying new checkers,  Prev: Defining syntax checkers,  Up: Syntax checker definitions
+
+5.2 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
+‘flycheck-compile’.
+
+‘C-c ! C-c’
+‘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.  *Note Parsing structured output::, for more information.
+
+\1f
+File: flycheck.info,  Node: Trying new checkers,  Next: Registering new checkers,  Prev: Finding error patterns,  Up: Syntax checker definitions
+
+5.3 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’
+or ‘M-x flycheck-select-checker’.  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 checkers,  Next: Parsing structured output,  Prev: Trying new checkers,  Up: Syntax checker definitions
+
+5.4 Registering new syntax checkers
+===================================
+
+To register a new syntax checker for automatic syntax checking, just add
+it to ‘flycheck-checkers’:
+
+     (add-to-list 'flycheck-checkers 'python-pylint)
+
+   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 ‘flycheck-checker’ and ‘flycheck-select-checker’
+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 ‘flycheck-checker’ or by
+calling ‘flycheck-select-checker’.  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 ‘flycheck-checkers’ 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: Parsing structured output,  Next: Passing configuration to checkers,  Prev: Registering new checkers,  Up: Syntax checker definitions
+
+5.5 Parsing structured output
+=============================
+
+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
+(http://www.jshint.com/) 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 ‘flycheck-parse-checkstyle’ 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.  *Note Error parsers::, for more
+information about error parsers.
+
+\1f
+File: flycheck.info,  Node: Passing configuration to checkers,  Next: Controlling use of checkers,  Prev: Parsing structured output,  Up: Syntax checker definitions
+
+5.6 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 (bbatsov/rubocop) 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.  *Note Argument Substitution::, for a list of
+all special arguments.
+
+   Flycheck also provides a convenience macro ‘flycheck-def-option-var’
+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.  *Note Syntax
+checker options::, for more information about syntax checker
+configuration, and *note Checker configuration::, for the corresponding
+API reference.
+
+   By a similar mechanism you can also pass paths to configuration files
+to a syntax checker tool.  The aforementioned Pylint
+(http://www.pylint.org/) 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.  *Note Syntax checker configuration files::, for
+more information about syntax checker configuration, and *note Checker
+configuration::, for the corresponding API reference.
+
+\1f
+File: flycheck.info,  Node: Controlling use of checkers,  Next: Applying multiple checkers,  Prev: Passing configuration to checkers,  Up: Syntax checker definitions
+
+5.7 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 multiple checkers,  Prev: Controlling use of checkers,  Up: Syntax checker definitions
+
+5.8 Applying multiple syntax checkers
+=====================================
+
+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
+(koalaman/shellcheck/) 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 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 ‘flycheck-add-next-checker’:
+
+     (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 ‘flycheck-checkers’, so we need to register our new syntax checker
+(*note Registering new checkers::):
+
+     (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’.  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
+‘flycheck-define-checker’ with the ‘:next-checkers’ property.  Instead
+of calling ‘flycheck-add-next-checker’, 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)))
+
+   If you control the definition of both syntax checkers, this style is
+_preferable_ to ‘flycheck-add-next-checker’.  Use the latter only if you
+cannot change the definition of the prior syntax checker.
+
+\1f
+File: flycheck.info,  Node: Flycheck hooks,  Next: Flycheck API,  Prev: Syntax checker definitions,  Up: Top
+
+6 Flycheck hooks
+****************
+
+This chapter gives you a brief overview over Flycheck’s rich hook
+interface, which you can use for your own extensions.
+
+6.1 Status changes
+==================
+
+‘flycheck-before-syntax-check-hook’ 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
+(https://github.com/flycheck/flycheck-color-mode-line) uses these hooks
+to colour your mode-line according to the result of the last syntax
+check.  Additionally, ‘flycheck-status-changed-functions’ runs on every
+single status change of Flycheck, and provides a fine-grained reporting
+about what Flycheck is currently doing.
+
+6.2 Error processing
+====================
+
+The functions in ‘flycheck-process-error-functions’ 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
+‘flycheck-add-overlay’ is responsible for adding error highlighting to
+the buffer.  As a consequence, you can _entirely opt out_ from
+highlighting with a custom hook.
+
+6.3 Error display
+=================
+
+The function ‘flycheck-display-errors-function’ is called to display an
+error at point.  The flycheck-pos-tip
+(https://github.com/flycheck/flycheck-pos-tip) extension uses this hook
+to show errors in a GUI popup like conventional IDEs do.
+
+\1f
+File: flycheck.info,  Node: Flycheck API,  Next: Supported languages,  Prev: Flycheck hooks,  Up: Top
+
+7 Flycheck API
+**************
+
+TODO: The API documentation still needs to be written.
+
+* Menu:
+
+* Command syntax checkers::     Syntax checkers with external commands
+* Errors::                      Error representation in Flycheck
+
+\1f
+File: flycheck.info,  Node: Command syntax checkers,  Next: Errors,  Up: Flycheck API
+
+7.1 Command syntax checkers
+===========================
+
+* Menu:
+
+* Argument Substitution::       Argument substitution in syntax checker commands
+* Checker configuration::       Configuration for command checkers
+* Error parsers::               Parsing structured output formats
+
+\1f
+File: flycheck.info,  Node: Argument Substitution,  Next: Checker configuration,  Up: Command syntax checkers
+
+7.1.1 Argument substitution
+---------------------------
+
+\1f
+File: flycheck.info,  Node: Checker configuration,  Next: Error parsers,  Prev: Argument Substitution,  Up: Command syntax checkers
+
+7.1.2 Configuration options and files
+-------------------------------------
+
+\1f
+File: flycheck.info,  Node: Error parsers,  Prev: Checker configuration,  Up: Command syntax checkers
+
+7.1.3 Error parsers
+-------------------
+
+\1f
+File: flycheck.info,  Node: Errors,  Prev: Command syntax checkers,  Up: Flycheck API
+
+7.2 Errors
+==========
+
+\1f
+File: flycheck.info,  Node: Supported languages,  Next: Issues,  Prev: Flycheck API,  Up: Top
+
+Appendix A Supported languages
+******************************
+
+This chapter lists the languages supported by Flycheck.  Some 3rd party
+extensions add support for more languages:
+
+   • flycheck-ledger (https://github.com/flycheck-ledger) adds a syntax
+     checker for files of the Ledger (http://ledger-cli.org/) accounting
+     tool.
+   • flycheck-mercury (https://github.com/flycheck/flycheck-mercury)
+     adds a syntax checker for the Mercury (http://mercurylang.org/)
+     programming language.
+   • flycheck-ocaml (https://github.com/flycheck/flycheck-ocaml) adds a
+     syntax checker for the OCaml programming language, using the Merlin
+     (https://github.com/the-lambda-church/merlin) tool.
+
+   Each language has one or more syntax checkers, whose names follow a
+convention of ‘LANGUAGE-TOOL’ where LANGUAGE is the programming language
+checked by the checker, and TOOL the name of the checker tool.
+
+   The syntax checkers are listed in the order they are applied to a
+buffer.  Use ‘C-c ! ?’ (‘flycheck-describe-checker’) to obtain more
+information about a syntax checker.
+
+Ada
+===
+
+   • ‘ada-gnat’ (GNAT (https://gcc.gnu.org/onlinedocs/gnat_ugn_unw/)),
+     with the following options:
+
+     ‘flycheck-gnat-args’
+          A list of additional arguments to GNAT.
+     ‘flycheck-gnat-include-path’
+          A list of include directories for GNAT. Relative paths are
+          relative to the file being checked.
+     ‘flycheck-gnat-language-standard’
+          The language standard to use in GNAT, as string.
+     ‘flycheck-gnat-warnings’
+          A list of additional warnings to enable in GNAT. Each item is
+          the name of a warning category to enable.
+
+AsciiDoc
+========
+
+   • ‘asciidoc’ (AsciiDoc (http://www.methods.co.nz/asciidoc))
+
+C/C++
+=====
+
+  1. ‘c/c++-clang’ (syntax and type check with Clang
+     (http://clang.llvm.org/)) or ‘c/c++-gcc’ (syntax and type check
+     with GCC (https://gcc.gnu.org/)), and
+  2. ‘c/c++-cppcheck’ (style and error check with cppcheck
+     (http://cppcheck.sourceforge.net/)).
+
+   ‘c/c++-clang’ and ‘c/c++-gcc’ provide the following options:
+
+‘flycheck-clang-args’
+‘flycheck-gcc-args’
+     A list of additional arguments for Clang/GCC.
+‘flycheck-clang-blocks’
+     Whether to enable blocks in Clang.
+‘flycheck-clang-definitions’
+‘flycheck-gcc-definitions’
+     A list of additional preprocessor definitions for Clang/GCC.
+‘flycheck-clang-include-path’
+‘flycheck-gcc-include-path’
+     A list of include directories for Clang/GCC, relative to the file
+     being checked.
+‘flycheck-clang-includes’
+‘flycheck-gcc-includes’
+     A list of additional include files for Clang/GCC, relative to the
+     file being checked.
+‘flycheck-clang-language-standard’
+‘flycheck-gcc-language-standard’
+     The language standard to use in Clang/GCC, as string, via the
+     ‘-std’ option.
+‘flycheck-clang-ms-extensions’
+     Whether to enable Microsoft extensions to C/C++ in Clang.
+‘flycheck-clang-no-exceptions’
+‘flycheck-gcc-no-exceptions’
+     Whether to disable exceptions in Clang/GCC.
+‘flycheck-clang-no-rtti’
+‘flycheck-gcc-no-rtti’
+     Whether to disable RTTI in Clang/GCC, via ‘-fno-rtti’.
+‘flycheck-clang-standard-library’
+     The name of the standard library to use for Clang, as string.
+‘flycheck-gcc-openmp’
+     Whether to enable OpenMP in GCC.
+‘flycheck-clang-pedantic’
+‘flycheck-gcc-pedantic’
+     Whether to warn about language extensions in Clang/GCC.
+‘flycheck-clang-pedantic-errors’
+‘flycheck-gcc-pedantic-errors’
+     Whether to error on language extensions in Clang/GCC.
+‘flycheck-clang-warnings’
+‘flycheck-gcc-warnings’
+     A list of additional warnings to enable in Clang.  Each item is the
+     name of a warning or warning category for ‘-W’.
+
+‘c/c++-cppcheck’ provides the following options:
+
+‘flycheck-cppcheck-checks’
+     A list of enabled checks for cppcheck.  Each item is the name of a
+     check for the ‘--enable’ option.
+‘flycheck-cppcheck-inconclusive’
+     Whether to enable inconclusive checks in cppcheck.  These checks
+     may yield more false positives than normal checks.
+
+CFEngine
+========
+
+   • ‘cfengine’ (CFEngine (http://cfengine.com/))
+
+Chef
+====
+
+   • ‘chef-foodcritic’ (style check with foodcritic
+     (http://acrmp.github.io/foodcritic/)), with the following option:
+
+     ‘flycheck-foodcritic-tags’
+          A list of tags to select for Foodcritic.
+
+Coffeescript
+============
+
+  1. ‘coffee’ (syntax check with coffee (http://coffeescript.org/))
+  2. ‘coffee-coffeelint’ (code style check with coffeelint
+     (http://www.coffeelint.org/)), with the following option:
+
+     ‘flycheck-coffeelintrc’
+          Configuration file for coffeelint.  *Note Syntax checker
+          configuration files::, for more information about
+          configuration files.
+
+Coq
+===
+
+   • ‘coq’ (Coq (http://coq.inria.fr/))
+
+CSS
+===
+
+   • ‘css-csslint’ (style and error check with CSSLint
+     (https://github.com/CSSLint/csslint))
+
+D
+=
+
+   • ‘d-dmd’ (DMD (http://dlang.org/)), with the following options:
+
+     ‘flycheck-dmd-include-path’
+          A list of include directories for DMD.
+     ‘flycheck-dmd-args’
+          A list of additional arguments for DMD.
+
+     The extension flycheck-d-unittest
+     (https://github.com/flycheck/flycheck-d-unittest) adds a syntax
+     checker which runs D unittests on the fly and reports the results.
+
+Emacs Lisp
+==========
+
+  1. ‘emacs-lisp’ (syntax check with the built-in Emacs byte compiler)
+  2. ‘emacs-lisp-checkdoc’ (code and documentation check with
+     ‘checkdoc’)
+
+     The extension flycheck-package
+     (https://github.com/purcell/flycheck-package) adds a syntax checker
+     which checks for violations of Emacs Lisp packaging conventions.
+
+   The ‘emacs-lisp’ checker provides the following options
+
+‘flycheck-emacs-lisp-load-path’
+     The load path to use while checking Emacs Lisp files, as list of
+     strings.  Relative directories are expanded against the
+     ‘default-directory’ of the buffer being checked.
+
+‘flycheck-emacs-lisp-initialize-packages’
+     Whether to initialize Emacs’ package manager with
+     ‘package-initialize’ before checking the buffer.  If set to ‘auto’
+     (the default), only initialize the package managers for files in
+     under ‘user-emacs-directory’.
+
+‘flycheck-emacs-lisp-package-user-dir’
+     The package directory for the Emacs Lisp checker, as string.  Has
+     no effect if ‘flycheck-emacs-lisp-initialize-packages’ is nil.
+
+Erlang
+======
+
+   • ‘erlang’ (Erlang (http://www.erlang.org/))
+
+     ‘flycheck-erlang-include-path’
+          A list of include directories for Erlang.
+
+ERuby
+=====
+
+   • ‘eruby-erubis’ (‘erubis’ (http://www.kuwata-lab.com/erubis/))
+
+Fortran
+=======
+
+  1. ‘fortran-gfortran’ (GFortran
+     (https://gcc.gnu.org/onlinedocs/gfortran/)), with the following
+     options:
+
+     ‘flycheck-gfortran-args’
+          A list of additional arguments to GFortran.
+
+     ‘flycheck-gfortran-include-path’
+          A list of include directories for GFortran.  Relative paths
+          are relative to the file being checked.
+
+     ‘flycheck-gfortran-language-standard’
+          The language standard to use with GFortran, for the ‘-std’
+          option.
+
+     ‘flycheck-gfortran-layout’
+          The source code layout to use with GFortran.  Set to ‘free’ or
+          ‘fixed’ for free or fixed layout respectively, or nil (the
+          default) to let GFortran automatically determine the layout.
+
+     ‘flycheck-gfortran-warnings’
+          A list of warnings enabled for GFortran, via the ‘-W’ option.
+
+Go
+==
+
+  1. ‘go-gofmt’ (syntax check with gofmt (http://golang.org/cmd/gofmt/))
+  2. ‘go-golint’ (coding style with Golint
+     (https://github.com/golang/lint))
+  3. ‘go-vet’ (check for suspicious code with ‘go tool vet’
+     (http://godoc.org/golang.org/x/tools/cmd/vet))
+  4. ‘go-build’ or ‘go-test’ (syntax and type check with Go
+     (http://golang.org/cmd/go), for source and tests respectively)
+  5. ‘go-errcheck’ (check for unhandled error returns with errcheck
+     (https://github.com/kisielk/errcheck))
+
+   ‘go-vet’ provides the following option:
+
+‘flycheck-go-vet-print-functions’
+     A list of print-like functions for go vet.  Go vet will check these
+     functions for format string problems.
+
+Haml
+====
+
+   • ‘haml’ (Haml (http://haml.info/))
+
+Handlebars
+==========
+
+   • ‘handlebars’ (Handlebars (http://handlebarsjs.com/))
+
+Haskell
+=======
+
+  1. ‘haskell-ghc’ (syntax and type checker with GHC
+     (http://www.haskell.org/ghc/)), and
+
+  2. ‘haskell-hlint’ (style checker with hlint
+     (https://github.com/ndmitchell/hlint))
+
+     The extension flycheck-haskell
+     (https://github.com/flycheck/flycheck-haskell) configures Flycheck
+     from the current Cabal project, and adds support for Cabal
+     sandboxes.  The extension flycheck-hdevtools
+     (https://github.com/flycheck/flycheck-hdevtools) adds an
+     alternative syntax checker for ‘haskell-ghc’ using hdevtools
+     (https://github.com/bitc/hdevtools/).
+
+   The ‘haskell-ghc’ checker provides the following options:
+
+‘flycheck-ghc-args’
+     A list of additional arguments for GHC.
+
+‘flycheck-ghc-no-user-package-database’
+     Whether to disable the user package database in GHC.
+
+‘flycheck-ghc-package-databases’
+     A list of additional package databases for GHC. Each item points to
+     a directory containing a package directory, for the ‘-package-db’
+     option.
+
+‘flycheck-ghc-search-path’
+     A list of module directories for GHC, via the ‘-i’ option.
+
+‘flycheck-ghc-language-extensions’
+     A list of language extensions for GHC, via ‘-X’.
+
+HTML
+====
+
+   • ‘html-tidy’ (Tidy HTML5 (https://github.com/w3c/tidy-html5)), with
+     the following option:
+
+     ‘flycheck-tidyrc’
+          Configuration file for Tidy.  *Note Syntax checker
+          configuration files::, for more information about
+          configuration files.
+
+Javascript
+==========
+
+  1.    • ‘javascript-jshint’ (JSHint (http://jshint.com/))
+        • Or ‘javascript-eslint’ (ESLint (http://eslint.org/))
+        • Or ‘javascript-gjslint’ (Closure Linter
+          (https://developers.google.com/closure/utilities))
+  2. ‘javascript-jscs’ (JSCS (http://jscs.info/))
+  3. ‘javascript-standard’ (Standard
+     (https://github.com/feross/standard) or Semistandard
+     (https://github.com/Flet/semistandard))
+
+   The ‘javascript-eslint’ checker provides the following option:
+
+‘flycheck-eslint-rulesdir’
+     A directory with custom rules for ESLint.
+‘flycheck-eslintrc’
+     Configuration file for ESLint.  *Note Syntax checker configuration
+     files::, for more information about configuration files.
+
+   ‘javascript-jshint’, ‘javascript-gjslint’ and ‘javascript-jscs’ read
+configuration files:
+
+‘flycheck-jshintrc’
+     Configuration file for JSHint.  *Note Syntax checker configuration
+     files::, for more information about configuration files.
+‘flycheck-gjslintrc’
+     Configuration file for Closure Linter.  *Note Syntax checker
+     configuration files::, for more information about configuration
+     files.
+‘flycheck-jscsrc’
+     Configuration file for JSCS. *Note Syntax checker configuration
+     files::, for more information about configuration files.
+
+JSON
+====
+
+   • ‘json-jsonlint’ (jsonlint (https://github.com/zaach/jsonlint))
+
+Less
+====
+
+   • ‘less’ (less (http://lesscss.org/))
+
+Lua
+===
+
+   • ‘luacheck’ (Luacheck (https://github.com/mpeterv/luacheck)) with
+     the following option:
+
+     ‘flycheck-luacheckrc’
+          Configuration file for Luacheck.  *Note Syntax checker
+          configuration files::, for more information about
+          configuration files.
+
+   • ‘lua’ (Lua compiler (http://www.lua.org/))
+
+Perl
+====
+
+  1. ‘perl’ (syntax check with the Perl interpreter
+     (http://www.perl.org/))
+  2. ‘perl-perlcritic’ (style and code check with Perl::Critic
+     (https://metacpan.org/pod/Perl::Critic))
+
+   These syntax checkers checker provide the following options:
+
+‘flycheck-perl-include-path’
+     A list of include directories for Perl, relative to the file being
+     checked.
+‘flycheck-perlcritic-severity’
+     The severity level for Perl::Critic, as integer for the
+     ‘--severity’ option of Perl::Critic.
+
+PHP
+===
+
+  1. ‘php’ (syntax check with PHP CLI
+     (https://metacpan.org/pod/Perl::Critic))
+  2. ‘php-phpmd’ (code check with PHP Mess Detector (http://phpmd.org/))
+  3. ‘php-phpcs’ (style check with PHP CodeSniffer
+     (http://pear.php.net/package/PHP_CodeSniffer/))
+
+   These checkers provide the following options:
+
+‘flycheck-phpmd-rulesets’
+     A list of rule sets for PHP Mess Detector as strings.  Each item is
+     either the name of a default rule set, or the path to a custom rule
+     set file.
+
+‘flycheck-phpcs-standard’
+     The coding standard for PHP CodeSniffer, either as name of a
+     built-in standard, or as path to a standard specification.
+
+Puppet
+======
+
+   • ‘puppet-parser’ (syntax check with Puppet (http://puppetlabs.com/))
+   • ‘puppet-lint’ (style check with Puppet Lint
+     (http://puppet-lint.com/))
+
+Python
+======
+
+   • ‘python-flake8’ (syntax and style checking with flake8
+     (https://pypi.python.org/pypi/flake8)), or
+   • ‘python-pylint’ (syntax and style checking with Pylint
+     (http://pylint.org/)), or
+   • ‘python-pycompile’ (syntax checking with Python’s built-in byte
+     compiler (https://docs.python.org/3.4/library/py_compile.html), as
+     last resort)
+
+     The extension flycheck-pyflakes
+     (https://github.com/Wilfred/flycheck-pyflakes) adds a syntax
+     checker using Pyflakes (https://pypi.python.org/pypi/pyflakes).
+
+   ‘python-flake8’ provides the following options:
+
+‘flycheck-flake8-error-level-alist’
+     An alist mapping Flake8 error IDs to Flycheck error levels.
+
+‘flycheck-flake8-maximum-complexity’
+     The maximum McCabe complexity of methods allowed by Flake8.
+
+‘flycheck-flake8-maximum-line-length’
+     The maximum length of lines for Flake8.
+
+‘flycheck-flake8rc’
+     Configuration file for Flake8.  *Note Syntax checker configuration
+     files::, for more information about configuration files.
+
+   ‘python-pylint’ reads a configuration file:
+
+‘flycheck-pylintrc’
+     Configuration file for Pylint.  *Note Syntax checker configuration
+     files::, for more information about configuration files.
+
+R
+=
+
+   • ‘r-lintr’ (syntax and style check with lintr (jimhester/lintr)),
+     with the following options:
+
+     ‘flycheck-lintr-caching’
+          Whether to enable caching in lintr.  On by default.  Only
+          disable it if caching causes real problems.
+
+     ‘flycheck-lintr-linters’
+          Linters to use with lintr, as a string containing an R
+          expression which selects the linters to use.
+
+Racket
+======
+
+   • ‘racket’ (Racket (http://racket-lang.org/))
+
+RPM Spec
+========
+
+   • ‘rpm-rpmlint’ (rpmlint (http://sourceforge.net/projects/rpmlint/))
+
+reStructuredText
+================
+
+   • ‘rst’ (using docutils (http://docutils.sourceforge.net/), for plain
+     reStructuredFiles files), or ‘rst-sphinx’ (using Sphinx
+     (http://sphinx-doc.org/), for Sphinx documentation files)
+
+   ‘rst-sphinx’ provides the following option:
+
+‘flycheck-sphinx-warn-on-missing-references’
+     Whether to emit warnings for all missing references in Sphinx.
+
+Ruby
+====
+
+  1. ‘ruby-rubocop’ (syntax and style check using RuboCop
+     (http://batsov.com/rubocop/))
+  2. ‘ruby-rubylint’ (syntax and style check using ruby-lint
+     (http://code.yorickpeterse.com/ruby-lint/latest/))
+
+   These checkers provide the following options
+
+‘flycheck-rubocop-lint-only’
+     Whether to suppress warnings about style issues in Rubocop, via the
+     ‘--lint’ option.
+‘flycheck-rubocoprc’
+     Configuration file for Rubocop.  *Note Syntax checker configuration
+     files::, for more information about configuration files.
+‘flycheck-rubylintrc’
+     Configuration file for ruby-lint.  *Note Syntax checker
+     configuration files::, for more information about configuration
+     files.
+
+   If none of the above is available, Flycheck will fall back to one of
+the following checkers for very basic checking:
+
+   • ‘ruby’ (using the standard Ruby interpreter
+     (https://www.ruby-lang.org/)),
+   • ‘ruby-jruby’ (using JRuby (http://jruby.org/))
+
+Rust
+====
+
+   • ‘rust’ (using the Rust compiler (http://www.rust-lang.org/)), with
+     the following options:
+
+     ‘flycheck-rust-args’
+          A list of additional arguments for the Rust compiler ‘rustc’.
+     ‘flycheck-rust-check-tests’
+          Whether to check test code in Rust.
+
+     ‘flycheck-rust-crate-root’
+          A path to the crate root for the current buffer, or nil if the
+          current buffer is a crate by itself.
+
+     ‘flycheck-rust-crate-type’
+          The type of the crate to check, as string for the
+          ‘--crate-type’ option.
+
+     ‘flycheck-rust-library-path’
+          A list of library directories for Rust.  Relative paths are
+          relative to the buffer being checked.
+
+     The flycheck-rust (https://github.com/flycheck/flycheck-rust)
+     extension configures Flycheck according to the current Cargo
+     (http://doc.crates.io/guide.html) project.
+
+Sass
+====
+
+   • ‘sass’ (using the standard Sass processor (http://sass-lang.com/)),
+     with the following option:
+
+     ‘flycheck-sass-compass’
+          Whether to enable the Compass CSS framework in SASS, via
+          ‘--compass’.
+
+Scala
+=====
+
+  1. ‘scala’ (syntax and type check using the Scala compiler
+     (http://www.scala-lang.org/))
+  2. ‘scala-scalastyle’ (style check using Scalastyle
+     (http://www.scalastyle.org/))
+
+   The ‘scala-scalastyle’ syntax checker needs the following options:
+
+‘flycheck-scalastyle-jar’
+     The path to the main JAR file of Scalastyle.
+‘flycheck-scalastylerc’
+     Configuration file for Scalastyle.  *Note Syntax checker
+     configuration files::, for more information about configuration
+     files.
+
+   If these options are not set, ‘scala-scalastyle’ will not be used.
+
+SCSS
+====
+
+   • ‘scss-lint’ (using SCSS-Lint
+     (https://github.com/brigade/scss-lint)), or
+   • ‘scss’ (using the standard SCSS processor (http://sass-lang.com/))
+
+   These syntax checkers provide the following options:
+
+‘flycheck-scss-compass’
+     Whether to enable the Compass CSS framework in SCSS, via
+     ‘--compass’.
+‘flycheck-scss-lintrc’
+     Configuration file for SCSS-Lint.  *Note Syntax checker
+     configuration files::, for more information about configuration
+     files.
+
+Shell scripting languages
+=========================
+
+  1. Syntax check with one of the following checkers, depending on the
+     shell used for the current Sh Mode buffer,
+        • ‘sh-bash’ (for Bash (http://www.gnu.org/software/bash/))
+        • ‘sh-posix-dash’ or ‘sh-posix-bash’ (for POSIX shell scripts,
+          using Dash (http://gondor.apana.org.au/~herbert/dash/) or Bash
+          (http://www.gnu.org/software/bash/) respectively)
+        • ‘sh-zsh’ (for Zsh (http://www.zsh.org/))
+  2. ‘sh-shellcheck’ (code and style check using ShellCheck
+     (https://github.com/koalaman/shellcheck/))
+
+   ‘sh-shellcheck’ provides the following option:
+
+‘flycheck-shellcheck-excluded-warnings’
+     A list of excluded warnings for ShellCheck.
+
+Slim
+====
+
+   • ‘slim’ (using Slim (http://slim-lang.com/))
+
+TeX/LaTeX
+=========
+
+   • ‘tex-chktex’ (style check using ChkTeX
+     (http://www.nongnu.org/chktex/)), or
+   • ‘tex-lacheck’ (style check using Lacheck
+     (http://www.ctan.org/pkg/lacheck))
+
+   ‘tex-chktex’ provides the following option:
+
+‘flycheck-chktexrc’
+     Configuration file for ChkTeX. *Note Syntax checker configuration
+     files::, for more information about configuration files.
+
+Texinfo
+=======
+
+   • ‘texinfo’ (using makeinfo (http://www.gnu.org/software/texinfo/))
+
+Verilog
+=======
+
+   • ‘verilog-verilator’ (using Verilator
+     (http://www.veripool.org/wiki/verilator))
+
+XML
+===
+
+   • ‘xml-xmlstarlet’ (using XMLStarlet
+     (http://xmlstar.sourceforge.net)), or
+   • ‘xml-xmllint’ (using xmllint (http://www.xmlsoft.org/))
+
+YAML
+====
+
+   • ‘yaml-jsyaml’ (using js-yaml (https://github.com/nodeca/js-yaml)),
+     or
+   • ‘yaml-ruby’ (using Ruby’s YAML parser)
+
+\1f
+File: flycheck.info,  Node: Issues,  Next: GNU Free Documentation License,  Prev: Supported languages,  Up: Top
+
+Appendix B Issues
+*****************
+
+Please report any bugs or issues to the issue tracker
+(https://github.com/flycheck/flycheck/issues).  If you report a bug,
+please include the following information to help us identify and fix the
+culprit:
+
+   • The output of ‘M-x flycheck-verify-setup’ in affected buffers
+   • The version of Emacs, as reported by ‘M-x emacs-version’
+   • The version of Flycheck, as reported by ‘M-x flycheck-version’
+   • A complete and precise description of the issue, including a
+     description of the expected _and_ the observed behaviour.
+
+   Please also tell us your ideas for improvements or new features.
+
+   Patches are _very_ welcome as well.  If you have code to contribute,
+please do not hesitate to open a pull request.  We would like to ask you
+to obey a few Guidelines
+(https://github.com/flycheck/flycheck/blob/master/CONTRIBUTING.md),
+though.
+
+\1f
+File: flycheck.info,  Node: GNU Free Documentation License,  Next: Main Index,  Prev: Issues,  Up: Top
+
+Appendix C GNU Free Documentation License
+*****************************************
+
+                     Version 1.3, 3 November 2008
+
+     Copyright © 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: Main Index,  Next: Key Index,  Prev: GNU Free Documentation License,  Up: Top
+
+Main Index
+**********
+
+\0\b[index\0\b]
+* Menu:
+
+* Ada language:                          Supported languages. (line  30)
+* AsciiDoc language:                     Supported languages. (line  47)
+* automatic syntax checker selection:    Syntax checkers.     (line   6)
+* C/C++ language:                        Supported languages. (line  52)
+* cask:                                  Installation.        (line  61)
+* CFEngine language:                     Supported languages. (line 115)
+* chaining of syntax checkers:           Syntax checkers.     (line  15)
+* Chef language:                         Supported languages. (line 120)
+* Coffeescript language:                 Supported languages. (line 129)
+* configuration files of syntax checkers: Configuring checkers.
+                                                              (line  43)
+* Coq language:                          Supported languages. (line 141)
+* CSS language:                          Supported languages. (line 146)
+* D language:                            Supported languages. (line 152)
+* Emacs Lisp language:                   Supported languages. (line 166)
+* Erlang language:                       Supported languages. (line 194)
+* ERuby language:                        Supported languages. (line 202)
+* executables of syntax checkers:        Configuring checkers.
+                                                              (line 110)
+* features:                              Introduction.        (line  16)
+* flycheck mode:                         Checking buffers.    (line   6)
+* Fortran language:                      Supported languages. (line 207)
+* Go language:                           Supported languages. (line 233)
+* Haml language:                         Supported languages. (line 252)
+* Handlebars language:                   Supported languages. (line 257)
+* Haskell language:                      Supported languages. (line 262)
+* HTML language:                         Supported languages. (line 298)
+* installation:                          Installation.        (line  37)
+* Javascript language:                   Supported languages. (line 309)
+* JSON language:                         Supported languages. (line 343)
+* Language, Ada:                         Supported languages. (line  30)
+* Language, AsciiDoc:                    Supported languages. (line  47)
+* Language, C/C++:                       Supported languages. (line  52)
+* Language, CFEngine:                    Supported languages. (line 115)
+* Language, Chef:                        Supported languages. (line 120)
+* Language, Coffeescript:                Supported languages. (line 129)
+* Language, Coq:                         Supported languages. (line 141)
+* Language, CSS:                         Supported languages. (line 146)
+* Language, D:                           Supported languages. (line 152)
+* Language, Emacs Lisp:                  Supported languages. (line 166)
+* Language, Erlang:                      Supported languages. (line 194)
+* Language, ERuby:                       Supported languages. (line 202)
+* Language, Fortran:                     Supported languages. (line 207)
+* Language, Go:                          Supported languages. (line 233)
+* Language, Haml:                        Supported languages. (line 252)
+* Language, Handlebars:                  Supported languages. (line 257)
+* Language, Haskell:                     Supported languages. (line 262)
+* Language, HTML:                        Supported languages. (line 298)
+* Language, Javascript:                  Supported languages. (line 309)
+* Language, JSON:                        Supported languages. (line 343)
+* Language, Less:                        Supported languages. (line 348)
+* Language, Lua:                         Supported languages. (line 353)
+* Language, Perl:                        Supported languages. (line 366)
+* Language, PHP:                         Supported languages. (line 383)
+* Language, Puppet:                      Supported languages. (line 403)
+* Language, Python:                      Supported languages. (line 410)
+* Language, R:                           Supported languages. (line 446)
+* Language, Racket:                      Supported languages. (line 460)
+* Language, reStructuredText:            Supported languages. (line 470)
+* Language, RPM Spec:                    Supported languages. (line 465)
+* Language, Ruby:                        Supported languages. (line 482)
+* Language, Rust:                        Supported languages. (line 510)
+* Language, Sass:                        Supported languages. (line 537)
+* Language, Scala:                       Supported languages. (line 547)
+* Language, SCSS:                        Supported languages. (line 566)
+* Language, Shell scripting languages:   Supported languages. (line 583)
+* Language, Slim:                        Supported languages. (line 601)
+* Language, TeX/LaTeX:                   Supported languages. (line 606)
+* Language, Texinfo:                     Supported languages. (line 620)
+* Language, Verilog:                     Supported languages. (line 625)
+* Language, XML:                         Supported languages. (line 631)
+* Language, YAML:                        Supported languages. (line 638)
+* Less language:                         Supported languages. (line 348)
+* Lua language:                          Supported languages. (line 353)
+* manual syntax checker selection:       Syntax checkers.     (line  39)
+* operating system:                      Installation.        (line   9)
+* options of syntax checkers:            Configuring checkers.
+                                                              (line  20)
+* Perl language:                         Supported languages. (line 366)
+* PHP language:                          Supported languages. (line 383)
+* prerequisites:                         Installation.        (line   9)
+* Puppet language:                       Supported languages. (line 403)
+* Python language:                       Supported languages. (line 410)
+* R language:                            Supported languages. (line 446)
+* Racket language:                       Supported languages. (line 460)
+* reStructuredText language:             Supported languages. (line 470)
+* RPM Spec language:                     Supported languages. (line 465)
+* Ruby language:                         Supported languages. (line 482)
+* Rust language:                         Supported languages. (line 510)
+* Sass language:                         Supported languages. (line 537)
+* Scala language:                        Supported languages. (line 547)
+* SCSS language:                         Supported languages. (line 566)
+* Shell scripting languages language:    Supported languages. (line 583)
+* Slim language:                         Supported languages. (line 601)
+* syntax checker:                        Syntax checkers.     (line   6)
+* syntax checker configuration files:    Configuring checkers.
+                                                              (line  43)
+* syntax checker executables:            Configuring checkers.
+                                                              (line 110)
+* syntax checker options:                Configuring checkers.
+                                                              (line  20)
+* syntax checker selection, automatic:   Syntax checkers.     (line   6)
+* syntax checker selection, manual:      Syntax checkers.     (line  39)
+* TeX/LaTeX language:                    Supported languages. (line 606)
+* Texinfo language:                      Supported languages. (line 620)
+* Verilog language:                      Supported languages. (line 625)
+* XML language:                          Supported languages. (line 631)
+* YAML language:                         Supported languages. (line 638)
+
+\1f
+File: flycheck.info,  Node: Key Index,  Next: Function and Variable Index,  Prev: Main Index,  Up: Top
+
+Key Index
+*********
+
+\0\b[index\0\b]
+* Menu:
+
+* C-c ! ?:                               Syntax checkers.     (line  31)
+* C-c ! c:                               Checking buffers.    (line  57)
+* C-c ! C-c:                             Finding error patterns.
+                                                              (line  16)
+* C-c ! C-w:                             Killing errors.      (line   8)
+* C-c ! e:                               Configuring checkers.
+                                                              (line 125)
+* C-c ! l:                               Listing errors.      (line   9)
+* C-c ! n:                               Navigating errors.   (line  22)
+* C-c ! p:                               Navigating errors.   (line  32)
+* C-c ! s:                               Syntax checkers.     (line  43)
+* C-c ! v:                               Checking buffers.    (line  63)
+* C-c ! x:                               Syntax checkers.     (line  85)
+* C-u C-c ! C-w:                         Killing errors.      (line  16)
+* C-u C-c ! e:                           Configuring checkers.
+                                                              (line 130)
+* C-u C-c ! s:                           Syntax checkers.     (line  48)
+* C-u C-c ! x:                           Syntax checkers.     (line  89)
+* M-0 C-c ! C-w:                         Killing errors.      (line  20)
+
+\1f
+File: flycheck.info,  Node: Function and Variable Index,  Prev: Key Index,  Up: Top
+
+Function and variable index
+***************************
+
+\0\b[index\0\b]
+* Menu:
+
+* flycheck-buffer:                       Checking buffers.    (line  57)
+* flycheck-check-syntax-automatically:   Checking buffers.    (line  33)
+* flycheck-checker:                      Syntax checkers.     (line  58)
+* flycheck-checker-error-threshold:      Reporting results.   (line  50)
+* flycheck-checkers:                     Syntax checkers.     (line  10)
+* flycheck-chktexrc:                     Supported languages. (line 614)
+* flycheck-clang-args:                   Supported languages. (line  61)
+* flycheck-clang-blocks:                 Supported languages. (line  64)
+* flycheck-clang-definitions:            Supported languages. (line  66)
+* flycheck-clang-include-path:           Supported languages. (line  69)
+* flycheck-clang-includes:               Supported languages. (line  73)
+* flycheck-clang-language-standard:      Supported languages. (line  77)
+* flycheck-clang-ms-extensions:          Supported languages. (line  81)
+* flycheck-clang-no-exceptions:          Supported languages. (line  83)
+* flycheck-clang-no-rtti:                Supported languages. (line  86)
+* flycheck-clang-pedantic:               Supported languages. (line  93)
+* flycheck-clang-pedantic-errors:        Supported languages. (line  96)
+* flycheck-clang-standard-library:       Supported languages. (line  89)
+* flycheck-clang-warnings:               Supported languages. (line  99)
+* flycheck-clear:                        Reporting results.   (line  55)
+* flycheck-coffeelintrc:                 Supported languages. (line 134)
+* flycheck-compile:                      Finding error patterns.
+                                                              (line  16)
+* flycheck-completion-system:            Syntax checkers.     (line 123)
+* flycheck-copy-errors-as-kill:          Killing errors.      (line   8)
+* flycheck-cppcheck-checks:              Supported languages. (line 106)
+* flycheck-cppcheck-inconclusive:        Supported languages. (line 109)
+* flycheck-describe-checker:             Syntax checkers.     (line  31)
+* flycheck-disable-checker:              Syntax checkers.     (line  85)
+* flycheck-disabled-checkers:            Syntax checkers.     (line 102)
+* flycheck-display-error-messages:       Displaying errors.   (line  23)
+* flycheck-display-error-messages-unless-error-list: Displaying errors.
+                                                              (line  26)
+* flycheck-display-errors-delay:         Displaying errors.   (line   9)
+* flycheck-display-errors-function:      Displaying errors.   (line  16)
+* flycheck-dmd-args:                     Supported languages. (line 157)
+* flycheck-dmd-include-path:             Supported languages. (line 155)
+* flycheck-emacs-lisp-initialize-packages: Supported languages.
+                                                              (line 182)
+* flycheck-emacs-lisp-load-path:         Supported languages. (line 177)
+* flycheck-emacs-lisp-package-user-dir:  Supported languages. (line 188)
+* flycheck-erlang-include-path:          Supported languages. (line 197)
+* flycheck-error:                        Reporting results.   (line  32)
+* flycheck-error-list-after-refresh-hook: Listing errors.     (line  14)
+* flycheck-error-list-highlight:         Listing errors.      (line  41)
+* flycheck-eslint-rulesdir:              Supported languages. (line 321)
+* flycheck-eslintrc:                     Supported languages. (line 323)
+* flycheck-first-error:                  Navigating errors.   (line  42)
+* flycheck-flake8-error-level-alist:     Supported languages. (line 425)
+* flycheck-flake8-maximum-complexity:    Supported languages. (line 428)
+* flycheck-flake8-maximum-line-length:   Supported languages. (line 431)
+* flycheck-flake8rc:                     Supported languages. (line 434)
+* flycheck-foodcritic-tags:              Supported languages. (line 124)
+* flycheck-gcc-args:                     Supported languages. (line  62)
+* flycheck-gcc-definitions:              Supported languages. (line  67)
+* flycheck-gcc-include-path:             Supported languages. (line  70)
+* flycheck-gcc-includes:                 Supported languages. (line  74)
+* flycheck-gcc-language-standard:        Supported languages. (line  78)
+* flycheck-gcc-no-exceptions:            Supported languages. (line  84)
+* flycheck-gcc-no-rtti:                  Supported languages. (line  87)
+* flycheck-gcc-openmp:                   Supported languages. (line  91)
+* flycheck-gcc-pedantic:                 Supported languages. (line  94)
+* flycheck-gcc-pedantic-errors:          Supported languages. (line  97)
+* flycheck-gcc-warnings:                 Supported languages. (line 100)
+* flycheck-gfortran-args:                Supported languages. (line 212)
+* flycheck-gfortran-include-path:        Supported languages. (line 215)
+* flycheck-gfortran-language-standard:   Supported languages. (line 219)
+* flycheck-gfortran-layout:              Supported languages. (line 223)
+* flycheck-gfortran-warnings:            Supported languages. (line 228)
+* flycheck-ghc-args:                     Supported languages. (line 279)
+* flycheck-ghc-language-extensions:      Supported languages. (line 293)
+* flycheck-ghc-no-user-package-database: Supported languages. (line 282)
+* flycheck-ghc-package-databases:        Supported languages. (line 285)
+* flycheck-ghc-search-path:              Supported languages. (line 290)
+* flycheck-gjslintrc:                    Supported languages. (line 333)
+* flycheck-global-modes:                 Checking buffers.    (line   6)
+* flycheck-gnat-args:                    Supported languages. (line  34)
+* flycheck-gnat-include-path:            Supported languages. (line  36)
+* flycheck-gnat-language-standard:       Supported languages. (line  39)
+* flycheck-gnat-warnings:                Supported languages. (line  41)
+* flycheck-go-vet-print-functions:       Supported languages. (line 246)
+* flycheck-highlighting-mode:            Reporting results.   (line  15)
+* flycheck-idle-change-delay:            Checking buffers.    (line  40)
+* flycheck-indication-mode:              Reporting results.   (line  36)
+* flycheck-info:                         Reporting results.   (line  32)
+* flycheck-jscsrc:                       Supported languages. (line 337)
+* flycheck-jshintrc:                     Supported languages. (line 330)
+* flycheck-keymap-prefix:                Usage.               (line   8)
+* flycheck-lintr-caching:                Supported languages. (line 450)
+* flycheck-lintr-linters:                Supported languages. (line 454)
+* flycheck-list-errors:                  Listing errors.      (line   9)
+* flycheck-locate-config-file-functions: Configuring checkers.
+                                                              (line  84)
+* flycheck-luacheckrc:                   Supported languages. (line 357)
+* flycheck-mode:                         Checking buffers.    (line   6)
+* flycheck-navigation-minimum-level:     Navigating errors.   (line  55)
+* flycheck-next-error:                   Navigating errors.   (line  22)
+* flycheck-perl-include-path:            Supported languages. (line 374)
+* flycheck-perlcritic-severity:          Supported languages. (line 377)
+* flycheck-phpcs-standard:               Supported languages. (line 397)
+* flycheck-phpmd-rulesets:               Supported languages. (line 392)
+* flycheck-previous-error:               Navigating errors.   (line  32)
+* flycheck-pylintrc:                     Supported languages. (line 440)
+* flycheck-rubocop-lint-only:            Supported languages. (line 490)
+* flycheck-rubocoprc:                    Supported languages. (line 493)
+* flycheck-rubylintrc:                   Supported languages. (line 496)
+* flycheck-rust-args:                    Supported languages. (line 514)
+* flycheck-rust-check-tests:             Supported languages. (line 516)
+* flycheck-rust-crate-root:              Supported languages. (line 519)
+* flycheck-rust-crate-type:              Supported languages. (line 523)
+* flycheck-rust-library-path:            Supported languages. (line 527)
+* flycheck-sass-compass:                 Supported languages. (line 541)
+* flycheck-scalastyle-jar:               Supported languages. (line 555)
+* flycheck-scalastylerc:                 Supported languages. (line 557)
+* flycheck-scss-compass:                 Supported languages. (line 573)
+* flycheck-scss-lintrc:                  Supported languages. (line 576)
+* flycheck-select-checker:               Syntax checkers.     (line  43)
+* flycheck-set-checker-executable:       Configuring checkers.
+                                                              (line 125)
+* flycheck-shellcheck-excluded-warnings: Supported languages. (line 596)
+* flycheck-sphinx-warn-on-missing-references: Supported languages.
+                                                              (line 477)
+* flycheck-standard-error-navigation:    Navigating errors.   (line   6)
+* flycheck-temp-prefix:                  Checking buffers.    (line  71)
+* flycheck-tidyrc:                       Supported languages. (line 302)
+* flycheck-verify-setup:                 Checking buffers.    (line  63)
+* flycheck-warning:                      Reporting results.   (line  32)
+* global-flycheck-mode:                  Checking buffers.    (line   6)
+* list-flycheck-errors:                  Listing errors.      (line   9)
+
+
+\1f
+Tag Table:
+Node: Top\7f1137
+Node: Introduction\7f3358
+Node: Installation\7f4451
+Node: Quickstart\7f6739
+Node: Usage\7f9275
+Node: Checking buffers\7f10275
+Node: Syntax checkers\7f13099
+Node: Reporting results\7f18498
+Node: Navigating errors\7f20817
+Node: Displaying errors\7f23373
+Node: Killing errors\7f24782
+Node: Listing errors\7f25569
+Node: Mode line display\7f27121
+Node: Configuring checkers\7f28434
+Ref: Syntax checker options\7f29150
+Ref: Syntax checker configuration files\7f30168
+Ref: Syntax checker executables\7f33055
+Node: Syntax checker definitions\7f34259
+Node: Defining syntax checkers\7f35440
+Node: Finding error patterns\7f39659
+Node: Trying new checkers\7f41006
+Node: Registering new checkers\7f41691
+Node: Parsing structured output\7f43239
+Node: Passing configuration to checkers\7f44482
+Node: Controlling use of checkers\7f48086
+Node: Applying multiple checkers\7f49188
+Node: Flycheck hooks\7f52441
+Node: Flycheck API\7f54074
+Node: Command syntax checkers\7f54412
+Node: Argument Substitution\7f54782
+Node: Checker configuration\7f54952
+Node: Error parsers\7f55164
+Node: Errors\7f55310
+Node: Supported languages\7f55422
+Ref: language-Ada\7f56631
+Ref: language-AsciiDoc\7f57255
+Ref: language-C/C++\7f57338
+Ref: language-CFEngine\7f59792
+Ref: language-Chef\7f59860
+Ref: language-Coffeescript\7f60105
+Ref: language-Coq\7f60505
+Ref: language-CSS\7f60561
+Ref: language-D\7f60671
+Ref: language-Emacs Lisp\7f61116
+Ref: language-Erlang\7f62244
+Ref: language-ERuby\7f62405
+Ref: language-Fortran\7f62500
+Ref: language-Go\7f63393
+Ref: language-Haml\7f64143
+Ref: language-Handlebars\7f64212
+Ref: language-Haskell\7f64294
+Ref: language-HTML\7f65534
+Ref: language-Javascript\7f65843
+Ref: language-JSON\7f67203
+Ref: language-Less\7f67289
+Ref: language-Lua\7f67346
+Ref: language-Perl\7f67704
+Ref: language-PHP\7f68239
+Ref: language-Puppet\7f68931
+Ref: language-Python\7f69113
+Ref: language-R\7f70397
+Ref: language-Racket\7f70834
+Ref: language-RPM Spec\7f70909
+Ref: language-reStructuredText\7f71023
+Ref: language-Ruby\7f71412
+Ref: language-Rust\7f72423
+Ref: language-Sass\7f73361
+Ref: language-Scala\7f73614
+Ref: language-SCSS\7f74221
+Ref: language-Shell scripting languages\7f74781
+Ref: language-Slim\7f75517
+Ref: language-TeX/LaTeX\7f75594
+Ref: language-Texinfo\7f76006
+Ref: language-Verilog\7f76101
+Ref: language-XML\7f76206
+Ref: language-YAML\7f76374
+Node: Issues\7f76513
+Node: GNU Free Documentation License\7f77534
+Node: Main Index\7f102881
+Node: Key Index\7f110860
+Node: Function and Variable Index\7f112368
+\1f
+End Tag Table
+
+\1f
+Local Variables:
+coding: utf-8
+End: