sponsor Vim development Vim logo Vim Book Ad

ALE - Asynchronous Lint Engine : Lint while you type in Vim

 script karma  Rating 534/165, Downloaded by 8696  Comments, bugs, improvements  Vim wiki

created by
w0rp
 
script type
utility
 
description
The latest version is available here: https://github.com/w0rp/ale

NOTE: New versions are no longer uploaded here. Please download releases from the GitHub releases page instead.

This plugin adds the ability to automatically lint code while you edit in Vim. This plugin requires Vim 8.0 or above to run, or NeoVim, as it requires the asynchronous job and timer features. Errors to echo in a status line, signs, and loclist items should appear whenever files are opened or text is changed in a buffer automatically for all supported languages and tools.

See the GitHub page for the current list of supported languages and tools.
 
install details
Copy the contents of the archive somewhere in your Vim runtimepath, or install the plugin via the GitHub link for the latest version with your preferred Vim script installation tool.
 

rate this script Life Changing Helpful Unfulfilling 
script versions (upload new version)

Click on the package to download.

package script version date Vim version user release notes
vim-ale.1.7.1.zip 1.7.1 2018-02-25 8.0 w0rp ## Bugs Fixed

* `rustfmt` will now apply project settings correctly by using stdin and stdout instead. #1254
* The extra arguments are now passed to `clang-check` correctly. #1255
* ALE now supports running commands on Windows when the shell is PowerShell. #1298
* Rust errors will now use the correct column numbers instead of byte offsets. #1322
* `isort` configuration files will now be detected more accurately by changing the working directory instead of setting the configuration file. #1330
vim-ale-1.7.0.zip 1.7.0 2017-12-19 8.0 w0rp ## Bugs Fixed

* ALE will now find files relative to buffers in cygwin. #1180 #1181
* The temporary file for TSLint was being mentioned sometimes in the quickfix list.  #1210
* ALE will now suppress trailing whitespace warnings for `ansible-lint` when the option is on. #1216
* Relative and absolute paths are now resolved better on Windows. #1210
* ALE no longer moves the cursor slightly when briefly escaping insert mode and echoing a message. #1228

## New Features

* ALE linting can now be toggled for particular buffers. See `:help ALEToggleBuffer`. #817
* Problems reported by ALE can now be removed with `ALEReset` or `ALEResetBuffer`. #719
* `b:ale_fix_on_save` can now be used for controlling fixing on save for specific buffers. #857
* Fixer functions can now be chained, much like linters. #1086
* Fixer functions can now specify callbacks for post-processing command output.
* Reading the buffer via stdin can now be disabled for fixer commands with `'read_buffer': 0`, just like linters.
* `b:ale_fixers` can now be set to a `List`. #1108
* `b:ale_linters` can now be set to a `List`. #1108
* `b:ale_linters` can now be set to `'all'`. #1108
* `b:ale_linter_aliases` can now be set to a `List`. #1108
* ALE will now show the echoed severity for type `'I'` problems as `'Info'`.
* ALE now supports formatting echo messages with error codes. #852
* Several linters have now been updated so the error codes are configurable. #852
* The echo message format can now be configured differently for different buffers. See `:help b:ale_echo_msg_format`
* Messages for loclist and the quickfix list can now be formatted like echoed messages. See  `:help g:ale_loclist_msg_format` #1069 #852
* ALE linters can now be configured to only be enabled explicitly. See `:help g:ale_linters_explicit` #1128
* `:ALEDetail` will now show messages in a preview window. #757
* Line highlights will now be set when signs are disabled. #741
* ALE now supports jumping to definitions for LSP and tsserver linters. See `:help ale-go-to-definition`.
* Warnings about trailing blank lines can be disabled for some linters. See `:help g:ale_warn_about_trailing_blank_lines`.
* Failing executable checks may now be cached with `let g:ale_cache_executable_check_failures = 1` #1176
* An autocmd command `ALELintPre` has been added for running code just before ALE starts linting.

## Other Changes

* ALE will no longer modify `runtimepath` when `g:ale_emit_conflict_warnings` is set to `0`.  #1049
* ALE should no longer mess with folds when `ALELint` autocmd commands are set. #1062
* ALE will no longer send an `id` `key` for the LSP notification messages at all, instead of `v:null`. #1110
* Output will now be ignored for fixer commands which output only whitespace.
* When ALE deletes lines as the result of fixing files, the deleted lines will be put in the black hole register. #1165
* `tsserver` completions will now be requested again after completion is done only if the cursor moves, rather than waiting for 100ms. #1041
* The `perl` linter is now disabled by default, as it can execute malicious code. #1186
* The `ALELint` autocmd has been renamed to `ALELintPost`, but the old commands will still be run until version 2.0. On version 2.0, `ALELint` commands will probably be removed.
* ALE will now look for `mypy.ini` files for finding Python project roots.
* ALE will now look for `venv` for finding virtualenv directories by default. #1237
* Cursor messages can now be disabled while Vim is running.
* ALE now cleans up buffer data when buffers are deleted instead of unloaded, so the quickfix list can be maintained.

## New Linters

* AsciiDoc - `alex` #1220, `redpen` #1142, `write-good` #643 #811
* API Blueprint - `drafter` #1152
* Clojure - `joker` #1133
* Dafny - `dafny` #1093
* Dart - `dart_language_server` #1006
* GLSL - `glslls` #1179
* GraphQL - `eslint`  #1169
* HTML - `alex` #1220, `write-good` #643 #811
* LaTeX - `alex` #1220, `redpen` #1142, `vale` #1230, `write-good` #643 #811
* LESS - `lessc` #1103, `stylelint` #510
* mail - `alex` #1220, `proselint` #1037, `vale` #1044
* Markdown - `alex` #1220, `redpen`  #1137, `write-good` #643 #811
* nroff - `alex` #1220, `write-good` #643 #811
* OCaml - `ols` #1110
* PHP - `phan` #1026
* Pod - `alex` #1220, `write-good` #643 #811
* proto - `protoc-gen-lint` #1098
* Python - `prospector` #565 #1183, `pyflakes` #516, `PyLS` #1097
* Solidarity - `solhint` #1192
* ReasonML - `ols` #1110
* reStructuredText - `alex` #1220, `redpen` #1142, `rstcheck` #1090, `vale` #1230, `write-good` #643 #811
* Re:VIEW - `redpen` #1142
* Terraform - `tflint` #1046
* Texinfo - `alex` #1220, `write-good` #643 #811
* text - `alex` #1220, `redpen` #1142, `write-good` #643 #811
* Vim help - `alex` #1220, `write-good` #643 #811
* XHTML - `alex` #1220, `write-good` #643 #811

## New Fixers

* Elixir - `mix format` #1017
* Go - `goimports` #1123
* Hack - `hackfmt` #1053
* Haskell - `brittany`  #1174, `hfmt` #1027
* Java - `google-java-format` #1209
* JavaScript - `importjs` #1191
* ReasonML - `refmt` #1059
* Rust - `rustfmt` #1025
* Shell - `shfmt` #1083

## Linter Enhancements

* ALE now captures problems for other files for GCC, clang, and related tools. #1023
* The `rubocop` and `haml-lint` configuration files will be now used for `ham-lint` automatically. #1047
* The `shellcheck` linter will now use `-x` and follow sourced files when checking for errors. #491
* The `shellcheck` linter now uses the type `'I'` for notes. #1122
* The `phpcs` linter will now include the error code in the message. #1009
* Errors for missing ESLint configuration files can now be disabled. See `:help g:ale_javascript_eslint_suppress_missing_config`. #971
* `cargo check` and `cargo check --all-targets` will now automatically be used when `cargo` is new enough. `g:ale_rust_cargo_use_check` or `g:ale_rust_cargo_check_all_targets` can be set to disable either.  #626
* The `phpmd` executable can now be configured, and error checking should be more reliable. #1076
* The `flow` linter will now include more information for errors in the `:ALEDetail` message. #946
* Error codes can now be configured for messages from ESLint.  #852
* Error codes can now be configured for messages from TSLint.  #852
* Error codes can now be configured for messages from flake8.  #852
* Error codes can now be configured for messages from rubocop.  #852
* Error codes can now be configured for messages from ansible-lint.  #852
* Error codes can now be configured for messages from cpplint.  #852
* Error codes can now be configured for messages from shellcheck.  #852
* Error codes can now be configured for messages from pylint.  #852
* Error codes can now be configured for messages from checkmake. #852 #1135
* Error codes can now be configured for messages from checkstyle. #852
* Error codes can now be configured for messages from pycodestyle.  #852
* Error codes can now be configured for messages from csslint.  #852
* Error codes can now be configured for messages from jscs.  #852
* Error codes can now be configured for messages from luacheck.  #852
* Error codes can now be configured for messages from mcs and mcsc.  #852
* Error codes can now be configured for messages from nimcheck.  #852
* Error codes can now be configured for messages from reek.  #852
* Error codes can now be configured for messages from slim-lint.  #852
* Error codes can now be configured for messages from stylelint.  #852
* Error codes can now be configured for messages from swaglint.  #852
* Error codes can now be configured for messages from swiftlint.  #852
* Error codes can now be configured for messages from tflint.  #852
* Error codes can now be configured for messages from foodcritic.  #852
* `msgid` values (like `E0103`) are no longer reported for pylint, which aren't human-readable.  #852
* pycodestyle errors and warnings are now style errors and warnings.  #852
* Rails-specific syntax will now automatically be stripped from `erb` files. #580 #1114
* The GCC executable for ASM may now be configured. #1138
* Options can now be configured for `iverilog`. #1143
* The `javac` linter now includes test source paths for test files. #859
* The `javac` linter now includes jaxb source paths when available. #859
* Problems in other files will now appear in lists for the `gobuild` linter. #1154
* The `foodcritic` linter has been overhauled to check only files on disk with better error messages. #1151
* `flow` will no longer check files with home directory configuration files by default, which can eat all of your CPU and RAM. Set `g:ale_javascript_flow_use_home_config` to `1` to use home directory configuration files, if you really must. #783
* Prettier text will now be saved for detailed messages for Haskell linters. #918
* Different toolchains for `rls` can now be selected. See `:help g:ale_rust_rls_toolchain`  #1166
* The `ruby` executable is now configurable. #1168
* Warnings about trailing blank lines can be disabled for `flake8` and `pycodestyle`.
* The `phpcbf` linter should now work properly, apparently. #1188
* The `puppet` linter now parses output which doesn't include column numbers.  #1182
* The executable for `perl` is now properly escaped.
* `gometalinter` can now be configured to report problems from other files. See `:help g:ale_go_gometalinter_lint_package` #1156
* The `php` linter now handles error output from PHP 7.2, which has slightly different output.
* The `vale` linter now parses end column numbers, for better highlighting.
* The `erb` linter now works on puppet style templates.  #1221
* The `mcsc` linter paths and escaping should now work on Windows.
* The `ember-template-lint` linter will now parse line and column numbers for fatal errors if they are included.
* Some of the options for `rustc` can now be configured, so `-Z no-trans` can be replaced with something else. #1031

## Fixer Enhancements

* The `prettier` fixer will now use the `--stdin-filepath` argument when the version is 1.6.0 or greater. #1095
* The `prettier_eslint` fixer will now use the `--stdin-filepath` argument when the version is 4.4.0 or greater. #1095
* The `prettier_eslint` fixer will now use the `--eslint-config-path` argument only when the version is 4.2.0 or greater. The old legacy option has been removed, as it is no longer needed. #1095
* `'prettier-eslint'` may now be used in place of `'prettier_eslint'` for fixers.
* `'prettier-standard'` may now be used in place of `'prettier_standard'` for fixers.
* `--fix-to-stdout` is now used for better configuration detection for `eslint_d` where available. #988
* `--fix-dry-run` is now used for ESLint 4.9.0 and up for fixing files with better configuration file detection. #988
vim-ale-1.6.2.zip 1.6.2 2017-11-21 8.0 w0rp ## Bugs Fixed

* ALE's parsing for `stack-build` has been updated so it will parse errors with leading spaces, as returned by newer versions. #1124
* LSP linters on Windows weren't handling filename URIs correctly. This has been fixed. #1149
vim-ale-1.6.1.zip 1.6.1 2017-11-09 8.0 w0rp ## Bugs Fixed

* ALE will now read `cargo` output from either `stdout` or `stderr`, to support more versions of `cargo` #1045
* ALE will no longer try to lint files named `.` #1048
* `ash` and `dash` are now supported for shell linters #1051
* Completions will now not be requested shortly after `CompleteDone`, fixing a bug where the menu kept re-opening #1041
* `gosimple` and `staticcheck` will now check only the actual files on disk, because that is all they support. #936
* Running the `php` linter will no longer write to the PHP error log. #1072
* The `erlc` linter is now supported on Windows. #1071
* Python fixers weren't working on Windows since version 1.6.0. This has been fixed. #1081
* When combined with some other plugins in NeoVim, ALE would sometimes through exceptions when trying to stop jobs. These errors are now silenced. #1058
* The `javac` linter wasn't handling errors from other files correctly. This has been fixed. #1061
* All LSP and `tsserver` messages which include a buffer's text data will now include a final line feed, so tools which complain about missing newline characters will be quiet. #1085
* Message handling for LSP linters wasn't working in NeoVim, due to improper handling of LSP messages. This has been fixed. #1006
* ALE was reporting `no-implicit-dependencies` for most files with in TSLint's latest version, because TSLint does not fully support checking for errors while you type yet. These errors have been silenced for now. #1101
vim-ale-1.6.0.zip 1.6.0 2017-10-23 8.0 w0rp ## Bugs Fixed

- ALE wasn't checking buffers on enter in some cases. This has been fixed. #734
- The regular expression for parsing `phpmd` errors has been updated, so errors may be handled better in some cases. #1032

## New Features

- The maximum number of signs ALE will set can now be configured. See `:help g:ale_max_signs` #965
- The delay before echoing a message can now be configured. See `:help g:ale_echo_delay` #965

## Other Changes

- Linters and some other processing will no longer be run when `v:exiting` is set in NeoVim 0.2.0 and above. #904
- Linters will no longer be run on `:wq` or `:x`, which did nothing useful. #904

## New Linters

- C - `clang-tidy` #827
- C# - `mcsc` (See `:help `ale-cs-mcsc`) #952
- GLSL - `glslang` #914
- LLVM IR - llc #979
- Solidity - solium #929
- Thrift - `thrift` #892
- Markdown - `remark-lint` #1010

## New Fixers

- `prettier` for TypeScript, CSS, SCSS, LESS, and JSON #910 #1018
- `elm-format` #916
- `gofmt` #970
- `trim_whitespace` #991
- `tslint` #1001

## Linter Enhancements

- ALE will now prefer to use `prettier_d` for `prettier`, if it is installed. #885
- The `javac` linter will now include paths based on gradle build commands. #889
- CM files are now used for smlnj where available. See `:help ale-sml-smlnj` #884
- TSLint output can now be ignored for empty files. See `:help g:ale_typescript_tslint_ignore_empty_files`
- The `brakeman` linter will now report problems for other files in quickfix and loclist.
- The `slim-lint` linter will now use rubocop configuration files. #903 #942
- The `shellcheck` linter now arranges the arguments in such a way that manually changing the dialect is possible. #949
- The `phpstan` configuration file can now be configured. #969
- `$VIRTUAL_ENV` will be used for running Python tools when no local directories can be found. #990
- The `luacheck` linter will now respect the `g:ale_warn_about_trailing_whitespace` option. #968
- ALE will now tell you how to configure `scalastyle` when no configuration file was found. #977

## Fixer Enhancements

- Configuration files can now be detected for `prettier`. See `:help g:ale_javascript_prettier_use_local_config` #886
- The `prettier-eslint` fixer now uses the eslint configuration file by default, which will yield better results, but may break things for some users. `See :help g:ale_javascript_prettier_eslint_legacy` #854
- The `yapf` fixer should now run local virtualenv executables on Windows.
- The `standard` fixer can now be used even if the linter is never loaded.
vim-ale-1.5.2.zip 1.5.2 2017-10-03 8.0 w0rp ## Bugs Fixed

* ALE was sometimes reporting errors when trying to open empty list windows. This has been fixed. #920
* `staticcheck` and `gosimple` now capture both output streams so they will report errors where they didn't. #921
* ALE wasn't changing the sign column color any more when that option was on since 1.5.0. This has been fixed. #924
* ALE stopped removing signs properly when multiple signs ended up lying on a single line, since 1.5.0. This has been fixed. #964
* ALE was using the wrong ESLint configuration files in some cases. This has been fixed. #922
* `eslint --fix` now uses `-c` instead of `--config` for specifying the configuration file, which apparently works better in some versions. #951
vim-ale-1.5.1.zip 1.5.1 2017-09-08 8.0 w0rp ## Bugs Fixed

* ALE will now detect the shell dialect for `shellcheck` by parsing hashbang (`#!`) lines. #869
* `pycodestyle` is now disabled by default, as it is also installed when you install `flake8`. #888
* ALE now uses `node.exe` instead of `node` to execute Node.js scripts on Windows, and the path can be configured if needed. See `:help g:ale_windows_node_executable_path` #895
* ALE will no longer lint a file when the filetype is initially set if `g:ale_lint_on_enter` is set to `0`. #505
* ALE should no longer show linting results in ctrlp-funky windows. #891
* Since version 1.5.0, ALE wasn't closing the loclist or quickfix windows most of the time. This has been fixed. #899 #912
* Since version 1.5.0, `tsserver` integration was broken due to a bug in NeoVim. A workaround has been added to fix this issue in ALE. #907
vim-ale-1.5.0.zip 1.5.0 2017-08-28 8.0 w0rp ## Bugs Fixed

- ALE sometimes didn't remove highlights now and again. This has been fixed. #697
- `eslint --fix` needed to be executed with `node` on Windows when installed via `create-react-app`. This has been fixed. #775
- The GCC error handler was ignoring errors without column numbers. This has been fixed. #795
- `scalac` was being run for SBT files with the filetype `scala.sbt`. Now `scalac` is not run for SBT files. #804
- Many linters which expect JSON output now ignore output which isn't JSON. #810
- ALE was not handling syntax errors from `tsserver`. This has been fixed. #798
- ALE didn't check files some of the time when restoring multiple windows from a saved session. This has been fixed. #734
- When ALE wrote files with `fileformat=dos`, carriage returns were not included. This has been fixed. #823
- Now when selections are active when loclist or quickfix windows are opened, the selection will be reset. #788
- `flake8` wasn't parsing errors if you configured the format option in configuration files. Now the format is always explicitly set in the command, so it works. #837
- The `rubocop` fixer now uses the same options that the linter is configured with. #841
- Jumping through problems didn't work in some cases with blank lines. This has been fixed. #848
- If problems were kept from previous linter runs, like a `lint_file` linter, ALE would not downgrade signs in the sign column. This has been fixed. #825

## New Features
- ALE now comes with LSP (Language Server Protocol) support, for checking files with language servers. See `:help ale-lsp-linters` for documentation on how LSP linters can be defined. #517
- ALE now offers support for code completion while you type for TypeScript code via `tsserver`. See `:help ale-completion`
- `:ALEFixSuggest` will now suggest tools for fixing problems in a new window, instead of a long echo message.
- ALE will now stop checking buffers for a period of time when exceptions are thrown. See `:help ale-cool-down` #468
- ALE now supports running Python executables from virtualenv directories on Windows. #729
- ALE will now remove any problems previously set when linters are disabled, removed, or when the filetype changes.
- Buffer-local settings can now be set with `g:ale_pattern_options` by using names starting with `&`.
- ALE will now detect Python project roots based on common configuration files, in addition to looking upwards to find the first directory without an `__init__.py` file. #755
- ALE can now be configured to open quickfix or loclist windows only when files are saved. See `:help g:ale_open_list` #271
- Buffer local options `b:ale_open_list` and `b:ale_keep_list_window_open` are now supported. #271
- `ALEInfo` will now print the results of executable checks for linters, which should help you figure out why a linter might not be running.

## New Linters
- Dart - `dartanalyzer` #308
- Erlang - `SyntaxErl` #774
- eruby - `erubis` #865
- GraphQL - `gqlint` #863
- Idris - `idris` #838
- PHP - `langserver` #517, `phpstan` #772
- Python - `pycodestyle` #872
- R - `lintr` #182
- Ruby - `rails_best_practices` #751
- Rust - `rls` #517
- Scala - `scalastyle` #766
- Stylus - `stylelint` #178
- Tcl - `nagelfar` #821
- YAML - `swaglint` #771

## New Fixers
- C, C++ - `clang-format` #873
- CSS, SASS, SCSS, stylus - `stylelint` #657 #813
- JavaScript - `prettier-standard` #702
- JavaScript - `standard` #781
- PHP - `phpcbf` #862
- Puppet - `puppet-lint` #701
- Swift - `swiftformat` #842

## Linter Enhancements
- All C and C++ linters executable paths can now be configured. #711
- The `elm-make` linter now includes end line and column numbers for highlights. #699
- The `verilator` linter's options can now be configured. #698
- The `pug-lint` linter now detects `node_modules` executables, like other linters, and supports the same options as most other linters. https://github.com/w0rp/ale/commit/79e8e063af1cf7a72ec42075f4eed30aa69607e8
- The `perlcritic` linter now supports more options and will automatically load configuration files. See `:help ale-perl-perlcritic-options` #675
- The `luacheck` linter now includes the error codes in the message. #717
- The `hadolint` linter can now be run via a Docker image. #720
- `stylelint` linters will now print exceptions thrown by `stylelint`, including missing configuration files.
- The `gometalinter` linter's executable can now be configured.
- The `jscs` linter can now be used with older versions of jscs. #737
- The `rubocop` linter now works with older versions of rubocop. #339 #738
- The `rubocop` linter now includes end column numbers for better error highlighting. #738
- The `rubocop` linter now includes the error type in the error messages. #820
- The `clang-check` linter now uses some additional arguments to avoid generating .plist files if no build directory is set. #703
- The `hlint` linter now uses type `I` for suggestions. #710
- The `hlint` linter now includes end line and column numbers for better highlighting. #710
- The `hdevtools` linter's options and executable can now be configured. #799
- The `ghc-mod` linter will now map the temporary file for better error messages. #846
- The rule name is now included in the messages for tslint problems.
- The `SyntaxErl` linter will now include the basename option when available. #860 #861
- Warnings about files ignored by ESLint can now be disabled. #836
- Some `Vint` problems will be highlighted better.

## Fixer Enhancements
- The `yapf` fixer now only sets `--no-local-style` if a configuration file is detected. #786
vim-ale-1.4.1.zip 1.4.1 2017-07-22 8.0 w0rp ## Notes
- From this version and onward, ALE remembers the full output of recent commands by default, which helps with filing bug reports and fixing issues. See `:help g:ale_history_log_output` for more information.

## Bugs Fixed
- When fixers like `yapf` failed, they were removing all of the lines in files. This has been fixed. #706
- The `brakeman` linter was throwing errors when no output was returned. This has been fixed. #716
- `ansible-lint` was reporting errors from other files. This has been fixed. #216
- ALE wasn't setting the configuration file when fixing files with `rubocop`. Now it does. #732
- The `ghc` linter was showing warning as errors. This has been fixed. #710
- The `flow` linter didn't support older versions of flow. This has been fixed. #735
- Rust linters should now work on Windows. They didn't before, due to how paths were handled. #736
- ALE wasn't checking files on save if it also tried to fix files on save, and no changes were made. This has been fixed. #730
- When the shell was set to `fish`, some ALE commands didn't work. Now `/bin/sh` will be used instead when the shell is set to fish. #749
- Errors when ALE is unable to set signs will now be silenced. #560 #763
vim-ale-1.4.0.zip 1.4.0 2017-06-27 8.0 w0rp ## Bugs Fixed
- Escaping of strings for the shell on Windows has been fixed in a major way. Safe strings are passed on verbatim. Strings with spaces are quoted, and percents and quotes are doubled. All other strings have characters with special meanings escaped with carets (`^`).
- ALE was checking files when `g:ale_run_on_insert_leave` was set to `1`, when it should only check buffers. This has been fixed.
- ALE now uses the `BufWinEnter` event for `g:ale_lint_on_enter` instead of `BufEnter`, which should result in files only being checked when they need to be, and prevent problems with checking files again when moving across split windows. `FileChangedShellPost` is used to check if files are changed outside of Vim. If they are, then the `BufEnter` event will be used to check the file again.
- When `g:ale_open_list` is set, ALE will now allow multiple loclist windows to be opened. #461
- ALE wasn't finding errors for Flow files when Flow returned relative paths. This has been fixed.
- The Perl linter was showing some errors from other files. Now ALE checks that the errors come from a file with a matching name. #625
- The stylelint linter was ignoring quite a few stylelint errors. This has been fixed. #629
- When checking files on disk, ALE was sometimes checking buffers where the file hasn't been saved to disk yet. This has been fixed. #651
- Filename escaping has been fixed for the `kotlinc` linter. #662
- The `ghc-mod` linter will now filter out errors for other files. #690
- The `pylint` linter wasn't parsing a few errors. This has been fixed. #695

## New Features
- ALE can now help you fix your code, via a configurable set of integrations for programs for fixing code. See `:help ale-fix`. #541
- Python functions for fixing files will search for executables in virtualenv directories. #632
- Linters can now add end column indexes and end lines for error highlights, for highlighting words for problems, etc.
- ALE linting can now be disabled for particular buffers with `b:ale_enabled`. #371
- Arbitrary buffer variables can be configured for filename patterns. See `:help g:ale_pattern_options` for more information. #371
- ALE now supports disabling linting of files above a configurable maximum file size. See `:help g:ale_maximum_file_size`.
- ALE now supports balloon messages. See `:help g:ale_set_balloons`.
- ALE now sets the filename as the quickfix and loclist titles. #588
- The quickfix window height can now be configured with `g:ale_list_window_size`.
- You can now jump straight to the first or last problem with `:ALEFirst` or `:ALELast`. #616
- ALE now makes results for a single linter available as soon as possible, instead of waiting for other running linters to complete. #406
- Linter problems types can now be re-mapped via a setting. See `:help g:ale_type_map` for more information. #536
- C and C++ linters are generally better at detecting the location of header files, but will never be perfect.

## Misc Changes
- The slower Go linters have been disabled by default. To re-enable them, see `:help ale-go-options`.

## New Linters
- Awk - gawk #638
- C++ - clang-check #686, cpplint #546
- FusionScript - fusion-lint #648
- Haskell - ghc-mod #496
- Java - checkstyle #551
- Koitlin - ktlint #610
- Objective C - clang #568
- Objective C++ - clang #568
- TypeScript - eslint #668, tsserver #517
- XML - xmllint #559

## New Fixers
- JavaScript - eslint #541, prettier #571, prettier-eslint #571
- Python - autopep8, isort, yapf
- Ruby - rubocop #689
- TypeScript - eslint #668

## Linter Enhancements
- The `eslint` linter will now output some end column indexes for better error highlighting.
- The `eslint` linter  will now use `eslint_d`, where available, which can be much faster.
- The `php` linter will now output some end column indexes for better error highlighting.
- The executable can now be configured for the `rubocop` linter. #561
- When an executable ends with `'bundle'`, The `rubocop` linter will now automatically add `' exec rubocop'` to the command for executing `rubocop` via Bundle. #561
- The performance of `gometalinter` integration has been substantially improved by using the `--include` option. #566
- The `koitlinc` linter now supports getting import paths from Maven, just like the `javac` linter. #585
- The `perl` linter now shows warnings by default. #600
- The `cargo` and `rustc` linters now report problems with end column and line numbers. #602
- The `cargo` and `rustc` linters now report problems with more details. #601
- The `flake8` linter will now report exceptions thrown by `flake8`. #596
- The `flake8` linter will now include end colum indexes for better highlights for some problems. #538
- The `flake8` linter now describe E and W errors as style errors, which can be highlighted differently. #430
- The `--version` check run for `vint` will now be run in the background. #624
- `'lint_file'` has been set to `1` for `nimcheck`, so only files on disk will be checked. #620
- The `percritic` linter now includes column numbers for problems. #640
- The `tslint` linter now distinguishes warnings from errors. #663
- The `javac` linter now includes column numbers for better error highlighting. #660
- The `phpcs` linter will now run locally installed versions where available by default. #666
- The `clang-tidy` linter will now detect `compile_commands.json` files, and let you override the build directory location. See `:help g:ale-cpp-options` #688
- The `tslint` linter now uses the JSON format for parsing errors, which should work better between different versions, and includes end line and column numbers. #684
- The `elm` linter now includes some general errors not previously reported. #637
vim-ale-1.3.1.zip 1.3.1 2017-06-06 8.0 w0rp ## Bugs Fixed
- Shell escaping has been fixed pretty much everywhere. #540
- PHP error parsing has been fixed, so more errors will be parsed. #533
- The `gometalinter` handler wasn't filtering file errors correctly. Now errors from other files will be filtered out. #553
- `csslint` errors without groups weren't being reported. This has been fixed. #555
- `pytlint` error columns were off-by-one. This has been fixed. #578
- Fatal errors weren't being parsed for `ember-template-lint`. This has been fixed. #589
- ALE was sometimes highlighting entire lines when buffers were un-hidden. This problem was introduced in version 1.3.0. This bug has been fixed. #574
vim-ale-1.3.0.zip 1.3.0 2017-05-07 8.0 w0rp ## Bugs Fixed
- Highlights will now be cleared and restored when buffers are hidden and shown.

## New Features
- Files/buffers will now be checked when the filetype is changed.
- All ALE commands defined so far may now be combined with `|`. (`command! -bar ...`)
- Commands `ALEEnable` and `ALEDisable` have been added for explicitly turning ALE on or off.
- `g:ale_lint_on_text_changed` now accepts values `'never'`, `'normal'`, and `'always'` for controlling whether `TextChanged` or `TextChangedI` will be listened to. Old options `0` and `1` will continue to be supported until version 2.0.0.
- An option `g:ale_lint_on_insert_leave` for triggering linting on leaving Insert mode. See `:help g:ale_lint_on_insert_leave`.
- Line highlights may now be set for set for signs. See `:help g:ale_set_signs`.
- For all C and C++ linters, errors inside of headers will be reported on the `#include` lines.
- Filetypes may now be aliased to multiple filetypes in a `List`. See `:help g:ale_linter_aliases`.
- All settings for all linters should now be dynamically evaluated, so settings can be changed while Vim is running.

## New Linters
- ASM - gcc
- Crystal - crystal
- Elixir - dogma
- eruby - erb
- Go - staticcheck, gosimple
- handlebars - ember-template-lint
- Koitlin - koitlinc
- Markdown - Vale
- ReasonML - merlin
- RPM Spec - rpmlint
- Ruby - brakeman, reek, ruby
- SQL - sqlint
- Text - Vale

## Linter Enhancements
- `cargo check` may now be used instead of `cargo build` See `:help g:ale_rust_cargo_use_check`.
- The `cargo` linter now uses `lint_file` option so it will only run when files are opened, saved, etc.
- The `rubocop` linter's error levels have been improved.
- The `eslint` linter will now automatically detect eslint installed via `create-react-app`.
- The `eslint` linter will now report invalid configuration file settings as errors at line 1.
- The `tslint` linter will now detect executables installed in `node_modules`.
- The `csslint` linter will now use `.csslintrc` files defined in ancestor directories.
- The `javac` linter will now create `.class` files in temporary directories, deleted at the end of lint cycles.
- The `javac` linter will now include source paths like `src/main/java`.
- The `javac` linter will now get class paths from Maven automatically.
- The `javac` linter will now report symbol names in undefined symbol errors for types.
- The executable and some options may now be configured for the `foodcritic` linter.
- The `nimcheck` linter now turns thread support on, so code using threads can be checked.
- Error parsing for the `sml` linter has been improved.
- The executable and some options may now be configured for the `shellcheck` linter.
- The `go build` linter will now only check files on disk, but is now capable of understanding paths correctly.
- Options and the executable can now be set for the `puppetlint` linter.
- The Fortran `gcc` linter can now be configured to check fixed form layouts. See `:help g:ale_fortran_gcc_use_free_form`
- The Fortran `gcc` linter's executable can now be configured. See `:help g:ale_fortran_gcc_executable`
- The `flow` linter will now filter out errors/warnings from other files.
- The `tslint` linter can now be set to prefer the global executable, like many other linters.
- The `laucheck` linter can now be configured with different options.
- The `cppcheck` linter will now detect and use `compile_commands.json` files and switch to the directory they are in, when detected in ancestor directories.
- The `clang-tidy` linter now checks files on disk and uses `compile_commands.json` files, with no extra options by default. See `:help ale-cpp-clangtidy`
- The `pylint` linter will now detect versions of the program in virtualenv automatically. See `:help g:ale_python_pylint_use_global` for disabling this behaviour.
- The `pylint` linter will now check files on disk, and understand import paths.
- The `mypy` linter will now detect versions of the program in virtualenv automatically. See `:help g:ale_python_mypy_use_global` for disabling this behaviour.
- The `mypy` linter will now check files on disk, and understand import paths.
- The `flake8` linter will now detect versions of the program in virtualenv automatically. See `:help g:ale_python_flake8_use_global` for disabling this behaviour.

## Misc Changes
- Linters now run when files are saved by default.
- The setting `g:ale_linters_sh_shell_default_shell` has been renamed to `g:ale_sh_shell_default_shell`.
- The setting `g:ale_linters_sh_shellcheck_exclusions` has been renamed to `g:ale_sh_shellcheck_exclusions`.
vim-ale-1.2.1.zip 1.2.1 2017-04-29 8.0 w0rp ## Bugs Fixed
- Exceptions will no longer be thrown when the checks for conflicting plugins are run _before_ the rest of the ALE plugin code.
- Various linters no longer set errors at column 1, when there is no column set.
- Linting will no longer be performed from inside of a command window.
- Errors will now be returned for `zsh` scripts for the `shell` linter.
- The `vint` linter wasn't setting the `--no-color` option for versions 0.3.7 and above, due to a typo. This has been fixed.
- The `php` linter was parsing some errors twice. This has been fixed.
- Highlights will now be cleared when buffers are unloaded, so matches will not appear in the wrong files.
vim-ale-1.2.0.zip 1.2.0 2017-03-26 8.0 w0rp ## Bugs Fixed
- Signs will now be unplaced for Italian users.
- Fixed a bug where loclist items could be set for the wrong buffers.

## New Features
- A command `:ALEToggle` has been added for turning ALE on or off temporarily.
- A command `:ALELint` has been added for running ALE manually.
- A command `:ALEDetail` has been added for showing more details for an error at the cursor.
- Linters can now use a `read_buffer` option for enabling/disabling stdin input.
- Linters can now use a `lint_file` option for running checks against files, instead of Vim buffers.
- ALE now highlights errors in the buffer. See  `:help g:ale_set_highlights`
- The `:ALEInfo` command now outputs linter variables.
- The `:ALEInfo` command now outputs a command history. See `:help g:ale_history_enabled`
- ALE will no longer complain if it can't work for empty filetypes or git commits.
- If ALE fails to load properly, it should now still emit airline statusline messages.

## New Linters
- AsciiDoc - proselint
- C++ - clang
- CMake - cmakelint
- Haml - hamllint
- Haskell - hdevtools
- HTML - proselint
- Java - javac
- JavaScript - standard, xo
- nim - nim
- nix - nix-instantiate
- nroff - proselint
- PHP - phpmd
- Pod - proselint
- reStructuredText - proselint
- Slim - slim-lint
- SML - smlnj
- Texinfo - proselint
- Vim help - proselint
- XHTML - proselint

## Linter Enhancements
- The `coffee` and `coffeelint` linters now attempt to use the versions of those executables from `node_modules`, if available.
- The `coffelint` linter will now parse more errors.
- The `credo` linter now includes the filename of the file being checked, which can be useful for various checks.
- The `flow` linter will not now no longer run if no `.flowconfig` file exists in an ancestor directory.
- You can now configure options for the `stylelint` linter.
- The `gfortran` linter now supports more kinds of error output.
- The `yamllint` linter can be now be configured with an executable path and options.
- The `pylint` linter now includes the symbol (a short name) for error types.
- PHP error parsing has been improved, so more errors are handled.
- The `eslint` linter will now report problems with the configuration file, using `:ALEDetail`.
- The `perl` linter now supports options. See `:help ale-linter-options-perl-perl`.
- The `clang` and `gcc` linters now support header includes in the same directories files are in.
- The `erlc` linter will no longer leave compiled files lying around.
- The `tslint` linter will now find configuration files, and allow the executable and configuration file to be configured.

## Misc Changes
- $TMPDIR will now automatically be set to /tmp on Unix if it is not set.
- ALE will now only run the `cargo` linter for Rust by default. To run other linters, modify `g:ale_linters` appropriately. See `:help ale-integration-rust`.
- ALE will now echo the cursor error messages when linting finishes or when leaving insert mode.
vim-ale-1.1.1.zip 1.1.1 2017-02-21 8.0 w0rp ## Bugs Fixed

* The Pug linter wasn't parsing errors correctly. This has been fixed.
* The gcc/gfortran linter should now parse errors from more versions.
* Parsing of TypeScript `typecheck` errors has been fixed for some filenames containing the string `ts`.
* The commands for navigating between errors/warnings should now correctly filter out other buffers.
* The commands for navigating between errors/warnings will now prefer to use the quickfix list, if `g:ale_set_quickfix` is on.
vim-ale-1.1.0.zip 1.1.0 2017-02-09 8.0 w0rp ## New Features
- ALE now splits filetypes containing `.` (a dot), and will run all linters for each component of a compound filetype, so files with type `foo.bar` will use linters for filetypes `foo` and `bar`.
- ALE now offers commands and `<Plug>` keybinds for moving between warnings and errors. See `:help ale-navigation-commands` for more information.
- ALE can now automatically open a window to show the list of errors. See `:help g:ale_open_list` for more information.
- ALE now allows you to get some information about the current linters with a new `:ALEInfo` command.
- ALE now includes a mechanism for chaining commands for running linters, for any linters which need to run multiple commands to check for errors.

## New Linters

Support has been added for the following linters.
- Ansible - ansiblelint
- C/C++ - clang, cppcheck
- C# - mcs
- Chef - foodcritic
- CSS - stylelint
- Dockerfile - hadolint
- Elm - elm-make
- Erland - erlc
- Go - go build
- JavaScript - flow
- LatTex - chtex, lacheck
- Markdown - mdl, proselint
- MATLAB - mlint
- OCaml - merlin (Another Vim plugin is required)
- PHP - hack
- Puppet - puppet, puppet-lint
- Python - mypy, pylint
- SASS - stylelint
- SCSS - stylelint
- Swift - swiftlint
- Text - proselint
- TypeScript - tslint, typecheck

## Linter Enhancements
- The `eslint` and `jshint` linters for JavaScript will now attempt to run eslint installed in `node_modules` directories first. The `g:ale_javascript_eslint_use_global` or `g:ale_javascript_jshint_use_global` variables can be set to `1` to force ALE to use the global executables.
- The `eslint` linter can now be configured with more options.
- The default flags for `gcc` and `g++` were changed to use the latest C and C++ standards by default.
- The `htmlhint` options can now be customised with a global variable.
- `htmlhint` will now search for executables in `node_modules` directories to run.
- The `shellcheck` linter now uses Vim's special buffer variables for detecting the shell dialect.
- The `flake8` linter now accept variables for configuring the executable and the command line arguments.
- The `flake8` linter is now informed with the filename, which plugins can use.
- The Haksell linters should produce better error messages.
- C and C++ linter options can now be changed dynamically.
- The Verilator linter was improved so it only produces warnings or errors for the file you are editing.
- The DMD linter should now run on Windows, as the special Linux Bash script has been replaced with
  use of the new command chaining feature.
- The Vint linter for Vim files now recognises commands specific to NeoVim when running under NeoVim.

## Misc Changes
- The stdin-wrapper script for Unix systems has been simplified, and should see increased support for various systems.
- A bug was fixed with this plugin and newer versions of NeoVim which altered the job control API slightly, which broke everything.
vim-ale-1.0.0.zip 1.0.0 2016-10-19 8.0 w0rp This is the initial stable release of ALE, the asynchronous linting engine for Vim.

## Features Implemented

* ALE will run a variety of linters for various programming languages. For a full list of supported linters, please consult the help file.
* ALE will update the loclist when errors/warnings are found.
* ALE will echo messages when the cursor moves over warnings or errors.
* ALE will show signs in the sign gutter when errors or warnings are found.
* ALE supports functions for showing statuses in the statusline, with some integration with vim-airline.

sha256sum:
498d5834472f26d06836700840b92a5ad440189309e5ce91983769739fcf4244  vim-ale-1.0.0.zip
ip used for rating: 13.58.112.1

If you have questions or remarks about this site, visit the vimonline development pages. Please use this site responsibly.
Questions about Vim should go to the maillist. Help Bram help Uganda.
   
Vim at Github