Check syntax in Vim/Neovim asynchronously and fix files, with Language Server Protocol (LSP) support
textEdit
but no insertTextFormat
. #4124b:ale_shell
and b:ale_shell_arguments
can now be used to set shell options
per-buffer. #4146codeActionLiteralSupport
so language servers such as
rust-analyzer
return code actions to ALE. #4163ALEGoToImplementation
command has been added to go to the location
of the implementation of a symbol via supporting language servers.g:ale_floating_window_border
. #4215g:ale_floating_preview_popup_opts
. #4247'\k\+$'
. #4186 #4293 #4352out_cb
or err_cb
for jobs to swallow messages to
prevent Vim from excessively polling results. #4259virtual-text
messages in Vim 9. #4281 #4291virtual-text
messages can be shown for all lines, not only the line the cursor
is on, by setting ale_virtualtext_cursor = 'all'
. #4289virtual-text
messages are now enabled by default where supported nicely. #4396ansible-language-server
#4355bicep
#4310 #4311starknet
#4256vscode-langservers-extracted
#4175erlang_ls
#4346vscode-langservers-extracted
#4175vscode-langservers-extracted
#4164 #4175selene
#4169 #4183sca2d
#4205buf lint
#4128 #4300ruff
#4347, refurb
#4379cpsell
#4199, opa check
#4199sqlfluff
#4361tfsec
#4323 #4326actionlint
#4173, gitlab-lint
#3042css-beautify
#4319packer fmt
#4192dune
#4263packer fmt
#4192pint
#4238buf format
#4128 #4300pyflyby
#4219, ruff
#4347 #4393raco fmt
#4354opa fmt
#4199stree write
#4268sqlfluff
#4361 #4365zig fmt
#4198--lint
options for awk
. #4114rust-analyzer
can now be run for non-Cargo projects. #4118ghc
panic. #4145pylama
output handling has been improved #4106spectral
, yaml-language-server
,
and yamllint
to avoid running linters specialised for particular
applications of YAML. #4178vimls
for Vader
files by default, and the default list of
linters for Vader
files is to run vimls
. #4201golangci_lint
. #4182ansible-lint
versions. #4188.mypy.ini
to detect a Python project root. #4202ember-template-lint
>= 4.0.0, in addition to older
versions. #4200detail
is not empty
for terraform validate
. #4157actionlint
options can now be configured with
ale_yaml_actionlint_options
. #4216dart analyze
with --fatal-infos
to capture more information.
#4237deno.json
and deno.jsonc
to detect a Deno project
root. #4306volar
language server executable name now defaults to
vue-language-server
, which is its current name. #4308clj-kondo
is now run with a filename hint to get more accurate problems.
#4315clang
to improve on
the accuracy of problems ALE reports. #4318 #4334pyrightconfig.json
and pyrightconfig.toml
in the list of
files it uses to find a Python project root. #4321cwd
for pylsp
and Pyright to the detected or manually
configured project root to fix incorrect import errors produce by either
pylsp
with the mypy
plugin, or by Pyright. #4388ruff
is now enabled as a linter for Python by default.hadoint
. #4353--config
is now explicitly set for checkmate
so it loads the correct
configuration file. #4351markdownlint
is now configurable. #4358nix
versions 2.12 and up are supported properly now. #4394shfmt
now runs with -filename=
and no other options by default to
use .editorconfig
settings. #4244dprint
is now suggested for more filetypes. #4320clang-format
is now suggested for more filetypes. #4367:ALEImport
should work with more language servers. #4105ale_haskell_hls_executable
was incorrectly named
ale_haskell_his_executable
. #4241ale_enabled == 0
. #4277<Plug>(ale_go_to_type_definition_in_vsplit)
didn't run the command. #4304<Plug>(ale_go_to_implementation)
mapping has been defined. #4337ansible-lint
returns no output. #4373pyls
linter has been removed because it's no longer maintained, and it has been replaced with the pylsp
linter. #3810dartanalyzer
linter has been removed because the Dart team discourages its use over built-in tools instead.ale_lsp_root
setting is now deprecated, and you should replace it with ale_root
instead. #3599:ALEGoToTypeDefinition
is now supported for tsserver
. #3545:ALEFileRename
command. #4012:ALEPopulateLocList
and :ALEPopulateQuickfix
, respectively. #3761:ALEFindReferences -quickfix
. #4033cwd
separately from their commands to run them, to make them easier to manager and enable other features. #2281sign_getplaced
, when the function is available. This is faster and safer. #3648ALELSPStarted
autocommands after language servers start. #3878g:ale_virtualtext_cursor
is set to 1
. #3915textDocument/didSave
notification for language servers where supported to support more language servers like Godot. #3923textDocument/didSave
if the language server supports it. #3930 #4008textDocument/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. #4049g:ale_open_list
/b:ale_open_list
can now be used as a threshold for opening the window after so many problems are found. #4050cspell
#3981cpell
#3981avra
#3950oelint-adv
#4043cpell
#3981cpplint
#3008cspell
#3981cspell
#3981, dotnet format
#3879cspell
#3981cmake-lint
#4036clangd
#3598dart analyze
#3825desktop-file-validate
cspell
#3981erblint
#3931cspell
#3981cspell
#3981help
- cspell
#3981angular
(@angular/language-server) #2102, cspell
#3981cspell
#3981cspell
#3981, deno
#3924cspell
#3981jsonnet-lint
#3907, jsonnetfmt
#3907cspell
#3981cspell
#3981statix
#3969ocamllsp
#3595cspell
#3981, phpactor
#3975cspell
#3981cspell
#3981, flakehell
#3921, pylsp
#3810, unimport
#4058rflint
#3715cspell
#3981cspell
#3981cspell
#3981cspell
#3981sh
- cspell
#3981svelteserver
#3644cspell
#3981systemd-analyze
checkov
#4006cspell
#3981thriftcheck
#3852 #3893cspell
#3981yosys
#3713cspell
#3981, volar
#3992naga
#4047yaml-language-server
#4029zeek
#3952crystal tool format
#4016buildifier
#3499dart format
#3764erlfmt
#3602erblint
#3935gofumpt
#3968, golines
#3862dprint
#4024jsonnetfmt
#3907dprint
#4024, eslint
#3873eslint
#3873eslint
#3873stylua
#3789, lua-format
#3804dprint
#4024, pandoc
#3641statix
#3969purs-tidy
#3863 #3867autoflake
#3779racket-langserver
#3808dprint
#4024verilator
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
. #3582vale
linter. #3594-T
argument was removed from the ruby
command to support Ruby 3.0 and above. #3537ansible-lint
should now print more warnings and errors for files with newer versions. #3601texlab
linter now defaults to using the .git
project directory as the default project path. #3610texlab
LSP settings are now configurable. #4027_options
can now be set for the pyls
linter. #3620gopls
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.staticcheck
linter for Go now defaults to linting the entire package at once. #3799lintr
now runs for more projects by avoiding the --vanilla
option. #3727tflint
reads from stdin now, which yields better results when linting. #3717eslint
now runs from Yarn sdk directories too. #3684angular
linter now works for HTML files on Linux in more cases.phpstan
linter now detects phpstan.neon.dist
configuration files. #3765phpstan
linter now supports multi-line errors. #3686phpstan
linter now supports setting --memory-limit
. #3973phpstan
can now be used. #3809psalm
linter now searches for the project root based on where composer.json
is. #3979raco
linter now includes the filename
in the loclist. #3777rpmlint
version 2.0.0 and above is now support. #3757checkstyle
problems are now style problems. #3780.Renviron
#3744solc
linter now works with more versions. #3763ansible-lint
works with more recent versions. #3786ansible-lint
colors are now always disabled so problems are parsed better. #3811ansible-lint
now runs only against files on disk for more accurate results. #3846hadolint
are supported. #3678hadolint
error codes are now only included if available. #3943.tool-versions
when looking for the project root. #3820 #3826poetry
is now supported for running Python linters. #3834elrc
to produce more accurate problem locations. #3823clj-kondo
linter options are now configurable. #3812clj-kondo
messages are parsed correctly. #3946deno
linter now supports setting the importMap
. #3827cppcheck
versions are now supported. #3887cppcheck
problems are parsed, such as problems from plugins. #3980cppcheck
should only run on the current file only to make it faster. #3983 #3987cppcheck
is only used to check headers included in a source file now. #3983pyre
linter now runs more consistently. #3895 #3900circleci
linter now avoids checking for updates so it runs faster. #3902rubocop
fixer now avoids loading the --config
file so it's easier to run it in Docker. #3916sml
linters now handle more errors. #3860 #3957-T1
. #3538elvis
problems are now style problems. #3976alex
now uses --stdin
to check for problems while you type. #3982checkmake
versions are supported. #3986reek
are supported. #4010hls
language server can now be configured. #4038nix
versions are supported. #4045rustc
now by default, instead of commands for nightly builds. #4087clang-format
can now be configured to use a particular style, or local style file. #3587prettier
can now be used with Ruby code if you have the right plugin installed. #3593cmake-format
now reads from stdin, which enables it to use configuration files for projects. #3725isort
fixer now includes the filename in the arguments for better results. #3815 #3942poetry
is now supported for running Python fixers. #3834 #3898uncrustify
now includes a language option depending on what filetype you're editing. #4007terraform
linter didn't handle all error types correctly. #3606execute()
call it would fail due to uses of redir
. Now ALE uses execute()
so calls can be nested. #3719black
fixer for Python didn't build its command string correctly. #3759-include
and -imacros
now use the filenames instead of absolute paths. #3775tsserver
or language servers now identify errors that came from the server instead finding other errors from other tools. #3901pydocstyle
wasn't checking files outside of the root of the project correctly. #3995:ALERename
now just saves other buffers you have open and automatically reloads them when you next open them up again. #3332ALECodeAction
command, such as quick fixes. #1466:h g:ale_floating_preview
. #3470 #3314tsserver
with the g:ale_lsp_suggestions
setting #3362noselect
for completeopt
if Vim is configured that way already. #3433:ALERepeatSelection
, ALE now jumps to the last selection made, so resuming a search is easier.ada_language_server
#2825apkbuild-lint
#3424, secfixes-check
#3424analysis_server
#3069Elvis
#3292inko
#3494jq #3568,
spectral` #3489rnix-lsp
#3556ibm_validator
#2711 #2782, yamllint
#2711 #2782intelephense
#3357, tlint
#3291languageserver
#3370salt-lint
#3491deno
#3533vala-lint
#3519spectral
#3489fish
- fish_indent
#2148 #3576dhall format
#3261, dhall freeze
#3261, dhall lint
#3261ormolu
#2903luafmt
#3289prettier
#2782autoimport
#3409deno
#3533circleci
, yamlfix
#3461bibclean
linter now parses more errors #3367sh
linter now looks at Vim's buffer-local variables to determine the shell type #3427eslint
and tsserver
will now automatically be run from .yarn/sdks
#3435phpcs
linter now parses more errors #3282shellcheck
linter now respects shellcheck
directives #3216sorbet
linter now defaults to disabling watchman
, which requires watchman
to be separately installed #3403elrc
linter executable can now be customised #3531-imacros
flags are now included for linting with C compilers #3430dafny
linter now has a time limit setting and parses more errors #3475xo
options can now be customised #3148swipl
linter for Prolog parses error messages from newer versions swiplnix
linter works with newer versions of Nix #3227dialyzer
linter's options can now be configured #3425cloudformation
linter can now also be enabled with the alias cfn-lint
, which matches the executable name. #2547hadolint
#3472gopls
#3571gofmt
now runs via stdin, which helps with running it via Docker. #3381isort
fixer now works with pipenv
#3386scalafmt
is now suggested for sbt
#3399xo
fixer now fixes files via stdin #3148xo
options can now be customised #3148standardrb
fixers now use stdin #3521checkstyle
linter now checks errors properly in NeoVim on Windows. #3467dafny
linter now returns results for the correct filenames. #3390 #3557phan
linter now returns results for the correct filenames. #3529rust-analyzer
now sends options in the initial configuration so the server recognises them #3453clang-tidy
respect compile_commands.json
better for header files #3551Makefile
output unless there were already some compiler flags #3574javac
linter has been fixed. #3706g:ale_completion_tsserver_autoimport
option has been deprecated. Use g:ale_completion_autoimport
instead.Many previously deprecated features have been removed. Here is a list of the features removed, and what you should use instead.
Removed | Replacement |
---|---|
:ALEGoToDefinitionInTab |
:ALEGoToDefinition -tab |
:ALEGoToDefinitionInSplit |
:ALEGoToDefinition -split |
:ALEGoToDefinitionInVSplit |
:ALEGoToDefinition -vsplit |
:ALEGoToTypeDefinitionInTab |
:ALEGoToTypeDefinition -tab |
:ALEGoToTypeDefinitionInSplit |
:ALEGoToTypeDefinition -split |
:ALEGoToTypeDefinitionInVSplit |
:ALEGoToTypeDefinition -vsplit |
ale#engine#ManageFile |
ale#command#ManageFile |
ale#engine#ManageDirectory |
ale#command#ManageDirectory |
ale#engine#CreateFile |
ale#command#CreateFile |
ale#engine#CreateDirectory |
ale#command#CreateDirectory |
(linter) command_chain |
ale#command#Run |
(linter) 'command_callback': 'Foo' |
'command': function('Foo') |
(linter) 'executable_callback': 'Foo' |
'executable': function('Foo') |
(linter) 'address_callback': 'Foo' |
'address': function('Foo') |
(linter) 'language_callback': 'Foo' |
'language': function('Foo') |
(linter) 'initialization_options_callback': 'Foo' |
'initialization_options': function('Foo') |
(linter) 'lsp_config_callback': 'Foo' |
'lsp_config': function('Foo') |
(fixer) chain_with |
ale#command#Run |
You can update your scripts to work with the current or previous versions of ALE by checking the ALE version with ale#Has('ale-2.7.0')
.
The following <Plug>
mappings were previously scheduled for deprecation, but instead will be supported forever, and are now documented again.
<Plug>(ale_go_to_definition_in_tab)
<Plug>(ale_go_to_definition_in_split)
<Plug>(ale_go_to_definition_in_vsplit)
<Plug>(ale_go_to_type_definition_in_tab)
<Plug>(ale_go_to_type_definition_in_split)
<Plug>(ale_go_to_type_definition_in_vsplit)
The following linter options have been replaced.
ale_psalm_langserver_executable
-> ale_php_psalm_executable
ale_psalm_langserver_options
-> ale_php_psalm_options
ale_psalm_langserver_use_global
-> ale_php_psalm_use_global
make
dry run parsing on BSDALE now uses make -n --always-make
for parsing make
dry runs on Linux and BSD. This will not work at all with BSD make
, and there's no way to automatically take the option away for BSD users without making ALE worse on all other systems. BSD users should use let g:ale_c_always_make = 0
to make it work again. This issue does not affect Mac OSX users, because ALE can use !has('macunix')
to disable the option by default for Mac OSX users.
cc
LinterThe existing gcc
and clang
linters have been replaced with a generic cc
linter, which can be selected with any of the old linter names. This combined linter now attempts to run clang
if available, and falls back to running gcc
. See issue #3299 for more information.
%s
and %t
in commands can now be formatted with :h
, :t
, :r
, and :e
, to apply filename-modifiers
. #2556lint_file
for linters can now be computed dynamically, and from deferred results, so linters and dynamically switch between running only against files on disk, or checking code on the fly. #3285compile_commands.json
for automatically figuring out flags for compilers is now enabled by default, and several improvements have been made to how ALE handles flags for C/C++ linters.:ALERename
) with connected LSP servers that support it, like gopls
. #3047 #3196 #2943:ALEImport
command can be used to request imports for words at the cursor. #3268tsserver
completion results, which may not be relevant to you. #2849:ALEImport
, a new ALECompletePost
event is triggered. #3333:ALEFix
with a bang (:ALEFix!
) to suppress warnings/errors, such as through ALECompletePost
. #3333:ALELintStop
command has been added which lets you stop any linters currently running. #3333:ALEInfo
. #3003AsciiDoc
- languagetool
#3229Python
- pyright
- #2472sh
- bashate
#2732 #3070Swift
- swift-format
#3007 (Not to be confused with swiftformat
, which is a different tool and fixer.)SQL
- sql-lint
#2988Verilog
- hdl-checker
#2804zig
- zls
#3232c++
- astyle
#3231 #3257Dhall
- dhall-format
#3310markdown
- remark-lint
#2836pylint
now checks code as you type if you have installed a new-enough version. #2522dockerfile_lint
now shows more useful information in detailed error messages. #3158eclipselsp
linter now starts better on more platforms. #3137ktlint
uses stdin now, so .editorconfig
files can be loaded. #3119 #3029checkstyle
linter now handles options better. #2914markdownlint
linter now parses more output. #3259markdownlint
versions are now supported. #3253markdownlint
#2940puppet
linter now parses output better. #3223cppcheck
linter now works with more recent versions of cppcheck
, and parses column numbers and error codes.govet
linter now works with more recent versions of Go. #3191ps1
. #3010sh
linter will now check scripts with the current filetype
if there's no hashbang line. #2906cargo
with ale_rust_cargo_target_dir
. #3164vlog
linter parses the filename for the errors now. #2924credo
now recognizes umbrella projects #2759rls
is now enabled by default. #3324gcc
errors from failed macros are now parsed and reported. #3327vint
messages #3194flake8
to try to run from the Python project root. This is the new default. #2858ember-template-lint
linter now reads from stdin too, for newer versions. #2622A wide range of improvements have been made to how ALE detects C/C++ compiler flags.
compile_commands.json
are now resolved in a much better way, which results in a massive improvement in how ALE determines flags for files. #3307ccls
linter now detects compile_commands.json
in other directories. #3123 #2621compile_commands.json
flags can now be used for linting header files. #2919clang-tidy
that .h
files are C++ files when the filetype is set to C++ in Vim. #1608@file
arguments in compile_commands.json
are now handled. #3178-std
flags from _options
settings for C/C++ linters are now replaced by flags parsed from compile_commands.json
or make -n
. #3056make -n --always-make
by default on Linux and BSD, to fix issues with ALE not reading flags after make
is run. See above notes on breaking changes for BSD. #2038 #3247-fstack-usage
is now removed from parsed C flags, which breaks linters. #3200-iframework
is now included in parsed C flags. #3057-include
is now included in parsed C flags. #3317tslint
fixer should work with newer versions again. #3107ale_ruby_rubocop_auto_correct_all
to 1
to apply unsafe fixes in Rubocop. #3237rubocop
fixer now fixes via stdin with the filename, which makes the fixes more accurate. #3230prettier-standard
fixer should now respect configuration files. #2920prettier
fixer now runs from where .prettierignore
is to ignore files, if available. #3101standard
fixer should work again. Updates to standard
broke it. #3046node_modules
directory that contains an ESLint executable. #3222mspyls
can respond with invalid hover data, which caused errors in ALE. ALE handles this invalid data now. #3273-1
, which caused some servers to crash. #3294initialized
messages when they do. #3294eclipselsp
linter could find the Java path in a broken way. #3288:ALERepeatSelection
now repeats -relative
from :ALEFindReferences
, etc. #3316'paste'
mode is enabled. #2971ALERename
no longer generates garbage due to changes not being applied in order. #3322[
and ]
broke showing diagnostics from tsserver/LSP. They are escaped now. #3183*InTab
, *InSplit
, and *InVSplit
have been replaced with * -tab
, * -split
, and * -vsplit
instead. The old commands will be removed at some point in the future.tsserver
completion results weren't returning as many details as they did in the past. #2845crystal-lang
linter was breaking when errors were reported without filenames. #2617v:errmsg
was polluted when it didn't need to be by ALE sometimes. #3021metals
linter was incorrectly returning 0
there's no project root. #3120asynccomplete
can now apply code actions for completion, such as adding import lines. #2844:help g:ale_completion_symbols
. #2847g:ale_set_balloons
to 1
.g:ale_exclude_highlights
#2982ale_default_navigation
setting can be used to control how ALE navigates to new locations from commands. #3019:ALERepeatSelection
command. #3019shellcheck
#3133revive
#2933nimlsp
#2815standard
#2660terraform-lsp
#2758rust-analyzer
#2837vimls
#3124nimpretty
#2890purty
#2690clangd
now automatically sets the compile_commands directory by searching for compile_commands.json
file or C build directories from settings. #2807clangcheck
linter now uses a no color option for better output. #2700psalm
language server now accepts command line options. #2819nimcheck
errors now use a range for errors in some cases. #2887mypy
notes are now shown by default. They can be disabled by setting ale_python_mypy_show_notes
to 0
. #2704mypy
now runs from the same directory as mypy.ini
, if detected. #2385clj-kondo
linter now uses the --cache
argument. #2681verilator
linter now shows column numbers. #3098stderr
is now read for kotlinc
. #3120eclipselsp
linter now lets you specify the javaagent
. #3077javac
. #2972 #3173stylelint
fixer now runs from the directory of the buffer and supports configuring the options. #2745styler
now uses transformers
instead of style
for options. #2838:ALEInfo
. #2686arguments
or command
for compile_commands.json
files. #2123:ALEFix
wasn't fixing files when only the case of characters had changed. #2744:ALERename
. #2709tsserver
. #2709tsserver
. #2709 #2780ale
sign group and priority in versions of NeoVim or Vim that are recent enough. #2786->
and ::
. #2599->
and ::
. #2601 #2643javascriptreact
and typescriptreact
filetypes. #2765ink-language-server
#2683purescript-language-server
#2572debride
#2694, sorbet
#2614gnatpp
#2631clangtidy
#2548clangtidy
#2548csc
#2586dfmt
#2662hindent
#2462nixpkgs-fmt
#2676sorbet
#2614metals
#2735sqlformat
#2702javalsp
options are now configurable. #2600powershell
linter now handles some output it didn't handle before. #2588mcsc
linter now handles more output. #2586clippy
options are now easier to configure. #2618GO111MODULE
can now be overwritten for all of the Go tools ALE supports. #2430stderr
for mypy
output in case a serious error appears, so it can be seen in :ALEInfo
. #2706black
fixer includes --pyi
for files with the .pyi
extension. #2705sh
linter for checking shells now handles error messages for other locales, such as Chinese or Russian. #2741languagetools
options are now configurable, so --autoDetect
can be removed or replaced with a specific language. #2616mdl
linter now reads JSON output with improved error details and an error code
. #2691node_modules
for semistandard
also. #2784psalm
language server linter now runs via the psalm
executable. #2659clang-tidy
. #2771tflint
linter now handles a newer error format, in addition to that older ones. #2775prettier
fixer now uses the glimmer
parser for handlebars files. #2563clangformat
fixer now users the --assume-filename
option for more accurate fixes. #2646ale_disable_lsp
setting wasn't applied if you didn't also ignore something else.ale_disable_lsp
setting wasn't applied to diagnostic callbacks if you had previously run language servers.ale_lint_on_save
is set to 0
after fixing a file with ale_fix_on_save
. #2497tsserver
diagnostics were off by 1 on the last character. #2551:ALEInfoToClipboard
and no clipboard is available. #2438checkstyle
error parser now stops after finding results in the newer format, so it doesn't show some errors twice. #2543ale_fix_on_save_ignore
setting. #1930deletebufline
function. #1739omnifunc
completion function. (set omnifunc=ale#completion#OmniFunc
) #2285let b:ale_completion_enabled = 0
.ale#lsp_linter#SendRequest
. #2549'S'
flag for writefile
to avoid using fsync calls for temporary files it creates, which may improve performance for some machines.b:ale_lint_on_insert_leave
can now be set to 0
to disable linting when leaving insert mode for particular buffers.cookstyle
#2362clj-kondo
#2377fecs
#2394dialyzer
#2509floskell
#2437fecs
#2394eclipselsp
#2121 #2523 #2520 fecs
#2394powershell
#2413reason-language-server
#2431sourcekit-lsp
#2420terraform
#2529xo
#2453latexindent
#2387ocp-indent
#2436reorder-python-imports
#2567styler
#2401pgformatter
#2540rls
now find the toolchain to use automatically. If rls
no longer starts for you, use let g:ale_rust_rls_toolchain = 'rls'
. #2432stack
and cabal
linters now set the working directory to where the file is. #2345shellcheck
is now set to the buffer's directory by default. #2446phpstan
problems are now marked as errors. #2444phpstan
now only sets a default level if no configuration file is found. #2444phpstan
can now be set with ale_php_phpstan_autoload
#2491pylint
can now be used instead of symbolic errors codes with let g:ale_python_pylint_use_msg_id = 1
. #2445ale_warn_about_trailing_whitespace
setting.ale_javascript_eslint_options
for fixing code with ESLint too. #1989phpcs
errors are now reported as style errors. #908gcc
linters now use -o /dev/null
or -o nul
so all errors are caught. #2512compile_commands.json
#2421cppcheck
now uses compile_commands.json
found in build directories. #2359cppcheck
now runs from the file's directory with -I
when a buffer is modified. #2506gcc
errors for inlined functions are now indicated more clearly. #2516.flake8
, instead of flake8.cfg
. #2502checkstyle
linter is now much more configurable. #2542clang-tidy
itself with ale_c(pp)_clangtidy_extra_options
. #2566xml
linters are now run on xsd
and xslt
filetypes by default. #2565cargo
linter now shows detailed error messages for clippy
errors. #2559rmarkdown
files now run R linters by default and suggest R fixers.shortmess
can't be set up to truncate messages. #2417javac
errors containing colons are now correctly handled. #2134ale#engine#CreateDirectory
has been renamed to ale#command#CreateDirectory
ale#engine#CreateFile
has been renamed to ale#command#CreateFile
ale#engine#EscapeCommandPart
has been renamed to ale#command#EscapeCommandPart
ale#engine#ManageDirectory
has been renamed to ale#command#ManageDirectory
ale#engine#ManageFile
has been renamed to ale#command#ManageFile
'executable_callback'
for linters has been deprecated. Use 'executable'
with a Funcref instead. #2132'command_callback'
for linters has been deprecated. Use 'command'
with a Funcref instead. #2132'command_chain'
for linters has been deprecated. Use ale#command#Run
instead. #2132'project_root_callback'
for LSP linters has been deprecated. Use 'project_root'
with a Funcref instead. #2132'address_callback'
for LSP linters has been deprecated. Use 'address'
with a Funcref instead. #2132'language_callback'
for LSP linters has been deprecated. Use 'address'
with a Funcref instead. #2132'initialization_options_callback'
for LSP linters has been deprecated. Use 'initialization_options'
with a Funcref instead. #2132'lsp_config_callback'
for LSP linters has been deprecated. Use 'lsp_config'
with a Funcref instead. #2132'chain_with'
for fixers has been deprecated. Use ale#command#Run
with a Funcref instead. #2132initialize
message with an initialized
notification. This was breaking some language server integrations. #2295cmd /c
on Windows so NeoVim works in PowerShell. #2009file:/foo/bar
and FILE:///foo/bar
are handled now. #2300file://C:|foo
are now translated to C:\foo
.src/main/java
now add src/test/java
for test files. #2305getcurpos()
causes curswant
to be changed, which can cause the cursor to move around strangely. #2330:ALEComplete
no longer replaces completopt
like automatic completion does. #2326ale_completion_max_suggestions
now correctly limits the number of results from LSP completion servers.ale#command#Run
function. See :help ale#command#Run
.:ALEDocumentation
can now be used to request documentation at your cursor with tsserver
only. #1520:ALEGoToDefinitionInSplit
and :ALEGoToDefinitionInVSplit
can now be used for opening definitions in split windows. #2141tsserver
results for :ALEFindReferences
now show text from the lines found. #2173:ALEFindReferences -relative
to show results with relative paths. #2238:ALESymbolSearch -relative
to show results with relative paths. #2255ALEComplete
command or with the <Plug>(ale_complete)
key. #2177 #2189'executable'
for linters can now be set to a Funcref
for calculating the executable string. #2132ale_disable_lsp
, while leaving other linters enabled. #2403compile_commands.json
file processing is now cached and ALE spends a lot less time processing the files. #2161compile_commands.json
file processing now uses the build directory as taken from the compilation database, for more accurate results. #2191compile_commands.json
and make -n
is now much better in general. #2194 #2168 #2131 #2272textlint
#2193bibclean
#2061cypher-lint
#2270elm-lint
#2378textlint
#2234bingo
#2165languagetool
#2155languagetool
#2155psscriptanalyzer
#2370bandit
#2250 #2303, pydocstyle
#2085, pylama
#2266raco
#2146textlint
#1978standardrb
#2133stylelint
#2219languagetool
#2155vlog
#2229, xvlog
#2229ghdl
#2229, vcom
#2229, xvhdl
#2229bibclean
#2061cmake-format
#2244ktlint
#2228textlint
#2193javalsp
linter should now be set up with a new distribution system. #2119 #2284sasslint
linter is now configurable, and will use a local installation if present. #2077swiftlint
linter will now use a Pod-managed install if available. (#2122)perl
is now handled. #2150black
can now be run via pipenv
. #1988make
linter will now find problems in test files for versions 0.19 and up. #2176pyls
is now configurable. #2230ksh
better. #2245shellcheck
dialect with ale_sh_shellcheck_dialect
. #2289stack ghc
options can now be configured with ale_haskell_stack_ghc_options
. #2235flake8
output is now handled to support the hacking
plugin. #2215elm
files can now be checked with elm-test
. #2225alex
linter now handles HTML content better. #2268alex
linter's executable can now be configured. #2268tsserver
are now run for nested tsconfig.json
files. #2290pylint
now runs from the project directory by default, or the buffer directory if no project can be found. #2302rls
options are now configurable. #2332credo
can now be set to --strict
mode. #2337jsonlint
now supports local executables like other JS linters. #2363gotype
now uses the -e
option to include all errors. #2340ale_javascript_standard_options
is now used for fixing files too.prettier
fixer now uses an explicit default parser when the parser is not otherwise known. #2220black
fixer now uses the buffer's directory as the working directory by default. #2262scalac
for finding more problems broke scalac
linting completely for some users, and has thus been reverted. #2093lacheck
results are now filtered by the filename, so only results for the current file are reported. #2136gqlint
now runs from the buffer's directory so the configuration files can be found. #2153--ignore-pattern
messages weren't being handled for ale_javascript_eslint_suppress_eslintignore
. #2192flow
linter wasn't showing the original error messages in the detailed error message strings. #2263hie
linter. This has been fixed. #2276