You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ALE now defaults g:ale_disable_lsp to a new 'auto' mode. With this
setting applied, ALE will now check for the presence of the nvim-lspconfig
plugin and automatically turn off particular linters if already
configured via nvim-lspconfig.
ALE now has an ALEStopLSP command to stop all language servers with provided
names so only specific language servers can be stopped with a command.
ale#floating_preview#Show, while not officially supported as part of ALE's
API, now returns the preview window ID so you can more easily work with it. Return floating_preview window id #4828
The VSCode JSON language server now works with newer versions that use the vscode-json-languageserver executable name instead of vscode-json-language-server. fix(json): update vscode json lsp name #4601
The volar linter has been updated to work with version 1.0, and uses the
global executable by default, which is required for Volar to function
properly. fix(vue): volar v1 support #4552
If luacheck is run for a Lua file in &runtimepath then ALE automatically
adds --globals vim so the linter is aware of Vim globals. This makes it
easier to lint Vim plugins written in Lua without having to configure anything
manually.
ALE had a bug that was around for some time where echoed error messages would
break the user out of visual mode. This has been fixed. Don't echom if not in normal mode #4560
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Deprecated Features
:ALEInfo'
enhancements have led to some deprecations. See new featuresbelow. :ALEInfo -preview and more #3368
:ALEInfoToClipboard
has been deprecated in favour of:ALEInfo -clipboard
.Removed Features / Breaking Changes
golint
has been removed, as it represents long ago been deprecated andfrozen. Remove golint support #4535
gometalinter
has been removed, as it has been unsupported for a long timenow. Remove gometalinter support #4534
to work with Neovim versions lower than 0.7.0.
ve-py3
as a virtualenv directory by default. Maybe: Respect PEP 704 virtualenv path default #4481g:ale_linters_sh_shell_default_shell
option has been removed,and users should use
g:ale_sh_shell_default_shell
instead.ale_lsp_root
option has been removed. Useale_root
instead.New Features
in compatible Vim versions, so they look very subtle when editing code. Use comment colors and characters as the default for virtual-text #4401
let g:ale_python_auto_virtualenv = 1
to automatically updatePATH
based on Python virtualenv locations to run executables. Python: Automatically set virtualenv paths #2172g:ale_virtualtext_column
andg:ale_virtualtext_maxcolumn
. Virtualtext formatting and alignment fixes #4473g:ale_virtualtext_single
. Virtualtext formatting and alignment fixes #4473warnings.
the first problem by column position on the line.
ale_signs
group for signs as to not disturbvirtual text messages which use the group
ale
. Use different group names for signs and virtual text #4704versions of Neovim. diagnostics: support sending ALE output to Neovim's diagnostics API #4345 Display by Neovim diagnostics by default (where possible) #4442 Display by Neovim diagnostics by default (where possible) #4442 fix(neovim): ignore unrelated diagnostics #4597 feat: remove logic for unsupported older Neovim #4921
let g:ale_use_neovim_diagnostics_api = 0
to disable thisbehavior.
numhl
highlights are now supported. Support numhl highlights for vim >= 8.2.3874 #4578ModeChanged
event instead ofInsertLeave
emulation with a timer to run linters when leaving insert mode,which is less buggy and more efficient. Possible fix for issue #4642: use ModeChanged events instead of InsertLeave emulation #4738
nvim_buf_set_lines
. Improve ALEFix performance for neovim #3974jumplist and can disturb the cursor position. See Fixers + nvim + split windows causes jumps #4735.
run with
let g:ale_save_hidden = 1
.:ALEInfo
has been supercharged with a new set of features. :ALEInfo -preview and more #3368:ALEInfo -clip
as a shorthand for:ALEInfo -clipboard
:ALEInfo -preview
to render in the preview window:ALEInfo -echo
for the classic:ALEInfo
mode'preview'
, and make it configurable. See::h ale_info_default_mode
.:ALEInfo
in preview mode.Linter Variables
section.:ALEInfo
no longer reports information about its own window. Prevent:ALEInfo
from reporting info about its own preview window #4618g:ale_disable_lsp
to a new'auto'
mode. With thissetting applied, ALE will now check for the presence of the
nvim-lspconfig
plugin and automatically turn off particular linters if already
configured via
nvim-lspconfig
.ALEStopLSP
command to stop all language servers with providednames so only specific language servers can be stopped with a command.
:ALEGoTo...
commands ALE will now presentthe user with a list of choices if more than one location is available. Implement listing all returned results for LSP textDocument/implements #4755
ale#floating_preview#Show
, while not officially supported as part of ALE'sAPI, now returns the preview window ID so you can more easily work with it.
Return floating_preview window id #4828
:ALEFindReferences -quicfix
fortsserver
. Add matched text to ALEFindReferences -quickfix for tsserver #4898callback
returns anything other than aList
ALE willnow silently treat the output as if it was an empty list. more defensive coding: guard against a non-iterable loclist #4912
New Linters
eslint
Add support for astro #4780,prettier
Add support for astro #4780llvm-mc
Add support for llvm-mc as an assembly linter #4446buildifier
feat: support Bazelbuildifier
linter #4529clangcheck
Add clang-check linter for C #4662c3lsp
Add support for c3-lsp linter #4836sierra
Update cairo linter to Cairo 1.0 #4530,scarb
Add support for Scarb incairo
files #4669biome
Add biome (ex. rome) support for javascript #4701 Add full support for biome #4705 fix(biome): use temp file instead of stdin #4775 fix(biome): send correct language to lsp proxy #4773 fix(biome): find root when using biome.jsonc #4774 fix(biome): update biome fixer supports css and graphql #4902dockerlinter
Dockerlinter #4518lexical
Add lexical for linting elixir projects #4580htmlbeautifier
Add htmlbeautifier support #4751gleamlsp
Gleam: Support for gleam language server #4696,gleam format
Gleam: Support 'gleam format' as fixer #4710embertemplatelint
Add support for gjs template linting using embertemplate lint #4653biome
Add biome (ex. rome) support for javascript #4701 Add full support for biome #4705 fix(biome): use temp file instead of stdin #4775 fix(biome): send correct language to lsp proxy #4773 fix(biome): find root when using biome.jsonc #4774 fix(biome): update biome fixer supports css and graphql #4902npm-groovy-lint
Add support for npm-groovy-lint #4495djlint
Add support for the [djlinter](https://www.djlint.com/) #4909,eslint
add eslint plugin html for linting js in html files #4428hurlfmt
Fix 4740 - add hurlfmt linter #4741biome
Add biome (ex. rome) support for javascript #4701 Add full support for biome #4705 fix(biome): use temp file instead of stdin #4775 fix(biome): send correct language to lsp proxy #4773 fix(biome): find root when using biome.jsonc #4774biome
feat(biome): add support for json and jsonc #4805 fix(biome): use temp file instead of stdin #4775 fix(biome): send correct language to lsp proxy #4773 fix(biome): find root when using biome.jsonc #4774lua-language-server
f2a21c9marksman
feat(markdown): add marksman lsp #4565,pymarkdown
Update: #4785 New tool pymarkdown added for markdown linting #4906deadnix
Add deadnix linter #4443ols
Adding support for Odin language server --ols
#4679pycln
add: pycln as a python linter and fixer #4415packwerk
Add support for Packwerk #4594,steep
Add Ruby linter with Steep #4671biome
Add biome (ex. rome) support for javascript #4701 Add full support for biome #4705 fix(biome): use temp file instead of stdin #4775 fix(biome): send correct language to lsp proxy #4773 fix(biome): find root when using biome.jsonc #4774slang
Slang linter for Verilog/SystemVerilog. #4713yq
Add yq support #4861yls
Yara yls support #4886New Fixers
eslint
Add support for astro #4780,prettier
Add support for astro #4780apkbuild-fixer
Implement support for apkbuild-fixer #4881cljfmt
Add cljfmt fixer for clojure files #4860biome
Add biome (ex. rome) support for javascript #4701 Add full support for biome #4705 fix(biome): use temp file instead of stdin #4775 fix(biome): send correct language to lsp proxy #4773 fix(biome): find root when using biome.jsonc #4774 fix(biome): update biome fixer supports css and graphql #4902erlang-mode
Add erlang-mode fixer for Erlang files #4848,erlfmt
Add erlfmt fixer to the registry and use it with stdin #4868golangci-lint
Add golangci-lint fixer #4853,gopls format
0af4899biome
Add biome (ex. rome) support for javascript #4701 Add full support for biome #4705 fix(biome): use temp file instead of stdin #4775 fix(biome): send correct language to lsp proxy #4773 fix(biome): find root when using biome.jsonc #4774 fix(biome): update biome fixer supports css and graphql #4902npm-groovy-lint
Add support for npm-groovy-lint #4495rustywind
Add support forrustywind
fixer #4477fourmolu
Add fourmolu fixer #4501hurlfmt
Fix 4740 - add hurlfmt linter #4741biome
Add biome (ex. rome) support for javascript #4701 Add full support for biome #4705 Fix biome formatter #4733 fix(biome): use temp file instead of stdin #4775 fix(biome): find root when using biome.jsonc #4774 fix!(biome): allow passing options tobiome check
#4799biome
feat(biome): add support for json and jsonc #4805 fix(biome): use temp file instead of stdin #4775 fix(biome): find root when using biome.jsonc #4774 fix!(biome): allow passing options tobiome check
#4799nickel format
add: support fornickel format
asNickel
fixer #4665alejandra
Add alejandra for nix #4435scadformat
Add scadformat fixer for OpenSCAD #4808json.tool
Add fixer for json: python's json.tool #4847,pycln
add: pycln as a python linter and fixer #4415,ruff format
Adding support for ruff formatter #4645erb-formatter
Adds erb-formatter support #4546,rubyfmt
add: support forrubyfmt
asruby
fixer #4678forge
Feature: addforge fmt
as a fixer for Solidity files #4598biome
Add biome (ex. rome) support for javascript #4701 Add full support for biome #4705 Fix biome formatter #4733 fix(biome): use temp file instead of stdin #4775 fix(biome): find root when using biome.jsonc #4774 fix!(biome): allow passing options tobiome check
#4799yamlfmt
yamlfmt #4587,yq
Add yq support #4861Linter Enhancements
compatibility in newer versions.
nix
versions before 2.4 should be supported as well as newer versions. nix: durably handle versions before 2.4 #4398ruff
in version 0.0.69 and up. fix(ale_linters: python: ruff): add --stdin-filename if version >= 0.0.69 #4414ruff
withruff check
in versions 0.3.0 andup to make it compatible with those versions. Fix: ruff version
0.3.0
cli breaking changes #4732 Fix for ruff fixer for ruff version >=0.5.0 #4802--no-fix
withruff check
so it doesn't modify files whenlinting. fix: force
--no-fix
whenruff
used as a linter #4759ansible-lint
has been patched to work with versions 6.11.0 and newer. Fix error from ansible-lint versions >=6.11.0. #4492vscode-json-languageserver
executable name instead ofvscode-json-language-server
. fix(json): update vscode json lsp name #4601solhint
versions newer than 3.4.0, as wellas older versions.
solhint >= 3.4.0
linter is broken #4499ruff
versions. Fix: Ruff output option #4632phpmd
versions. fix tempfile for phpmd, to be able to use phpmd 2.14.0 #4617volar
linter has been updated to work with version 1.0, and uses theglobal executable by default, which is required for Volar to function
properly. fix(vue): volar v1 support #4552
stylelint
error messages from stderr as well as stdout.This makes ALE support newer as well as older versions. Stylelint linter output stream can go to stderr #4702
shellcheck
versions 0.7.0 and above forcreating more accurate highlights for problems. Add end_col and end_lnum to ShellCheck #4692
sqlfluff
3.0.0 and up, in addition to older versions.Add support for sqlfluff 3.0.0 #4743
jq
linter error message parsing has been updated to handle outputfrom versions 1.6 and up. Fix linting with jq (#4765) #4862
phpstan
will now set the memory limit more appropriately for newerversions. fix: memory-limit option for phpstan #4900
phpstan
will now set use the cwd to find the configuration file soconfiguration files are detected better. phpstan: set cwd to configuration file directory #4422
phpstan
filenames will now be mapped correctly so it matches files betterwhen run from inside of Docker. Add file mapping to phpstan #4685
pyright
can now be automatically be run via poetry, pipenv, venv. Support for poetry and pipenv with pyright #4389Fix 4490 - Fix pyright not running with poetry #4491 Fix python linting/formatting error when in virtual environment #4865
uv
. Improve support for python package manage: pipenv, poetry and uv #4825 Fix python linting/formatting error when in virtual environment #4865golangci-lint
is no longer configured with--enable-all
by default so itdoes not conflict with project configuration files and fail to run. remove
--enable-all
from golangci-lint options #4488golangci-lint
is now enabled by default. feat: enable golangci-lint by default #4536golangci-lint
now lints the package by default, as Go can implicitlyreference symbols from other files. Fix 4586 - Make golangci-lint lint package on by default. #4730
golangci-lint
messages are now read from JSON output for more accurateparsing of linter output. Fix 4913 - use JSON output for golangci-lint instead of regexps. #4917
bicep
can now be run via Azure CLI via anaz_bicep
linter using theaz
command. Add support for Bicep when installed as a plugin to Azure CLI #4496
erb
linter uses keyword arguments to avoid a deprecation warningand make it compatible with future Ruby versions. 🐛 Fix a Ruby deprecation warning in the ERB linter #4521
cspell
has been updated to highlight the whole word. Add end_col of matched forbidden word #4556glsllang
linter parsing has been updated to catch more errors. fixed parsing errors when certain options are used in glslangValidator #4540xmllint
linter has been updated to work on XML files that haven't beensaved yet. Support format xml file which haven't yet persisted at the disk #4585 xmllint fixer must read from stdin - not buffer filename #4884
actionlint
on GitHub configuration files by default bysearching upwards for a
.github
directory.actionlint
now respects project configuration files by linting in thedirectory instead of a temporary location. fix(yaml): make actionlint respect config #4584
actionlint
will be run with an appropriate configuration file. When usingactionlint
look for & use a config file #4858actionlint
now lints one file at a time via stdin instead of the wholedirectory. fix #4687 - only lint one file with actionlint instead of whole directory #4688
actionlint
sub-linters. Actionlint: correctly parse error line when using shellcheck sublinter #4689rust-analyzer
by default for Rust instead ofrls
, which waspreviously deprecated. RLS for rust has been deprecated. #4461
luacheck
is run for a Lua file in&runtimepath
then ALE automaticallyadds
--globals vim
so the linter is aware of Vim globals. This makes iteasier to lint Vim plugins written in Lua without having to configure anything
manually.
.venv
is the preferred project directory name for virtualenv directories forPython tools. Maybe: Respect PEP 704 virtualenv path default #4481
reliably. Fix project file search for haskell hls #4541
ruff
now usesjson-lines
output for better error messages. Ruff use json-lines output format #4656ruff
throws errors, don't explode with errors in Vim. Ruff always raises E474: Unidentified byte and E474: Failed to parse bash on ALELint #4714chktex
reports better highlight columns when tabs are used instead ofspaces. Fix chktex highlighting wrong column when using tabs instead of spaces #4661 Fix chktex highlighting wrong column when using tabs instead of spaces #4727
cspell
so it can more accurately lint files.Add language id option of CSpell #4700 Fix 4721 - force latex language id on cspell for tex filetype #4724
shellcheck
wiki in detailed messages. Add wiki link to ShellCheck linting #4681elvis
linter for Erlang now sets the working directory correctly. Set working directory for Elvis linter #4726.eslintrc.cjs
configuration files are now supported. Add support for .eslintrc.cjs #4742eslint.config.js
,eslint.config.mjs
, andeslint.config.cjs
. feat: add support for ESLint's flat config format #4753in nested project directories. Fix/eslint cwd strategy #4781
cmake-lint
is now passed the real filename so the.cmake-format
configuration file can be read. Make cmake-lint read .cmake-format config file #4747
php-cs-fixer
arguments are now placed in their proper place so options canbe correctly configured. Added fix subcommand options #4746
metals
default executable was incorrectly named asmetals-vim
,and this has been fixed to be
metals
now. Update metals.vim #4843erlang-ls
to select theerlang_ls
linter. Add erlang-ls as an alias for erlang_ls linter #4852sqlfluff
error messages without end line or column numbers are now handled.Properly handle optional end_line_no/end_line_pos in sqlfluff #4867
iverilog
to improve linting. iverilog current file search path #4907black
linter is now told where a file is with--stdin-filename
.Python black doesn't respect ignored files in their config files #3406
opa check
now runs on the entire directory for more context. fix: run opacheck on entire dir for more context #4531Fixer Enhancements
ruff
in version 0.0.69 and up. fix(ale_linters: python: ruff): add --stdin-filename if version >= 0.0.69 #4414syntax_tree
fixer now formats files without creating temporary files.syntax_tree: no need to write and read temporary file #4834
stylua
fixer now uses--stdin-filepath
and sets the cwd to wherethe configuration file is. fix: stylua should have cwd and --stdin-filepath #4873 Fix cwd setting to use .stylua.toml if stylua.toml is not found #4892
Bugs Fixed
on changes to ALE code. (Only impacts ALE developers.) Vim virtual-text isn't cleared when ALE's lint cycle is finished #4399
before ALE can show a message. Error after upgrade from v3.2.0 to v3.3.0 #4410
Error (Invalid buffer) with fzf-lua #4413
Fix mismatched type on compare g:ale_virtualtext_cursor #4476
been fixed to use correct newlines. Erroneous
text
formatting upon LSP didSave #4455Communicate support for markdown to the lsp server (#4450) #4453
break the user out of visual mode. This has been fixed. Don't echom if not in normal mode #4560
0.10 and up. floatwin: use win_execute in NeoVim for commands when it exists #4532
we don't have highlights for. Fix error loading "text" syntax for hover #4574
fixed. ale#Env quoting bug on Windows #3115
b:undo_ftplugin
has been added to ALE's ftplugin files for special filetypesso the changes they make can be undone. add b:undo_ftplugin #4625
correctly now. Fix E1085: Not a callable type: elm_ls#GetOptions #4707
PATH
andVIRTUAL_ENV
correctly whenale_python_auto_virtualenv
is used. fix ale_python_auto_virtualenv to correctly set virtualenv env vars #4885This discussion was created from the release ALE v4.0.0.
Beta Was this translation helpful? Give feedback.
All reactions