Releases: dense-analysis/ale
Releases · dense-analysis/ale
ALE v1.4.0
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 to1
, when it should only check buffers. This has been fixed. - ALE now uses the
BufWinEnter
event forg:ale_lint_on_enter
instead ofBufEnter
, 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 theBufEnter
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 useeslint_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'
, Therubocop
linter will now automatically add' exec rubocop'
to the command for executingrubocop
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 thejavac
linter. #585 - The
perl
linter now shows warnings by default. #600 - The
cargo
andrustc
linters now report problems with end column and line numbers. #602 - The
cargo
andrustc
linters now report problems with more details. #601 - The
flake8
linter will now report exceptions thrown byflake8
. #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 forvint
will now be run in the background. #624 'lint_file'
has been set to1
fornimcheck
, 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 detectcompile_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
ALE v1.3.1
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. #555pytlint
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
ALE v1.3.0
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
andALEDisable
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 whetherTextChanged
orTextChangedI
will be listened to. Old options0
and1
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 ofcargo build
See:help g:ale_rust_cargo_use_check
.- The
cargo
linter now useslint_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 viacreate-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 innode_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 likesrc/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 usecompile_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 usescompile_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 tog:ale_sh_shell_default_shell
. - The setting
g:ale_linters_sh_shellcheck_exclusions
has been renamed tog:ale_sh_shellcheck_exclusions
.
ALE v1.2.1
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 theshell
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.
ALE v1.2.0
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
andcoffeelint
linters now attempt to use the versions of those executables fromnode_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
andgcc
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, modifyg:ale_linters
appropriately. See:help ale-integration-rust
. - ALE will now echo the cursor error messages when linting finishes or when leaving insert mode.
ALE v1.1.1
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 stringts
. - 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.
ALE v1.1.0
New Features
- ALE now splits filetypes containing
.
(a dot), and will run all linters for each component of a compound filetype, so files with typefoo.bar
will use linters for filetypesfoo
andbar
. - 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
andjshint
linters for JavaScript will now attempt to run eslint installed innode_modules
directories first. Theg:ale_javascript_eslint_use_global
org:ale_javascript_jshint_use_global
variables can be set to1
to force ALE to use the global executables. - The
eslint
linter can now be configured with more options. - The default flags for
gcc
andg++
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 innode_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.
ALE v1.0.0
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.