Bot releases are hidden (Show)
textEdit
but no insertTextFormat
. #4124b:ale_shell
and b:ale_shell_arguments
can now be used to set shell optionscodeActionLiteralSupport
so language servers such asrust-analyzer
return code actions to ALE. #4163ALEGoToImplementation
command has been added to go to the locationg:ale_floating_window_border
. #4215g:ale_floating_preview_popup_opts
. #4247'\k\+$'
. #4186 #4293 #4352out_cb
or err_cb
for jobs to swallow messages tovirtual-text
messages in Vim 9. #4281 #4291virtual-text
messages can be shown for all lines, not only the line the cursorale_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
,yamllint
to avoid running linters specialised for particularvimls
for Vader
files by default, and the default list ofVader
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 olderdetail
is not emptyterraform validate
. #4157actionlint
options can now be configured withale_yaml_actionlint_options
. #4216dart analyze
with --fatal-infos
to capture more information.deno.json
and deno.jsonc
to detect a Deno projectvolar
language server executable name now defaults tovue-language-server
, which is its current name. #4308clj-kondo
is now run with a filename hint to get more accurate problems.clang
to improve onpyrightconfig.json
and pyrightconfig.toml
in the list ofcwd
for pylsp
and Pyright to the detected or manuallypylsp
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 correctmarkdownlint
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.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 namedale_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. #4373Published by w0rp over 2 years ago
pyls
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. #3995Published by w0rp over 3 years ago
: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. #3706Published by w0rp about 4 years ago
g: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. #3183Published by w0rp over 4 years ago
*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. #2838Published by w0rp about 5 years ago
: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. #2646Published by w0rp over 5 years ago
ale_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.Published by w0rp over 5 years ago
shortmess
can't be set up to truncate messages. #2417javac
errors containing colons are now correctly handled. #2134Published by w0rp over 5 years ago
ale#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. #2262Published by w0rp over 5 years ago
scalac
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. #2276Published by w0rp almost 6 years ago
ale_fix_on_save
and :wq
, due to problems with writing to a buffer after it has been quit. #1960'vcol': 1
is now used for flake8
, so Unicode characters can be highlighted correctly. #2096:ALEInfoToClipboard
. #2110:ALESymbolSearch
command. See :help ale-symbol-search
.workspace/didChangeConfiguration
. #1852 #2035b:ale_linter_aliases
can now be set to a String
. #927:ALEDetail
. #1734:help ale-lint-other-sources
. #2017virtualtext
in the latest NeoVim versions when g:ale_virtualtext_cursor
is set to 1
.prettier
is now suggested as a fixer for HTML files. #2060mix
linter is now disabled by default, as it can consume far too much CPU power to run. #2084gcc
#2087vale
#2079ccls
#1950ccls
#1950dls
#1992dockerfile_lint
#1971elixirls
#1956 #2042ruumba
#2051ispc
#2068ccls
#1950perl6 -c
#1958psalm
#1893 #2018swipl
#1979terraform fmt
#2015hlint
. #1908stylelint
. #1917stack
by setting the _executable
options to a path to stack
. #1851credo
linter now handles more message types. #1963ansible_lint
. #1977ansible
linter is now known as ansible_lint
, and the ansible
and ansible-lint
aliases.initializationOptions
can now be configured for the Ruby solargraph
linter.cargo
linter can now be configured to use clippy
. #2001stack
linters are now only run if a stack.yaml
file exists. #1752rubocop
linter now respects filters for excluding files from the configuration file. #1999clang-tidy
linters now use the default checks by default, instead of all checks. Configuration files should now be respected by default. #2031jshint
via the --filename
argument. #2040php
linter. #2044hamllint
linter. #2048elixir-ls
linter now recognizes umbrella project roots. #2045golint
executable and options are now configurable. #2054checkstyle
linter now handles output from older versions. #2063scalac
linter now stops compilation just before execution, so more problems can be found. #2083phpstan
linter now supports newer versions of phpstan
. #2005jq
fixer. #1980rubocop
fixer now respects filters for excluding files from the configuration file. #1580Published by w0rp almost 6 years ago
mix
now runs from the project directory, which fixes some linter issues. #1954E523
error occurs when trying to echo an error message, ALE will now fall back on truncating messages itself. #1987cd /d
. #2012google-java-format
options were incorrectly named. #2016Published by w0rp about 6 years ago
prettier_d
could replace the contents of a file with an error message if it returned one. #1802tsserver
to be function types for auto-completion. #1905Foo::
. #1906eslint_d
when checking and fixing files.tsserver
would cause ALE to render errors much more than it needed to. This has been fixed by avoiding re-rendering when empty lists of errors are sent several times in a row.relatedInformation
from LSP diagnostics in the detail
key of loclist items, so more information about problems can be revealed with :ALEDetail
. #1815noblock
option for jobs and channels available from Vim 8.1 patch 350, which means that ALE doesn't block on sending messages to tsserver or LSP servers. This means there are no strange pauses sometimes. #1800g:ale_cursor_detail
to 1
before ALE is loaded. g:ale_close_preview_on_insert
can be set to 1
before ALE is loaded to automatically close the window upon entering Insert mode. #1889VimSuspend
event is triggered, say via Ctrl + Z.clangd
#1835, clazy
#1826golangci-lint
#1890, go-langserver
#1870stylelint
#1839javalsp
#1849languageserver
#1894clangd
#1835clangd
#1835solargraph
#1847sbtserver
#1871gomod
#1873hlint
#1836, stylish-haskell
#1837ocamlformat
#1856sqlfmt
#1897xmllint
#1866uncrustify
#1885cquery
language server can now also be started with .cquery
files. #1793rustc
linter now uses -Z no-codegen
by default. You may have to update your options. #1806go env
before running go test
, which fixes some issues. #1840go
executable for go
linters can now be configured with g:ale_go_go_executable
. #1873go vet
. #1818phpcs
. #1820puppet
can now be configured. #1865gitlint
no longer warns about B2
errors for trailing whitespace in body text if ale_warn_about_trailing_whitespace
is set to 0
.bundle
by setting the _executable
options to a path ending in 'bundle'
. #1850thrift
linter now includes files from the same directory as the source file by default. #1927pipenv
where available. #1719shfmt
now uses the buffer's indentation size for formatting. #1932Published by w0rp about 6 years ago
equalprg
setting with local version of the setting for the sandbox tests. 3c6af5f68d911a7fa2dda470224a09f344419d36importjs
fixer was not reading the _execuable
variable correctly. #1841languageserver
linter was broken in v2.1.0, and now it works again. #1844language_server
linter was broken in v2.1.0, and now it works again. #1881Published by w0rp about 6 years ago
In this release, the Hack linters have been moved to run for files with the hack
filetype, and the linters run using Language Server Protocol, offering completion support and more. Only the hack
linter is enabled by default, as hhast
can execute arbitrary code if enabled.
ALE now checks ALE project code with the custom linting script automatically. This should assist with developing ALE itself.
gawk
is now escaped. a42999a639b2916b769a85f37d037be314d9d61bkind
attribute should now be handled. This is required for clangd
. 7bf3a749d088964b2ae42e8019dc6a570173d1bffeedkeys()
puts keys to send in a queue. This has been fixed. #1700preview
completion option. #1690language
option for LSP linters is now optional, and the filetype will be used as the language by default.%e
in linter commands will now be replaced with the escaped executable name.scalastyle
linter's configuration file can now be configured with either g:ale_scala_scalastyle_config
or for a buffer with b:ale_scala_scalastyle_config
. The old g:ale_scalastyle_config_loc
option will be used as the default value until ALE 3.0. a42999a639b2916b769a85f37d037be314d9d61bale#Pad
can now be used for defining linter conveniently including possibly empty options. a42999a639b2916b769a85f37d037be314d9d61bale#Env
can now be used for defining linters including environment variables. a42999a639b2916b769a85f37d037be314d9d61bpipenv
by default. #1724g:ale_lint_on_enter
to 0
after ALE is loaded will now prevent the already loaded events for linting on entering a buffer from starting linters. The same rules applies to g:ale_lint_on_filetype_changed
. #1619compile_commands.json
files. See :help g:ale_c_parse_compile_commands
ac4bac8ea4c5a8d520041ad509e10af454fcfce4#include
lines. 16d0c52d24e8948b8bd8030e3fd112e0b6361c06clangd
#1751, cquery
#1757hhast
#1770cabal-ghc
#1742, hie
#1735fortran-language-server
#1736kotlin-language-server
#1725puppet-languageserver
#1697vulture
#1756vls
#1699yang-lsp
#1783isort
. #1698remark-lint
linter can now check files as you type. #1730remark-lint
linter will now run locally installed executables if available. #1730joker
linter now finds .joker
files inside project directories. #1760.flake8rc
to find the project root. #1776hack
linter now uses Language Server Protocol, offering all other supported LSP features.prettier
fixer can now fix YAML and HTML files without file extensions.Published by w0rp about 6 years ago
$TMPDIR
to '/tmp'
by default, which can break :!mktemp -p
on some systems. #1716verbose
was set greater than 0
. This has been fixed. #1687Published by w0rp over 6 years ago
gitlint
documentation have been fixed, with a new example added.ale_pattern_options
variables are unset. #1621Published by w0rp over 6 years ago
ALE no longer supports NeoVim versions below 0.2.0. If you're using an older version of NeoVim, the time to upgrade is now. Today ALE celebrates its independence from older versions of NeoVim. 🎆 🇺🇸 This is so ALE code can begin using lambdas and closures. Vim 8 support remains the same.
Despite supporting more features than ever, ALE also starts up faster than it ever has, thanks to some startup time optimizations.
g:ale_python_flake8_args
has been removed. Use g:ale_python_flake8_options
instead.g:ale_html_tidy_args
has been removed. Use g:ale_html_tidy_options
instead.ALEGetStatusLine()
and ale#statusline#Status()
have been removed. You should write your own status function instead, or use a companion plugin for ALE like lightline-ale.ALELint()
has been removed. Use ale#Queue()
instead.:edit
when jumping to definitions inside of files via LSP jumps such as "go to definition." Now :edit
won't be run if the location is inside of the file currently being edited. #1661prospector
linter would raise exceptions when no output was returned in NeoVim. This has been fixed. #1682intalizationOptions
for LSP linters. #1632tsserver
only when needed, which should improve startup times for some.b:changedtick
changes, which should result in fewer messages being sent. #1531'*'
can now be used as a filetype for ale_fixers
, meaning "every other filetype." #1417:ALEInfo
. This will help people figure out how to enable fixers. #1522g:ale_linters_ignore
. #1453 #1172augroup
groups, and should generally be set up faster than before.verilog_systemverilog
is now aliased to verilog
by default. #1674bash-language-server
#1641cquery
#1632cfn-lint
#1650mix compile
#1618pyre
#1691dartfmt
#1683tidy
#1673scalafmt
#1623qmlfmt
#1651puppet
versions on 5.4.0 or above are now supported. #1617g:ale_warn_about_trailing_whitespace
is now respected for gitlint
.cargo
can now be configured to check examples or tests. #1627pipenv run
by setting the executable to a pipenv
executable. #1625 #1629lintr
now uses the --vanilla
switch for Rscript
. #1638cython
linter now uses --warning-extra
by default to report more problems, and the options are configurable. #1675cargo
linter now only builds sub-crates by default. #1679--stdin-filename
option for reek
will now be set automatically when reek is version 5.0.0 or newer. #1412yamllint
, for applying consistent formatting.yamllint
handler now respects ale_warn_about_trailing_whitespace
.prettier
now sets --parser
automatically for buffers with certain filetypes and no file extensions. #1620Published by w0rp over 6 years ago
textlint
linter will now detect configuration files properly by using the --stdin-filename
option.textlint
linter will now run local versions of textlint
from node_modules
on Windows.flawfinder
linter for C++ didn't initialize a severity variable correctly. This has been fixed. #1385brittany
fixer wasn't writing its output correctly. This has been fixed. #1424pylint
linter now handles errors with Windows filenames properly. #1492/bin/sh
will be used in such cases. #1495Published by w0rp over 6 years ago
This is the last version of ALE which will support the deprecated features listed here and in the version 1.8.0 release notes. You should update to NeoVim 0.2.0 if you are using a lower NeoVim version as soon as you can, and you should switch from using the deprecated features to modern alternatives instead. All of the deprecated features will be removed from the git master branch on July 4th, and will be removed in version 2.0.0.
A commit showing all of the code that will be removed for ALE version 2.0 can be seen here: https://github.com/w0rp/ale/commit/fa103f08ed4e748cbb471fb2666ede04361a846b
The following legacy options have been marked as deprecated, and you will be warned about them if you use them. #1587
g:ale_python_flake8_args
- Replace with g:ale_python_flake8_options
g:ale_html_tidy_args
- Replace with g:ale_html_tidy_options
pylint
linter now runs from the buffer's directory, which allows pylint to find configuration files consistently. This behavior can be disabled by setting g:ale_python_pylint_change_directory
to 0
, if it causes problems for you. #1487flake8
linter now runs for the buffer's directory, to help flake8
find configuration files consistently. This behavior can be disabled by setting g:ale_python_flake8_change_directory
to 0
, if it causes problems for you.perlcritic
escaping on Windows was broken, and this has been broken.vcol
can now be set to 1
for linters which return character positions for potentially multi-byte text, instead of byte positions. #605:ALEInfoToFile <filename_here>
. #1439g:ale_use_global_executables
to 1
before ALE is loaded. #542ALEFix
command, complete with suggestions. #1510 #1564rls
and pyls
. #1162tsserver
. See :help ale-find-references
.:help ale-linter-loading-behavior
.ALEJobStarted
event whenever a job has successfully been started. #1543:help g:ale_completion_excluded_words
.tsserver
completion will now suggest some results for string literals, where possible. #1553:ALEInfo
output, to help users set up LSP linters. #1559vimwiki
files with markdown
linters by default. #1600cucumber
#1511pmd
#1488mmc
#1429perltidy
#1517black
#1451fsc
#1452qmlfmt
#1462xo
#1552g:ale_haskell_hdevtools_options
now defaults to get(g:, 'hdevtools_options', '-g -Wall'),
to respect an option in the hdevtools documentation. #1479vint
can now be configured. #1315javac
can now be configured. #1476gcc
linter for C++
can now be selected with either 'g++'
or 'gcc'
, which is now the preferred name. #1490--respect-prgama
option for flow
can now be disabled by setting ale_javascript_flow_use_respect_pragma
to 0
. #1504mdl
linter can now be run via Ruby bundles. #1550gcc
linters now show fatal errors as errors instead of warnings. #1563msgfmt
handler now improves the duplicate message warnings by including the line numbers for the other lines in the messages. #1584-wi
is now used so more warnings appear for D code. #1575sasslint
linter now finds local configuration more often. #1573phan_client
can now be used for phan
. See :help ale-php-phan
g:ale_php_cs_fixer_options
was added for configuring the php-cs
fixer. #1477