diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/ale-awk.txt | 12 | ||||
-rw-r--r-- | doc/ale-c.txt | 19 | ||||
-rw-r--r-- | doc/ale-cpp.txt | 35 | ||||
-rw-r--r-- | doc/ale-css.txt | 4 | ||||
-rw-r--r-- | doc/ale-eruby.txt | 17 | ||||
-rw-r--r-- | doc/ale-graphql.txt | 9 | ||||
-rw-r--r-- | doc/ale-idris.txt | 23 | ||||
-rw-r--r-- | doc/ale-java.txt | 6 | ||||
-rw-r--r-- | doc/ale-javascript.txt | 16 | ||||
-rw-r--r-- | doc/ale-php.txt | 68 | ||||
-rw-r--r-- | doc/ale-python.txt | 29 | ||||
-rw-r--r-- | doc/ale-rust.txt | 21 | ||||
-rw-r--r-- | doc/ale-thrift.txt | 46 | ||||
-rw-r--r-- | doc/ale-typescript.txt | 8 | ||||
-rw-r--r-- | doc/ale-xml.txt | 12 | ||||
-rw-r--r-- | doc/ale.txt | 589 |
16 files changed, 685 insertions, 229 deletions
diff --git a/doc/ale-awk.txt b/doc/ale-awk.txt index d3f23ac7..b9c5c34e 100644 --- a/doc/ale-awk.txt +++ b/doc/ale-awk.txt @@ -1,20 +1,20 @@ =============================================================================== -ALE Awk Integration *ale-awk-options* +ALE Awk Integration *ale-awk-options* =============================================================================== -gawk *ale-awk-gawk* +gawk *ale-awk-gawk* -g:ale_awk_gawk_executable *g:ale_awk_gawk_executable* - *b:ale_awk_gawk_executable* +g:ale_awk_gawk_executable *g:ale_awk_gawk_executable* + *b:ale_awk_gawk_executable* Type: |String| Default: `'gawk'` This variable sets executable used for gawk. -g:ale_awk_gawk_options *g:ale_awk_gawk_options* - *b:ale_awk_gawk_options* +g:ale_awk_gawk_options *g:ale_awk_gawk_options* + *b:ale_awk_gawk_options* Type: |String| Default: `''` diff --git a/doc/ale-c.txt b/doc/ale-c.txt index 29208bc8..0c4f8dc9 100644 --- a/doc/ale-c.txt +++ b/doc/ale-c.txt @@ -144,4 +144,23 @@ g:ale_c_gcc_options *g:ale_c_gcc_options* =============================================================================== +clang-format *ale-c-clangformat* + +g:ale_c_clangformat_executable *g:ale_c_clangformat_executable* + *b:ale_c_clangformat_executable* + Type: |String| + Default: `'clang-format'` + + This variable can be changed to use a different executable for clang-format. + + +g:ale_c_clangformat_options *g:ale_c_clangformat_options* + *b:ale_c_clangformat_options* + Type: |String| + Default: `''` + + This variable can be change to modify flags given to clang-format. + + +=============================================================================== vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl: diff --git a/doc/ale-cpp.txt b/doc/ale-cpp.txt index 854e9b4e..685bb8dc 100644 --- a/doc/ale-cpp.txt +++ b/doc/ale-cpp.txt @@ -5,33 +5,9 @@ ALE C++ Integration *ale-cpp-options* =============================================================================== Global Options -g:ale_c_build_dir_names *g:ale_c_build_dir_names* - *b:ale_c_build_dir_names* +The |g:ale_c_build_dir_names| and |g:ale_c_build_dir| also apply to some C++ +linters too. - Type: |List| - Default: `['build', 'bin']` - - A list of directory names to be used when searching upwards from cpp - files to discover compilation databases with. For directory named `'foo'`, - ALE will search for `'foo/compile_commands.json'` in all directories on and above - the directory containing the cpp file to find path to compilation database. - This feature is useful for the clang tools wrapped around LibTooling (namely - here, clang-tidy) - - -g:ale_c_build_dir *g:ale_c_build_dir* - *b:ale_c_build_dir* - - Type: |String| - Default: `''` - - A path to the directory containing the `compile_commands.json` file to use - with c-family linters. Usually setting this option to a non-empty string - will override the |g:ale_c_build_dir_names| option to impose a compilation - database (it can be useful if multiple builds are in multiple build - subdirectories in the project tree). - This feature is also most useful for the clang tools linters, wrapped - aroung LibTooling (namely clang-tidy here) =============================================================================== clang *ale-cpp-clang* @@ -190,4 +166,11 @@ g:ale_cpp_gcc_options *g:ale_cpp_gcc_options* =============================================================================== +clang-format *ale-cpp-clangformat* + +See |ale-c-clangformat| for information about the available options. +Note that the C options are also used for C++. + + +=============================================================================== vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl: diff --git a/doc/ale-css.txt b/doc/ale-css.txt index effa52ad..b1ab8eb8 100644 --- a/doc/ale-css.txt +++ b/doc/ale-css.txt @@ -13,8 +13,8 @@ g:ale_css_stylelint_executable *g:ale_css_stylelint_executable* See |ale-integrations-local-executables| -g:ale_css_stylelint_options *g:ale_css_stylelint_options* - *b:ale_css_stylelint_options* +g:ale_css_stylelint_options *g:ale_css_stylelint_options* + *b:ale_css_stylelint_options* Type: |String| Default: `''` diff --git a/doc/ale-eruby.txt b/doc/ale-eruby.txt new file mode 100644 index 00000000..b9cd3cbf --- /dev/null +++ b/doc/ale-eruby.txt @@ -0,0 +1,17 @@ +=============================================================================== +ALE Eruby Integration *ale-eruby-options* + +There are two linters for `eruby` files: + +- `erubylint` +- `erubis` + +If you don't know which one your project uses, it's probably `erb`. +To selectively enable one or the other, see |g:ale_linters|. + +(Note that ALE already disables linters if the executable for that linter is +not found; thus, there's probably no need to disable one of these if you're +using the other one.) + +=============================================================================== + vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl: diff --git a/doc/ale-graphql.txt b/doc/ale-graphql.txt new file mode 100644 index 00000000..5ceb5ca7 --- /dev/null +++ b/doc/ale-graphql.txt @@ -0,0 +1,9 @@ +=============================================================================== +ALE GraphQL Integration *ale-graphql-options* + + +=============================================================================== +gqlint *ale-graphql-gqlint* + +=============================================================================== + vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl: diff --git a/doc/ale-idris.txt b/doc/ale-idris.txt new file mode 100644 index 00000000..c7500b0d --- /dev/null +++ b/doc/ale-idris.txt @@ -0,0 +1,23 @@ +=============================================================================== +ALE Idris Integration *ale-idris-options* + +=============================================================================== +idris *ale-idris-idris* + +g:ale_idris_idris_executable *g:ale_idris_idris_executable* + *b:ale_idris_idris_executable* + Type: |String| + Default: `'idris'` + + This variable can be changed to change the path to idris. + + +g:ale_idris_idris_options *g:ale_idris_idris_options* + *b:ale_idris_idris_options* + Type: |String| + Default: `'--total --warnpartial --warnreach --warnipkg'` + + This variable can be changed to modify flags given to idris. + +=============================================================================== + vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl: diff --git a/doc/ale-java.txt b/doc/ale-java.txt index 36d606de..13decb41 100644 --- a/doc/ale-java.txt +++ b/doc/ale-java.txt @@ -3,10 +3,10 @@ ALE Java Integration *ale-java-options* =============================================================================== -checkstyle ale-java-checkstyle +checkstyle *ale-java-checkstyle* -g:ale_java_checkstyle_options g:ale_java_checkstyle_options - b:ale_java_checkstyle_options +g:ale_java_checkstyle_options *g:ale_java_checkstyle_options* + *b:ale_java_checkstyle_options* Type: String Default: '-c /google_checks.xml' diff --git a/doc/ale-javascript.txt b/doc/ale-javascript.txt index 4abc6298..95d2504a 100644 --- a/doc/ale-javascript.txt +++ b/doc/ale-javascript.txt @@ -50,6 +50,16 @@ g:ale_javascript_eslint_use_global *g:ale_javascript_eslint_use_global* See |ale-integrations-local-executables| +g:ale_javascript_eslint_suppress_eslintignore + *g:ale_javascript_eslint_suppress_eslintignore* + *b:ale_javascript_eslint_suppress_eslintignore* + Type: |Number| + Default: `0` + + This variable can be set to disable the warning that linting is disabled on + the current file due to being covered by `.eslintignore`. + + =============================================================================== prettier *ale-javascript-prettier* @@ -76,6 +86,12 @@ g:ale_javascript_prettier_use_global *g:ale_javascript_prettier_use_global* See |ale-integrations-local-executables| +g:ale_javascript_prettier_use_local_config *g:ale_javascript_prettier_use_local_config* + *b:ale_javascript_prettier_use_local_config* + Type: |Number| + Default: `0` + + This variable can be set to use the local prettier configuration file. =============================================================================== prettier-eslint *ale-javascript-prettier-eslint* diff --git a/doc/ale-php.txt b/doc/ale-php.txt index 4109673a..e2b0de6f 100644 --- a/doc/ale-php.txt +++ b/doc/ale-php.txt @@ -3,6 +3,38 @@ ALE PHP Integration *ale-php-options* =============================================================================== +hack *ale-php-hack* + +There are no options for this linter. + + +=============================================================================== +langserver *ale-php-langserver* + +g:ale_php_langserver_executable *g:ale_php_langserver_executable* + *b:ale_php_langserver_executable* + Type: |String| + Default: `'php-language-server.php'` + + The variable can be set to configure the executable that will be used for + running the PHP language server. `vendor` directory executables will be + preferred instead of this setting if |g:ale_php_langserver_use_global| is `0`. + + See: |ale-integrations-local-executables| + + +g:ale_php_langserver_use_global *g:ale_php_langserver_use_global* + *b:ale_php_langserver_use_global* + Type: |Number| + Default: `0` + + This variable can be set to `1` to force the language server to be run with + the executable set for |g:ale_php_langserver_executable|. + + See: |ale-integrations-local-executables| + + +=============================================================================== phpcs *ale-php-phpcs* g:ale_php_phpcs_executable *g:ale_php_phpcs_executable* @@ -31,7 +63,7 @@ g:ale_php_phpcs_use_global *g:ale_php_phpcs_use_global* See |ale-integrations-local-executables| ------------------------------------------------------------------------------- +------------------------------------------------------------------------------- phpmd *ale-php-phpmd* g:ale_php_phpmd_ruleset *g:ale_php_phpmd_ruleset* @@ -43,8 +75,8 @@ g:ale_php_phpmd_ruleset *g:ale_php_phpmd_ruleset* the available phpmd rulesets ------------------------------------------------------------------------------- -phpstan *ale-php-stan* +------------------------------------------------------------------------------- +phpstan *ale-php-phpstan* g:ale_php_phpstan_executable *g:ale_php_phpstan_executable* *b:ale_php_phpstan_executable* @@ -62,5 +94,35 @@ g:ale_php_phpstan_level *g:ale_php_phpstan_level* This variable controls the rule levels. 0 is the loosest and 4 is the strictest. + +------------------------------------------------------------------------------- +phpcbf *ale-php-phpcbf* + +g:ale_php_phpcbf_executable *g:ale_php_phpcbf_executable* + *b:ale_php_phpcbf_executable* + Type: |String| + Default: `'phpcbf'` + + See |ale-integrations-local-executables| + + +g:ale_php_phpcbf_standard *g:ale_php_phpcbf_standard* + *b:ale_php_phpcbf_standard* + Type: |String| + Default: `''` + + This variable can be set to specify the coding standard used by phpcbf. If no + coding standard is specified, phpcbf will default to fixing against the + PEAR coding standard, or the standard you have set as the default. + + +g:ale_php_phpcbf_use_global *g:ale_php_phpcbf_use_global* + *b:ale_php_phpcbf_use_global* + Type: |Number| + Default: `0` + + See |ale-integrations-local-executables| + + =============================================================================== vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl: diff --git a/doc/ale-python.txt b/doc/ale-python.txt index dabc573c..a8d033e2 100644 --- a/doc/ale-python.txt +++ b/doc/ale-python.txt @@ -123,6 +123,35 @@ g:ale_python_mypy_use_global *g:ale_python_mypy_use_global* =============================================================================== +pycodestyle *ale-python-pycodestyle* + + +g:ale_python_pycodestyle_executable *g:ale_python_pycodestyle_executable* + *b:ale_python_pycodestyle_executable* + Type: |String| + Default: `'pycodestyle'` + + See |ale-integrations-local-executables| + + +g:ale_python_pycodestyle_options *g:ale_python_pycodestyle_options* + *b:ale_python_pycodestyle_options* + Type: |String| + Default: `''` + + This variable can be changed to add command-line arguments to the + pycodestyle invocation. + + +g:ale_python_pycodestyle_use_global *g:ale_python_pycodestyle_use_global* + *b:ale_python_pycodestyle_use_global* + Type: |Number| + Default: `0` + + See |ale-integrations-local-executables| + + +=============================================================================== pylint *ale-python-pylint* g:ale_python_pylint_executable *g:ale_python_pylint_executable* diff --git a/doc/ale-rust.txt b/doc/ale-rust.txt index 1a20757e..d03ab073 100644 --- a/doc/ale-rust.txt +++ b/doc/ale-rust.txt @@ -8,7 +8,7 @@ Integration Information Since Vim does not detect the rust file type out-of-the-box, you need the runtime files for rust from here: https://github.com/rust-lang/rust.vim - Note that there are two possible linters for rust files: + Note that there are three possible linters for Rust files: 1. rustc -- The Rust compiler is used to check the currently edited file. So, if your project consists of multiple files, you will get some errors @@ -18,6 +18,10 @@ Integration Information checked. That means that all errors are properly shown, but cargo can only operate on the files written on disk, so errors will not be reported while you type. + 3. rls -- If you have `rls` installed, you might prefer using this linter + over cargo. rls implements the Language Server Protocol for incremental + compliation of Rust code, and can check Rust files while you type. `rls` + requires Rust files to contained in Cargo projects. Only cargo is enabled by default. To switch to using rustc instead of cargo, configure |g:ale_linters| appropriately: > @@ -35,19 +39,30 @@ cargo *ale-rust-cargo* g:ale_rust_cargo_use_check *g:ale_rust_cargo_use_check* *b:ale_rust_cargo_use_check* Type: |Number| - Default: `1` + Default: `0` When set to `1`, this option will cause ALE to use "cargo check" instead of "cargo build". "cargo check" is supported since version 1.16.0 of Rust. =============================================================================== +rls *ale-rust-rls* + +g:ale_rust_rls_executable *g:ale_rust_rls_executable* + *b:ale_rust_rls_executable* + Type: |String| + Default: `'rls'` + + This variable can be modified to change the executable path for `rls`. + + +=============================================================================== rustc *ale-rust-rustc* g:ale_rust_ignore_error_codes *g:ale_rust_ignore_error_codes* *b:ale_rust_ignore_error_codes* Type: |List| of |String|s - Default: [] + Default: `[]` This variable can contain error codes which will be ignored. For example, to ignore most errors regarding failed imports, put this in your .vimrc diff --git a/doc/ale-thrift.txt b/doc/ale-thrift.txt new file mode 100644 index 00000000..ed858db8 --- /dev/null +++ b/doc/ale-thrift.txt @@ -0,0 +1,46 @@ +=============================================================================== +ALE Thrift Integration *ale-thrift-options* + + +=============================================================================== +thrift *ale-thrift-thrift* + +The `thrift` linter works by compiling the buffer's contents and reporting any +errors reported by the parser and the configured code generator(s). + +g:ale_thrift_thrift_executable *g:ale_thrift_thrift_executable* + *b:ale_thrift_thrift_executable* + Type: |String| + Default: `'thrift'` + + See |ale-integrations-local-executables| + + +g:ale_thrift_thrift_generators *g:ale_thrift_thrift_generators* + *b:ale_thrift_thrift_generators* + Type: |List| of |String|s + Default: `['cpp']` + + This list must contain one or more named code generators. Generator options + can be included as part of each string, e.g. `['py:dynamic']`. + + +g:ale_thrift_thrift_includes *g:ale_thrift_thrift_includes* + *b:ale_thrift_thrift_includes* + Type: |List| of |String|s + Default: `[]` + + This list contains paths that will be searched for thrift `include` + directives. + + +g:ale_thrift_thrift_options *g:ale_thrift_thrift_options* + *b:ale_thrift_thrift_options* + Type: |String| + Default: `'-strict'` + + This variable can be changed to customize the additional command-line + arguments that are passed to the thrift compiler. + +=============================================================================== + vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl: diff --git a/doc/ale-typescript.txt b/doc/ale-typescript.txt index df479c5a..794240ec 100644 --- a/doc/ale-typescript.txt +++ b/doc/ale-typescript.txt @@ -30,6 +30,14 @@ g:ale_typescript_tslint_config_path *g:ale_typescript_tslint_config_path* such path exists, this variable will be used instead. +g:ale_typescript_tslint_rules_dir *g:ale_typescript_tslint_rules_dir* + *b:ale_typescript_tslint_rules_dir* + Type: |String| + Default: `''` + + If this variable is set, ALE will use it as the rules directory for tslint. + + g:ale_typescript_tslint_use_global *g:ale_typescript_tslint_use_global* *b:ale_typescript_tslint_use_global* Type: |Number| diff --git a/doc/ale-xml.txt b/doc/ale-xml.txt index ddbeb31d..6c8af6c7 100644 --- a/doc/ale-xml.txt +++ b/doc/ale-xml.txt @@ -1,20 +1,20 @@ =============================================================================== -ALE XML Integration *ale-xml-options* +ALE XML Integration *ale-xml-options* =============================================================================== -xmllint *ale-xml-xmllint* +xmllint *ale-xml-xmllint* -g:ale_xml_xmllint_executable *g:ale_xml_xmllint_executable* - *b:ale_xml_xmllint_executable* +g:ale_xml_xmllint_executable *g:ale_xml_xmllint_executable* + *b:ale_xml_xmllint_executable* Type: |String| Default: `'xmllint'` This variable can be set to change the path to xmllint. -g:ale_xml_xmllint_options *g:ale_xml_xmllint_options* - *b:ale_xml_xmllint_options* +g:ale_xml_xmllint_options *g:ale_xml_xmllint_options* + *b:ale_xml_xmllint_options* Type: |String| Default: `''` diff --git a/doc/ale.txt b/doc/ale.txt index 944431df..dfdb2693 100644 --- a/doc/ale.txt +++ b/doc/ale.txt @@ -8,10 +8,12 @@ CONTENTS *ale-contents* 1. Introduction.........................|ale-introduction| 2. Supported Languages & Tools..........|ale-support| - 3. Global Options.......................|ale-options| - 3.1 Highlights........................|ale-highlights| + 3. Linting..............................|ale-lint| 4. Fixing Problems......................|ale-fix| - 5. Integration Documentation............|ale-integrations| + 5. Completion...........................|ale-completion| + 6. Global Options.......................|ale-options| + 6.1 Highlights........................|ale-highlights| + 7. Integration Documentation............|ale-integrations| asm...................................|ale-asm-options| gcc.................................|ale-asm-gcc| c.....................................|ale-c-options| @@ -19,6 +21,7 @@ CONTENTS *ale-contents* clangtidy...........................|ale-c-clangtidy| cppcheck............................|ale-c-cppcheck| gcc.................................|ale-c-gcc| + clang-format........................|ale-c-clangformat| chef..................................|ale-chef-options| foodcritic..........................|ale-chef-foodcritic| cpp...................................|ale-cpp-options| @@ -28,6 +31,7 @@ CONTENTS *ale-contents* cppcheck............................|ale-cpp-cppcheck| cpplint.............................|ale-cpp-cpplint| gcc.................................|ale-cpp-gcc| + clang-format........................|ale-cpp-clangformat| css...................................|ale-css-options| stylelint...........................|ale-css-stylelint| cmake.................................|ale-cmake-options| @@ -37,12 +41,15 @@ CONTENTS *ale-contents* erlang................................|ale-erlang-options| erlc................................|ale-erlang-erlc| syntaxerl...........................|ale-erlang-syntaxerl| + eruby.................................|ale-eruby-options| fortran...............................|ale-fortran-options| gcc.................................|ale-fortran-gcc| fusionscript..........................|ale-fuse-options| fusion-lint.........................|ale-fuse-fusionlint| go....................................|ale-go-options| gometalinter........................|ale-go-gometalinter| + graphql...............................|ale-graphql-options| + gqlint..............................|ale-graphql-gqlint| handlebars............................|ale-handlebars-options| ember-template-lint.................|ale-handlebars-embertemplatelint| haskell...............................|ale-haskell-options| @@ -50,6 +57,8 @@ CONTENTS *ale-contents* html..................................|ale-html-options| htmlhint............................|ale-html-htmlhint| tidy................................|ale-html-tidy| + idris.................................|ale-idris-options| + idris...............................|ale-idris-idris| java..................................|ale-java-options| checkstyle..........................|ale-java-checkstyle| javac...............................|ale-java-javac| @@ -76,9 +85,12 @@ CONTENTS *ale-contents* perl................................|ale-perl-perl| perlcritic..........................|ale-perl-perlcritic| php...................................|ale-php-options| + hack................................|ale-php-hack| + langserver..........................|ale-php-langserver| phpcs...............................|ale-php-phpcs| phpmd...............................|ale-php-phpmd| phpstan.............................|ale-php-phpstan| + phpcbf..............................|ale-php-phpcbf| pug...................................|ale-pug-options| puglint.............................|ale-pug-puglint| python................................|ale-python-options| @@ -86,6 +98,7 @@ CONTENTS *ale-contents* flake8..............................|ale-python-flake8| isort...............................|ale-python-isort| mypy................................|ale-python-mypy| + pycodestyle.........................|ale-python-pycodestyle| pylint..............................|ale-python-pylint| yapf................................|ale-python-yapf| ruby..................................|ale-ruby-options| @@ -95,6 +108,7 @@ CONTENTS *ale-contents* rubocop.............................|ale-ruby-rubocop| rust..................................|ale-rust-options| cargo...............................|ale-rust-cargo| + rls.................................|ale-rust-rls| rustc...............................|ale-rust-rustc| sass..................................|ale-sass-options| stylelint...........................|ale-sass-stylelint| @@ -114,6 +128,8 @@ CONTENTS *ale-contents* tex...................................|ale-tex-options| chktex..............................|ale-tex-chktex| lacheck.............................|ale-tex-lacheck| + thrift................................|ale-thrift-options| + thrift..............................|ale-thrift-thrift| typescript............................|ale-typescript-options| eslint..............................|ale-typescript-eslint| tslint..............................|ale-typescript-tslint| @@ -128,10 +144,10 @@ CONTENTS *ale-contents* yaml..................................|ale-yaml-options| swaglint............................|ale-yaml-swaglint| yamllint............................|ale-yaml-yamllint| - 6. Commands/Keybinds....................|ale-commands| - 7. API..................................|ale-api| - 8. Special Thanks.......................|ale-special-thanks| - 9. Contact..............................|ale-contact| + 8. Commands/Keybinds....................|ale-commands| + 9. API..................................|ale-api| + 10. Special Thanks......................|ale-special-thanks| + 11. Contact.............................|ale-contact| =============================================================================== 1. Introduction *ale-introduction* @@ -162,79 +178,247 @@ for the current buffer. The following languages and tools are supported. -* ASM: 'gcc' -* Ansible: 'ansible-lint' -* Asciidoc: 'proselint' -* Bash: 'shell' (-n flag), 'shellcheck' -* Bourne Shell: 'shell' (-n flag), 'shellcheck' -* C: 'cppcheck', 'gcc', 'clang' -* C++ (filetype cpp): 'clang', 'clangtidy', 'cppcheck', 'cpplint', 'gcc' -* C#: 'mcs' -* Chef: 'foodcritic' -* CMake: 'cmakelint' -* CoffeeScript: 'coffee', 'coffelint' -* Crystal: 'crystal' -* CSS: 'csslint', 'stylelint' -* Cython (pyrex filetype): 'cython' -* D: 'dmd' -* Dart: 'dartanalyzer' -* Dockerfile: 'hadolint' -* Elixir: 'credo', 'dogma' -* Elm: 'elm-make' -* Erlang: 'erlc' -* Fortran: 'gcc' -* Go: 'gofmt', 'go vet', 'golint', 'go build', 'gosimple', 'staticcheck' -* FusionScript: 'fusion-lint' -* Haml: 'hamllint' -* Handlebars: 'ember-template-lint' -* Haskell: 'ghc', 'stack-ghc', 'stack-build', 'ghc-mod', 'stack-ghc-mod', 'hlint', 'hdevtools' -* HTML: 'HTMLHint', 'proselint', 'tidy' -* Java: 'javac' -* JavaScript: 'eslint', 'jscs', 'jshint', 'flow', 'prettier', 'prettier-eslint', 'xo' -* JSON: 'jsonlint' -* Kotlin: 'kotlinc' -* LaTeX (tex): 'chktex', 'lacheck', 'proselint' -* Lua: 'luacheck' -* Markdown: 'mdl', 'proselint', 'vale' -* MATLAB: 'mlint' -* nim: 'nim check' -* nix: 'nix-instantiate' -* nroff: 'proselint' -* Objective-C: 'clang' -* Objective-C++: 'clang' -* OCaml: 'merlin' (see |ale-linter-integration-ocaml-merlin|) -* Perl: 'perl' (-c flag), 'perlcritic' -* PHP: 'hack', 'php' (-l flag), 'phpcs', 'phpmd', 'phpstan' -* Pod: 'proselint' -* Pug: 'pug-lint' -* Puppet: 'puppet', 'puppet-lint' -* Python: 'autopep8', 'flake8', 'isort', 'mypy', 'pylint', 'yapf' -* R: 'lintr' -* ReasonML: 'merlin' -* reStructuredText: 'proselint' -* RPM spec: 'spec' -* Rust: 'rustc' (see |ale-integration-rust|) -* Ruby: 'reek', 'rubocop' -* SASS: 'sasslint', 'stylelint' -* SCSS: 'sasslint', 'scsslint', 'stylelint' -* Scala: 'scalac', 'scalastyle' -* Slim: 'slim-lint' -* SML: 'smlnj' -* Stylus: 'stylelint' -* SQL: 'sqlint' -* Swift: 'swiftlint' -* Texinfo: 'proselint' -* Text: 'proselint', 'vale' -* TypeScript: 'eslint', 'tslint', 'tsserver', 'typecheck' -* Verilog: 'iverilog', 'verilator' -* Vim: 'vint' -* Vim help: 'proselint' -* XHTML: 'proselint' -* XML: 'xmllint' -* YAML: 'swaglint', 'yamllint' +Notes: + +`^` No linters for text or Vim help filetypes are enabled by default. +`!!` These linters check only files on disk. See |ale-lint-file-linters| + +* ASM: `gcc` +* Ansible: `ansible-lint` +* AsciiDoc: `proselint` +* Awk: `gawk` +* Bash: `shell` (-n flag), `shellcheck` +* Bourne Shell: `shell` (-n flag), `shellcheck` +* C: `cppcheck`, `cpplint`!!, `gcc`, `clang`, `clangtidy`!!, `clang-format` +* C++ (filetype cpp): `clang`, `clangcheck`!!, `clangtidy`!!, `cppcheck`, `cpplint`!!, `gcc`, `clang-format` +* C#: `mcs` +* Chef: `foodcritic` +* CMake: `cmakelint` +* CoffeeScript: `coffee`, `coffeelint` +* Crystal: `crystal`!! +* CSS: `csslint`, `stylelint` +* Cython (pyrex filetype): `cython` +* D: `dmd` +* Dart: `dartanalyzer` +* Dockerfile: `hadolint` +* Elixir: `credo`, `dogma`!! +* Elm: `elm-make` +* Erb: `erb`, `erubis` +* Erlang: `erlc`, `SyntaxErl` +* Fortran: `gcc` +* FusionScript: `fusion-lint` +* Go: `gofmt`, `go vet`, `golint`, `gometalinter`!!, `go build`!!, `gosimple`, `staticcheck` +* GraphQL: `gqlint` +* Haml: `haml-lint` +* Handlebars: `ember-template-lint` +* Haskell: `ghc`, `stack-ghc`, `stack-build`!!, `ghc-mod`, `stack-ghc-mod`, `hlint`, `hdevtools` +* HTML: `HTMLHint`, `proselint`, `tidy` +* Idris: `idris` +* Java: `checkstyle`, `javac` +* JavaScript: `eslint`, `jscs`, `jshint`, `flow`, `prettier`, `prettier-eslint`, `prettier-standard`, `standard`, `xo` +* JSON: `jsonlint` +* Kotlin: `kotlinc`, `ktlint` +* LaTeX (tex): `chktex`, `lacheck`, `proselint` +* Lua: `luacheck` +* Markdown: `mdl`, `proselint`, `vale` +* MATLAB: `mlint` +* Nim: `nim check`!! +* nix: `nix-instantiate` +* nroff: `proselint` +* Objective-C: `clang` +* Objective-C++: `clang` +* OCaml: `merlin` (see |ale-ocaml-merlin|) +* Perl: `perl -c`, `perl-critic` +* PHP: `hack`, `langserver`, `php -l`, `phpcs`, `phpmd`, `phpstan`, `phpcbf` +* Pod: `proselint` +* Pug: `pug-lint` +* Puppet: `puppet`, `puppet-lint` +* Python: `autopep8`, `flake8`, `isort`, `mypy`, `pycodestyle`, `pylint`!!, `yapf` +* R: `lintr` +* ReasonML: `merlin` +* reStructuredText: `proselint` +* RPM spec: `rpmlint` +* Ruby: `brakeman`, `rails_best_practices`!!, `reek`, `rubocop`, `ruby` +* Rust: `cargo`!!, `rls`, `rustc` (see |ale-integration-rust|) +* SASS: `sass-lint`, `stylelint` +* SCSS: `sass-lint`, `scss-lint`, `stylelint` +* Scala: `scalac`, `scalastyle` +* Slim: `slim-lint` +* SML: `smlnj` +* Stylus: `stylelint` +* SQL: `sqlint` +* Swift: `swiftlint`, `swiftformat` +* Tcl: `nagelfar`!! +* Texinfo: `proselint` +* Text^: `proselint`, `vale` +* Thrift: `thrift` +* TypeScript: `eslint`, `tslint`, `tsserver`, `typecheck` +* Verilog: `iverilog`, `verilator` +* Vim: `vint` +* Vim help^: `proselint` +* XHTML: `proselint` +* XML: `xmllint` +* YAML: `swaglint`, `yamllint` =============================================================================== -3. Global Options *ale-options* +3. Linting *ale-lint* + +ALE's primary focus is on checking for problems with your code with various +programs via some Vim code for integrating with those programs, referred to +as 'linters.' ALE supports a wide array of programs for linting by default, +but additional programs can be added easily by defining files in |runtimepath| +with the filename pattern `ale_linters/<filetype>/<filename>.vim`. For more +information on defining new linters, see the extensive documentation +for |ale#linter#Define()|. + +Without any configuration, ALE will attempt to check all of the code for every +file you open in Vim with all available tools by default. To see what ALE +is doing, and what options have been set, try using the |:ALEInfo| command. + +Most of the linters ALE runs will check the Vim buffer you are editing instead +of the file on disk. This allows you to check your code for errors before you +have even saved your changes. ALE will check your code in the following +circumstances, which can be configured with the associated options. + +* When you modify a buffer. - |g:ale_lint_on_text_changed| +* When you open a new or modified buffer. - |g:ale_lint_on_enter| +* When you save a buffer. - |g:ale_lint_on_save| +* When the filetype changes for a buffer. - |g:ale_lint_on_filetype_changed| +* If ALE is used to check ccode manually. - |:ALELint| + +In addition to the above options, ALE can also check buffers for errors when +you leave insert mode with |g:ale_lint_on_insert_leave|, which is off by +default. It is worth reading the documentation for every option. + + *ale-lint-file-linters* + +Some programs must be run against files which have been saved to disk, and +simply do not support reading temporary files or stdin, either of which are +required for ALE to be able to check for errors as you type. The programs +which behave this way are documented in the lists and tables of supported +programs. ALE will only lint files with these programs in the following +circumstances. + +* When you open a new or modified buffer. - |g:ale_lint_on_enter| +* When you save a buffer. - |g:ale_lint_on_save| +* When the filetype changes for a buffer. - |g:ale_lint_on_filetype_changed| +* If ALE is used to check ccode manually. - |:ALELint| + +ALE will report problems with your code in the following ways, listed with +their relevant options. + +* By updating loclist. (On by default) - |g:ale_set_loclist| +* By updating quickfix. (Off by default) - |g:ale_set_quickfix| +* By setting error highlights. - |g:ale_set_highlights| +* By creating signs in the sign column. - |g:ale_set_signs| +* By echoing messages based on your cursor. - |g:ale_echo_cursor| +* By showing balloons for your mouse cursor - |g:ale_set_balloons| + +Please consult the documentation for each option, which can reveal some other +ways of tweaking the behaviour of each way of displaying problems. You can +disable or enable whichever options you prefer. + +Most settings can be configured for each buffer. (|b:| instead of |g:|), +including disabling ALE for certain buffers with |b:ale_enabled|. The +|g:ale_pattern_options| setting can be used to configure files differently +based on regular expressions for filenames. For configuring entire projects, +the buffer-local options can be used with external plugins for reading Vim +project configuration files. + + +=============================================================================== +4. Fixing Problems *ale-fix* + +ALE can fix problems with files with the |ALEFix| command. When |ALEFix| is +run, the variable |g:ale_fixers| will be read for getting a |List| of commands +for filetypes, split on `.`, and the functions named in |g:ale_fixers| will be +executed for fixing the errors. + +The |ALEFixSuggest| command can be used to suggest tools that be used to +fix problems for the current buffer. + +The values for `g:ale_fixers` can be a list of |String|, |Funcref|, or +|lambda| values. String values must either name a function, or a short name +for a function set in the ALE fixer registry. + +Each function for fixing errors must accept either one argument `(buffer)` or +two arguments `(buffer, lines)`, representing the buffer being fixed and the +lines to fix. The functions must return either `0`, for changing nothing, a +|List| for new lines to set, or a |Dictionary| for describing a command to be +run in the background. + +Functions receiving a variable number of arguments will not receive the second +argument `lines`. Functions should name two arguments if the `lines` argument +is desired. This is required to avoid unnecessary copying of the lines of +the buffers being checked. + +When a |Dictionary| is returned for an |ALEFix| callback, the following keys +are supported for running the commands. + + `command` A |String| for the command to run. This key is required. + + When `%t` is included in a command string, a temporary + file will be created, containing the lines from the file + after previous adjustment have been done. + + `read_temporary_file` When set to `1`, ALE will read the contents of the + temporary file created for `%t`. This option can be used + for commands which need to modify some file on disk in + order to fix files. + + *ale-fix-configuration* + +Synchronous functions and asynchronous jobs will be run in a sequence for +fixing files, and can be combined. For example: +> + let g:ale_fixers = { + \ 'javascript': [ + \ 'DoSomething', + \ 'eslint', + \ {buffer, lines -> filter(lines, 'v:val !=~ ''^\s*//''')}, + \ ], + \} + + ALEFix +< +The above example will call a function called `DoSomething` which could act +upon some lines immediately, then run `eslint` from the ALE registry, and +then call a lambda function which will remove every single line comment +from the file. + +For convenience, a plug mapping is defined for |ALEFix|, so you can set up a +keybind easily for fixing files. > + + " Bind F8 to fixing problems with ALE + nmap <F8> <Plug>(ale_fix) +< +Files can be fixed automatically with the following options, which are all off +by default. + +|g:ale_fix_on_save| - Fix files when they are saved. + + +=============================================================================== +5. Completion *ale-completion* + +ALE offers some limited support for automatic completion of code while you +type. Completion is only supported via Language Server Protocol servers which +ALE can connect to for linting, which can offer good built-in support for +suggesting completion information. ALE will only suggest symbols for +completion for LSP linters that are enabled. + +NOTE: At the moment, only `tsserver` for TypeScript code is supported for +completion. + +Suggestions will be made while you type after completion is enabled. +Completion can be enabled by setting |g:ale_completion_enabled| to `1`. The +delay for completion can be configured with |g:ale_completion_delay|. ALE will +only suggest so many possible matches for completion. The maximum number of +items can be controlled with |g:ale_completion_max_suggestions|. + + +=============================================================================== +6. Global Options *ale-options* g:airline#extensions#ale#enabled *g:airline#extensions#ale#enabled* @@ -266,6 +450,44 @@ g:ale_change_sign_column_color *g:ale_change_sign_column_color* windows. +g:ale_completion_delay *g:ale_completion_delay* + + Type: |Number| + Default: `100` + + The number of milliseconds before ALE will send a request to a language + server for completions after you have finished typing. + + See |ale-completion| + + +g:ale_completion_enabled *g:ale_completion_enabled* + + Type: |Number| + Default: `0` + + When this option is set to `1`, completion support will be enabled. + + See |ale-completion| + + +g:ale_completion_max_suggestions *g:ale_completion_max_suggestions* + + Type: |Number| + Default: `50` + + The maximum number of items ALE will suggest in completion menus for + automatic completion. + + Setting this number higher will require more processing time, and may + suggest too much noise. Setting this number lower will require less + processing time, but some suggestions will not be included, so you might not + be able to see the suggestions you want. + + Adjust this option as needed, depending on the complexity of your codebase + and your available processing power. + + g:ale_echo_cursor *g:ale_echo_cursor* Type: |Number| @@ -285,8 +507,8 @@ g:ale_echo_msg_error_str *g:ale_echo_msg_error_str* Default: `Error` The string used for error severity in the echoed message. - Note |`g:ale_echo_cursor`| should be set to 1 - Note |`g:ale_echo_msg_format`| should contain the `%severity%` handler + Note |g:ale_echo_cursor| should be set to 1 + Note |g:ale_echo_msg_format| should contain the `%severity%` handler g:ale_echo_msg_format *g:ale_echo_msg_format* @@ -298,7 +520,7 @@ g:ale_echo_msg_format *g:ale_echo_msg_format* error message itself, and it can contain the following handlers: - `%linter%` for linter's name - `%severity%` for the type of severity - Note |`g:ale_echo_cursor`| should be setted to 1 + Note |g:ale_echo_cursor| should be setted to 1 g:ale_echo_msg_warning_str *g:ale_echo_msg_warning_str* @@ -307,8 +529,8 @@ g:ale_echo_msg_warning_str *g:ale_echo_msg_warning_str* Default: `Warning` The string used for warning severity in the echoed message. - Note |`g:ale_echo_cursor`| should be set to 1 - Note |`g:ale_echo_msg_format`| should contain the `%severity%` handler + Note |g:ale_echo_cursor| should be set to 1 + Note |g:ale_echo_msg_format| should contain the `%severity%` handler g:ale_emit_conflict_warnings *g:ale_emit_conflict_warnings* @@ -396,7 +618,7 @@ g:ale_history_log_output *g:ale_history_log_output* g:ale_keep_list_window_open *g:ale_keep_list_window_open* - + *b:ale_keep_list_window_open* Type: |Number| Default: `0` @@ -405,7 +627,7 @@ g:ale_keep_list_window_open *g:ale_keep_list_window_open* the loclist or quicfix windows will be closed automatically when there are no warnings or errors. - See: |g:ale_open_list| + See |g:ale_open_list| g:ale_list_window_size *g:ale_list_window_size* @@ -445,6 +667,11 @@ g:ale_lint_on_enter *g:ale_lint_on_enter* files have been changed outside of Vim. If a file is changed outside of Vim, it will be checked when it is next opened. + A |BufWinLeave| event will be used to look for the |E924|, |E925|, or |E926| + errors after moving from a loclist or quickfix window to a new buffer. If + prompts for these errors are opened after moving to new buffers, then ALE + will automatically send the `<CR>` key needed to close the prompt. + g:ale_lint_on_filetype_changed *g:ale_lint_on_filetype_changed* @@ -598,13 +825,17 @@ g:ale_maximum_file_size *g:ale_maximum_file_size* g:ale_open_list *g:ale_open_list* - - Type: |Number| + *b:ale_open_list* + Type: |Number| or |String| Default: `0` - When set to `1`, this will cause ALE to automatically open a window for - the loclist (|lopen|) or for the quickfix list instead if - |g:ale_set_quickfix| is `1`. (|copen|) + When set to `1`, this will cause ALE to automatically open a window for the + loclist (|lopen|) or for the quickfix list instead if |g:ale_set_quickfix| + is `1`. (|copen|) + + When set to `'on_save'`, ALE will only open the loclist after buffers have + been saved. The list will be opened some time after buffers are saved and + any linter for a buffer returns results. The window will be kept open until all warnings or errors are cleared, including those not set by ALE, unless |g:ale_keep_list_window_open| is set @@ -689,9 +920,12 @@ g:ale_set_quickfix *g:ale_set_quickfix* Type: |Number| Default: `0` - When this option is set to `1`, the |quickfix| list will be populated with any - warnings and errors which are found by ALE, instead of the |loclist|. The - loclist will never be populated when this option is on. + When this option is set to `1`, the |quickfix| list will be populated with + any problems which are found by ALE, instead of the |loclist|. The loclist + will never be populated when this option is on. + + Problems from every buffer ALE has checked will be included in the quickfix + list, which can be checked with |:copen|. Problems will be de-duplicated. g:ale_set_signs *g:ale_set_signs* @@ -856,7 +1090,7 @@ b:ale_warn_about_trailing_whitespace *b:ale_warn_about_trailing_whitespace* ------------------------------------------------------------------------------- -3.1. Highlights *ale-highlights* +6.1. Highlights *ale-highlights* ALEError *ALEError* @@ -950,79 +1184,7 @@ ALEWarningSign *ALEWarningSign* =============================================================================== -4. Fixing Problems *ale-fix* - -ALE can fix problems with files with the |ALEFix| command. When |ALEFix| is -run, the variable |g:ale_fixers| will be read for getting a |List| of commands -for filetypes, split on `.`, and the functions named in |g:ale_fixers| will be -executed for fixing the errors. - -The |ALEFixSuggest| command can be used to suggest tools that be used to -fix problems for the current buffer. - -The values for `g:ale_fixers` can be a list of |String|, |Funcref|, or -|lambda| values. String values must either name a function, or a short name -for a function set in the ALE fixer registry. - -Each function for fixing errors must accept either one argument `(buffer)` or -two arguments `(buffer, lines)`, representing the buffer being fixed and the -lines to fix. The functions must return either `0`, for changing nothing, a -|List| for new lines to set, or a |Dictionary| for describing a command to be -run in the background. - -Functions receiving a variable number of arguments will not receive the second -argument `lines`. Functions should name two arguments if the `lines` argument -is desired. This is required to avoid unnecessary copying of the lines of -the buffers being checked. - -When a |Dictionary| is returned for an |ALEFix| callback, the following keys -are supported for running the commands. - - `command` A |String| for the command to run. This key is required. - - When `%t` is included in a command string, a temporary - file will be created, containing the lines from the file - after previous adjustment have been done. - - `read_temporary_file` When set to `1`, ALE will read the contents of the - temporary file created for `%t`. This option can be used - for commands which need to modify some file on disk in - order to fix files. - - *ale-fix-configuration* - -Synchronous functions and asynchronous jobs will be run in a sequence for -fixing files, and can be combined. For example: -> - let g:ale_fixers = { - \ 'javascript': [ - \ 'DoSomething', - \ 'eslint', - \ {buffer, lines -> filter(lines, 'v:val !=~ ''^\s*//''')}, - \ ], - \} - - ALEFix -< -The above example will call a function called `DoSomething` which could act -upon some lines immediately, then run `eslint` from the ALE registry, and -then call a lambda function which will remove every single line comment -from the file. - -For convenience, a plug mapping is defined for |ALEFix|, so you can set up a -keybind easily for fixing files. > - - " Bind F8 to fixing problems with ALE - nmap <F8> <Plug>(ale_fix) -< -Files can be fixed automatically with the following options, which are all off -by default. - -|g:ale_fix_on_save| - Fix files when they are saved. - - -=============================================================================== -5. Integration Documentation *ale-integrations* +7. Integration Documentation *ale-integrations* Linter and fixer options are documented in individual help files. See the table of contents at |ale-contents|. @@ -1055,7 +1217,7 @@ ALE will use to search for Python executables. =============================================================================== -6. Commands/Keybinds *ale-commands* +8. Commands/Keybinds *ale-commands* ALEFix *ALEFix* @@ -1071,6 +1233,7 @@ ALEFixSuggest *ALEFixSuggest* See |ale-fix| for more information. + *:ALELint* ALELint *ALELint* Run ALE once for the current buffer. This command can be used to run ALE @@ -1140,6 +1303,7 @@ ALEDetail *ALEDetail* A plug mapping `<Plug>(ale_detail)` is defined for this command. + *:ALEInfo* ALEInfo *ALEInfo* ALEInfoToClipboard *ALEInfoToClipboard* @@ -1158,9 +1322,9 @@ ALEInfoToClipboard *ALEInfoToClipboard* =============================================================================== -7. API *ale-api* +9. API *ale-api* -ale#Queue(delay, [linting_flag]) *ale#Queue()* +ale#Queue(delay, [linting_flag, buffer_number]) *ale#Queue()* Run linters for the current buffer, based on the filetype of the buffer, with a given `delay`. A `delay` of `0` will run the linters immediately. @@ -1171,6 +1335,15 @@ ale#Queue(delay, [linting_flag]) *ale#Queue()* is `'lint_file'`, then linters where the `lint_file` option is set to `1` will be run. Linters with `lint_file` set to `1` are not run by default. + An optional `buffer_number` argument can be given for specifying the buffer + to check. The active buffer (`bufnr('')`) will be checked by default. + + *ale-cool-down* + If an exception is thrown when queuing/running ALE linters, ALE will enter + a cool down period where it will stop checking anything for a short period + of time. This is to prevent ALE from seriously annoying users if a linter + is broken, or when developing ALE itself. + ale#engine#CreateDirectory(buffer) *ale#engine#CreateDirectory()* @@ -1262,7 +1435,10 @@ ale#linter#Define(filetype, linter) *ale#linter#Define()* search by in future before being passed on to the |loclist|, etc. - This argument is required. + This argument is required, unless the linter is an + LSP linter. In which case, this argument must not be + defined, as LSP linters handle diangostics + automatically. See |ale-lsp-linters|. The keys for each item in the List will be handled in the following manner: @@ -1283,9 +1459,27 @@ ale#linter#Define(filetype, linter) *ale#linter#Define()* `end_lnum` - An optional end line number. This key can set along with `end_col` for highlighting multi-line problems. - `bufnr` - The buffer number should match the buffer - being checked, and this value will default to - the buffer being checked. + `bufnr` - This key represents the buffer number the + problems are for. This value will default to + the buffer number being checked. + + The `filename` key can be set instead of this key, + and then the eventual `bufnr` value in the final + list will either represent the number for an open + buffer or `-1` for a file not open in any buffer. + `filename` - An optional filename for the file the + problems are for. This should be an absolute path to + a file. + + Problems for files which have not yet been opened + will be set in those files after they are opened + and have been checked at least once. + + Temporary files in directories used for Vim + temporary files with `tempname()` will be asssumed + to be the buffer being checked, unless the `bufnr` + key is also set with a valid number for some other + buffer. `vcol` - Defaults to `0`. `type` - Defaults to `'E'`. `nr` - Defaults to `-1`. @@ -1393,10 +1587,47 @@ ale#linter#Define(filetype, linter) *ale#linter#Define()* be set automatically to `0`. The two options cannot be used together. + *ale-lsp-linters* + `lsp` A |String| for defining LSP (Language Server Protocol) + linters. + + This argument may be omitted or `''` when a linter + does not represent an LSP linter. + + When this argument is set to `'stdio'`, then the + linter will be defined as an LSP linter which keeps a + process for a language server runnning, and + communicates with it directly via a |channel|. + + When this argument is not empty, then the + `project_callback` and `language_callback` arguments + must also be defined. + + LSP linters handle diagonstics automatically, so + the `callback` argument must not be defined. + + `project_callback` A |String| or |Funcref| for a callback function + accepting a buffer number. A |String| should be + returned representing the path to the project for the + file being checked with the language server. If an + empty string is returned, the file will not be + checked at all. + + This argument must only be set if the `lsp` argument + is also set to a non-empty string. + + `language_callback` A |String| or |Funcref| for a callback function + accepting a buffer number. A |String| should be + returned representing the name of the language being + checked. + + This argument must only be set if the `lsp` argument + is also set to a non-empty string. + `aliases` A |List| of aliases for the linter name. - This option can be set with alternative names for - for selecting the linter with |g:ale_linters|. This + This argument can be set with alternative names for + selecting the linter with |g:ale_linters|. This setting can make it easier to guess the linter name by offering a few alternatives. @@ -1499,13 +1730,13 @@ ALELint *ALELint-autocmd* echoing messges. =============================================================================== -8. Special Thanks *ale-special-thanks* +10. Special Thanks *ale-special-thanks* Special thanks to Mark Grealish (https://www.bhalash.com/) for providing ALE's snazzy looking ale glass logo. Cheers, Mark! =============================================================================== -9. Contact *ale-contact* +11. Contact *ale-contact* If you like this plugin, and wish to get in touch, check out the GitHub page for issues and more at https://github.com/w0rp/ale @@ -1513,10 +1744,8 @@ page for issues and more at https://github.com/w0rp/ale If you wish to contact the author of this plugin directly, please feel free to send an email to devw0rp@gmail.com. - Please drink responsibly, or not at all, which is ironically the preference of w0rp, who is teetotal. - vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl: |