Skip to content

ALE v3.2.0

Compare
Choose a tag to compare
@w0rp w0rp released this 05 Mar 01:25
· 304 commits to master since this release
560e634

Special Notes

  • The pyls linter has been removed because it's no longer maintained, and it has been replaced with the pylsp linter. #3810
  • The dartanalyzer linter has been removed because the Dart team discourages its use over built-in tools instead.

Deprecated Features

  • The ale_lsp_root setting is now deprecated, and you should replace it with ale_root instead. #3599

New Features

  • :ALEGoToTypeDefinition is now supported for tsserver. #3545
  • You can now rename TypeScript files with the :ALEFileRename command. #4012
  • You can now manually populate loclist and quickfix with :ALEPopulateLocList and :ALEPopulateQuickfix, respectively. #3761
  • You can now send found references to quickfix with :ALEFindReferences -quickfix. #4033
  • Linters and fixers can now set their cwd separately from their commands to run them, to make them easier to manager and enable other features. #2281
  • ALE will now read signs with sign_getplaced, when the function is available. This is faster and safer. #3648
  • When repeating selections, ALE will now jump to the last selected item, such as when finding references.
  • ALE will now de-duplicate items before adding them to the location list. #3792
  • Popup windows are now supported in Vim versions that have popup versions. #3817
  • ALE is now tested against NeoVim 0.5. #3830
  • ALE now triggers ALELSPStarted autocommands after language servers start. #3878
  • ALE now supports virtual text in Vim 8.2 when g:ale_virtualtext_cursor is set to 1. #3915
  • Multi-line messages are handled better for virtualtext. #3949
  • virtualtext highlights now respect other ALE highlights better. #3960
  • ALE now handles code actions responses from language servers that directly return commands to run. #3929
  • ALE now includes the text of a file in the textDocument/didSave notification for language servers where supported to support more language servers like Godot. #3923
  • ALE now only sends textDocument/didSave if the language server supports it. #3930 #4008
  • textDocument/didSave is now dispatched after files are saved due to a rename, and ALE now respects the value of hidden to determine if other files modified should be written or not. #4049
  • g:ale_open_list/b:ale_open_list can now be used as a threshold for opening the window after so many problems are found. #4050
  • ALE now attempts to automatically restart language servers when they crash. #4098

New Linters

New Fixers

Linter Enhancements

  • The Verilog verilator linter now includes the directory the file is in. #3500
  • _options you define for the mypy linter are now the first options in the arguments list, so you can run the linter with python -m mypy. #3582
  • The executable, options, and input file can now be configured for the vale linter. #3594
  • The -T argument was removed from the ruby command to support Ruby 3.0 and above. #3537
  • ansible-lint should now print more warnings and errors for files with newer versions. #3601
  • The texlab linter now defaults to using the .git project directory as the default project path. #3610
  • The texlab LSP settings are now configurable. #4027
  • _options can now be set for the pyls linter. #3620
  • gopls is now used for Go by default, and is automatically run from GOPATH if installed locally.
  • staticcheck is automatically run from GOPATH if installed locally.
  • The staticcheck linter for Go now defaults to linting the entire package at once. #3799
  • lintr now runs for more projects by avoiding the --vanilla option. #3727
  • tflint reads from stdin now, which yields better results when linting. #3717
  • eslint now runs from Yarn sdk directories too. #3684
  • The angular linter now works for HTML files on Linux in more cases.
  • The phpstan linter now detects phpstan.neon.dist configuration files. #3765
  • The phpstan linter now supports multi-line errors. #3686
  • The phpstan linter now supports setting --memory-limit. #3973
  • Local executables for phpstan can now be used. #3809
  • The psalm linter now searches for the project root based on where composer.json is. #3979
  • The raco linter now includes the filename in the loclist. #3777
  • The rpmlint version 2.0.0 and above is now support. #3757
  • All checkstyle problems are now style problems. #3780
  • The R language server linter now considers .Renviron #3744
  • The solc linter now works with more versions. #3763
  • ansible-lint works with more recent versions. #3786
  • ansible-lint colors are now always disabled so problems are parsed better. #3811
  • ansible-lint now runs only against files on disk for more accurate results. #3846
  • More recent versions of hadolint are supported. #3678
  • hadolint error codes are now only included if available. #3943
  • The Python linters now consider .tool-versions when looking for the project root. #3820 #3826
  • poetry is now supported for running Python linters. #3834
  • The column number is now read from elrc to produce more accurate problem locations. #3823
  • The clj-kondo linter options are now configurable. #3812
  • More clj-kondo messages are parsed correctly. #3946
  • The deno linter now supports setting the importMap. #3827
  • Older cppcheck versions are now supported. #3887
  • More cppcheck problems are parsed, such as problems from plugins. #3980
  • cppcheck should only run on the current file only to make it faster. #3983 #3987
  • cppcheck is only used to check headers included in a source file now. #3983
  • The pyre linter now runs more consistently. #3895 #3900
  • The circleci linter now avoids checking for updates so it runs faster. #3902
  • The rubocop fixer now avoids loading the --config file so it's easier to run it in Docker. #3916
  • sml linters now handle more errors. #3860 #3957
  • Newer versions of Ruby are supported for type checking by removing -T1. #3538
  • elvis problems are now style problems. #3976
  • alex now uses --stdin to check for problems while you type. #3982
  • More checkmake versions are supported. #3986
  • Newer versions of reek are supported. #4010
  • The hls language server can now be configured. #4038
  • More nix versions are supported. #4045
  • Stable commands are used to run rustc now by default, instead of commands for nightly builds. #4087

Fixer Enhancements

  • clang-format can now be configured to use a particular style, or local style file. #3587
  • prettier can now be used with Ruby code if you have the right plugin installed. #3593
  • cmake-format now reads from stdin, which enables it to use configuration files for projects. #3725
  • The isort fixer now includes the filename in the arguments for better results. #3815 #3942
  • The Dhall fixers now read from stdin. #3868
  • poetry is now supported for running Python fixers. #3834 #3898
  • uncrustify now includes a language option depending on what filetype you're editing. #4007

Bugs Fixed

  • The way ALE handles code actions, completion insertion, and renaming has been reworked with much more robust tests to fix edge cases and stop the cursor moving around strangely. #3478
  • The terraform linter didn't handle all error types correctly. #3606
  • If ALE was run inside of an execute() call it would fail due to uses of redir. Now ALE uses execute() so calls can be nested. #3719
  • Certain Java errors could cause errors in ALE. These messages are handled better. #3706
  • The black fixer for Python didn't build its command string correctly. #3759
  • -include and -imacros now use the filenames instead of absolute paths. #3775
  • Language server messages for completion data are handled better, where they would cause errors before. #3807 #3894
  • The sign column wasn't being kept open when configured in NeoVim 0.5. #3832
  • Empty hover messages could trigger errors in ALE. #3889
  • Code fixes for tsserver or language servers now identify errors that came from the server instead finding other errors from other tools. #3901
  • Code fixes could sometimes cause errors because end line number and column numbers could be missing. This has been fixed. #4062
  • pydocstyle wasn't checking files outside of the root of the project correctly. #3995