Check syntax in Vim/Neovim asynchronously and fix files, with Language Server Protocol (LSP) support
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. #1580mix
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. #2016prettier_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. #1932equalprg
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. #1881In 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.$TMPDIR
to '/tmp'
by default, which can break :!mktemp -p
on some systems. #1716verbose
was set greater than 0
. This has been fixed. #1687gitlint
documentation have been fixed, with a new example added.ale_pattern_options
variables are unset. #1621ALE 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. :fireworks: :us: 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. #1620textlint
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. #1495This 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