Check syntax in Vim/Neovim asynchronously and fix files, with Language Server Protocol (LSP) support
Support for NeoVim versions below 0.2.0 is deprecated in this version of ALE. Users using older versions of NeoVim will see a warning they can turn off when NeoVim starts. Support for NeoVim versions below 0.2.0 will be removed in ALE v2.0.0, to be released during Spring or Summer 2018. NeoVim 0.2.0 supports closures, which will make development of ALE easier.
The following functions will now emit deprecation warnings, and will be removed in ALE 0.2.0.
ale#statusline#Status()
ALELint()
ALEGetStatusLine()
'W'
and suggestions with 'I'
. #1384tslint
exectuable is now escaped. #416fish -n
are now handled properly on Linux. #1373g:ale_set_balloons
is set to 0
while Vim is running. #1404:help g:ale_command_wrapper
. #1115textDocument/didSave
to LSP servers when linting is done as the result of saving a file. #1288b:ale_linted
when buffers are checked, for use in other plugins. #1379:ALEStopAllLSPs
.ALEFixPre
and ALEFixPost
events when fixing files.b:ale_set_balloons
to 0
. #1404dialyxir
#1257erubi
#1157fish -n
#1252proselint
#1243luac -p
#1272gitlint
#1233gotype
#1099markdownlint
#1394, textlint
#1383 #1448alex
#1321, msgfmt
#1321, proselint
#1321, write-good
#1321ponyc
#1343qmllint
#1419textlint
#1448fixjson
#1284, jq
#1303flawfinder
#1361flawfinder
#1361php-cs-fixer
#1390rufo
#1415gawk
linter now prevents arbitrary execution of code by exiting early. #1411ghc
can now be configured. #1260tidy
linter will now no longer run the outdated version of tidy
which comes with Mac OSX. Install a modern version via homebrew instead. #1262htmlhint
will now automatically use the .htmlhintrc
configuration file when checking for problems while you type. #1038mypy
with g:ale_python_mypy_ignore_invalid_syntax
.cargo
linter. #1275protoc
are now configurable. #1268credo
and dogma
linters now contain a work-around for an obscure hot-reloading issue. #1266stderr
for newer versions of ESLint. #1246hadolint
linter now reports Dockerfile parse errors. #1308hadolint
linter now outputs hyperlinks with information about errors for :ALEDetail
. #1308lintr
have been solved. #1326gobuild
linter. #1206gobuild
linter should now set GOPATH
on Windows. #1206gobuild
linter should now escape the path for GOPATH
and for changing the directory. #1206lintr
linter can now be set to lint packages. See :help g:ale_r_lintr_lint_package
#1332go vet
linter now only lints files and checks the entire package, which solves a number of problems, but removes the ability to use it to lint while you type. #1369 #1358staticcheck
linter for Go can now be set to lint all files in a package, which can solve some problems with linting certain files. See :help g:ale_go_staticcheck_package
perl
linter now reports warnings as warnings. #933perl
linter now only shows the first problem among many problems one line. #933mdl
linter options are now configurable. #945g:ale_c_flawfinder_error_severity
. #1400gotype
linter will now only check files on disk, so it can work with vendored-only dependencies. #1392gotype
and gosimple
linters will now check whole packages, which seems like the only thing that will work properly. #1433 #936mix
format options are now configurable. #1410remark
linter. #1207elm-format
fixer is now available as 'elm-format'
, in addition to the old name of 'format'
. #1395rustfmt
will now apply project settings correctly by using stdin and stdout instead. #1254clang-check
correctly. #1255isort
configuration files will now be detected more accurately by changing the working directory instead of setting the configuration file. #1330ansible-lint
when the option is on. #1216:help ALEToggleBuffer
. #817ALEReset
or ALEResetBuffer
. #719b:ale_fix_on_save
can now be used for controlling fixing on save for specific buffers. #857'read_buffer': 0
, just like linters.b:ale_fixers
can now be set to a List
. #1108b:ale_linters
can now be set to a List
. #1108b:ale_linters
can now be set to 'all'
. #1108b:ale_linter_aliases
can now be set to a List
. #1108'I'
problems as 'Info'
.:help b:ale_echo_msg_format
:help g:ale_loclist_msg_format
#1069 #852:help g:ale_linters_explicit
#1128:ALEDetail
will now show messages in a preview window. #757:help ale-go-to-definition
.:help g:ale_warn_about_trailing_blank_lines
.let g:ale_cache_executable_check_failures = 1
#1176ALELintPre
has been added for running code just before ALE starts linting.runtimepath
when g:ale_emit_conflict_warnings
is set to 0
. #1049ALELint
autocmd commands are set. #1062id
key
for the LSP notification messages at all, instead of v:null
. #1110tsserver
completions will now be requested again after completion is done only if the cursor moves, rather than waiting for 100ms. #1041perl
linter is now disabled by default, as it can execute malicious code. #1186ALELint
autocmd has been renamed to ALELintPost
, but the old commands will still be run until version 2.0. On version 2.0, ALELint
commands will probably be removed.mypy.ini
files for finding Python project roots.venv
for finding virtualenv directories by default. #1237alex
#1220, redpen
#1142, write-good
#643 #811drafter
#1152joker
#1133dafny
#1093dart_language_server
#1006glslls
#1179eslint
#1169alex
#1220, write-good
#643 #811alex
#1220, redpen
#1142, vale
#1230, write-good
#643 #811lessc
#1103, stylelint
#510alex
#1220, proselint
#1037, vale
#1044alex
#1220, redpen
#1137, write-good
#643 #811alex
#1220, write-good
#643 #811ols
#1110phan
#1026alex
#1220, write-good
#643 #811protoc-gen-lint
#1098prospector
#565 #1183, pyflakes
#516, PyLS
#1097solhint
#1192ols
#1110alex
#1220, redpen
#1142, rstcheck
#1090, vale
#1230, write-good
#643 #811redpen
#1142tflint
#1046alex
#1220, write-good
#643 #811alex
#1220, redpen
#1142, write-good
#643 #811alex
#1220, write-good
#643 #811alex
#1220, write-good
#643 #811mix format
#1017goimports
#1123hackfmt
#1053brittany
#1174, hfmt
#1027google-java-format
#1209importjs
#1191refmt
#1059rustfmt
#1025shfmt
#1083rubocop
and haml-lint
configuration files will be now used for ham-lint
automatically. #1047shellcheck
linter will now use -x
and follow sourced files when checking for errors. #491shellcheck
linter now uses the type 'I'
for notes. #1122phpcs
linter will now include the error code in the message. #1009:help g:ale_javascript_eslint_suppress_missing_config
. #971cargo check
and cargo check --all-targets
will now automatically be used when cargo
is new enough. g:ale_rust_cargo_use_check
or g:ale_rust_cargo_check_all_targets
can be set to disable either. #626phpmd
executable can now be configured, and error checking should be more reliable. #1076flow
linter will now include more information for errors in the :ALEDetail
message. #946msgid
values (like E0103
) are no longer reported for pylint, which aren't human-readable. #852erb
files. #580 #1114iverilog
. #1143javac
linter now includes test source paths for test files. #859javac
linter now includes jaxb source paths when available. #859gobuild
linter. #1154foodcritic
linter has been overhauled to check only files on disk with better error messages. #1151flow
will no longer check files with home directory configuration files by default, which can eat all of your CPU and RAM. Set g:ale_javascript_flow_use_home_config
to 1
to use home directory configuration files, if you really must. #783rls
can now be selected. See :help g:ale_rust_rls_toolchain
#1166ruby
executable is now configurable. #1168flake8
and pycodestyle
.phpcbf
linter should now work properly, apparently. #1188puppet
linter now parses output which doesn't include column numbers. #1182perl
is now properly escaped.gometalinter
can now be configured to report problems from other files. See :help g:ale_go_gometalinter_lint_package
#1156php
linter now handles error output from PHP 7.2, which has slightly different output.vale
linter now parses end column numbers, for better highlighting.erb
linter now works on puppet style templates. #1221mcsc
linter paths and escaping should now work on Windows.ember-template-lint
linter will now parse line and column numbers for fatal errors if they are included.rustc
can now be configured, so -Z no-trans
can be replaced with something else. #1031prettier
fixer will now use the --stdin-filepath
argument when the version is 1.6.0 or greater. #1095prettier_eslint
fixer will now use the --stdin-filepath
argument when the version is 4.4.0 or greater. #1095prettier_eslint
fixer will now use the --eslint-config-path
argument only when the version is 4.2.0 or greater. The old legacy option has been removed, as it is no longer needed. #1095'prettier-eslint'
may now be used in place of 'prettier_eslint'
for fixers.'prettier-standard'
may now be used in place of 'prettier_standard'
for fixers.--fix-to-stdout
is now used for better configuration detection for eslint_d
where available. #988--fix-dry-run
is now used for ESLint 4.9.0 and up for fixing files with better configuration file detection. #988cargo
output from either stdout
or stderr
, to support more versions of cargo
#1045.
#1048ash
and dash
are now supported for shell linters #1051CompleteDone
, fixing a bug where the menu kept re-opening #1041gosimple
and staticcheck
will now check only the actual files on disk, because that is all they support. #936php
linter will no longer write to the PHP error log. #1072erlc
linter is now supported on Windows. #1071javac
linter wasn't handling errors from other files correctly. This has been fixed. #1061tsserver
messages which include a buffer's text data will now include a final line feed, so tools which complain about missing newline characters will be quiet. #1085no-implicit-dependencies
for most files with in TSLint's latest version, because TSLint does not fully support checking for errors while you type yet. These errors have been silenced for now. #1101phpmd
errors has been updated, so errors may be handled better in some cases. #1032:help g:ale_max_signs
#965:help g:ale_echo_delay
#965v:exiting
is set in NeoVim 0.2.0 and above. #904:wq
or :x
, which did nothing useful. #904clang-tidy
#827mcsc
(See :help
ale-cs-mcsc`) #952glslang
#914thrift
#892remark-lint
#1010prettier
for TypeScript, CSS, SCSS, LESS, and JSON #910 #1018elm-format
#916gofmt
#970trim_whitespace
#991tslint
#1001prettier_d
for prettier
, if it is installed. #885javac
linter will now include paths based on gradle build commands. #889:help ale-sml-smlnj
#884:help g:ale_typescript_tslint_ignore_empty_files
brakeman
linter will now report problems for other files in quickfix and loclist.slim-lint
linter will now use rubocop configuration files. #903 #942shellcheck
linter now arranges the arguments in such a way that manually changing the dialect is possible. #949phpstan
configuration file can now be configured. #969$VIRTUAL_ENV
will be used for running Python tools when no local directories can be found. #990luacheck
linter will now respect the g:ale_warn_about_trailing_whitespace
option. #968scalastyle
when no configuration file was found. #977prettier
. See :help g:ale_javascript_prettier_use_local_config
#886prettier-eslint
fixer now uses the eslint configuration file by default, which will yield better results, but may break things for some users. See :help g:ale_javascript_prettier_eslint_legacy
#854yapf
fixer should now run local virtualenv executables on Windows.standard
fixer can now be used even if the linter is never loaded.staticcheck
and gosimple
now capture both output streams so they will report errors where they didn't. #921eslint --fix
now uses -c
instead of --config
for specifying the configuration file, which apparently works better in some versions. #951shellcheck
by parsing hashbang (#!
) lines. #869pycodestyle
is now disabled by default, as it is also installed when you install flake8
. #888node.exe
instead of node
to execute Node.js scripts on Windows, and the path can be configured if needed. See :help g:ale_windows_node_executable_path
#895g:ale_lint_on_enter
is set to 0
. #505tsserver
integration was broken due to a bug in NeoVim. A workaround has been added to fix this issue in ALE. #907:help g:ale_history_log_output
for more information.yapf
failed, they were removing all of the lines in files. This has been fixed. #706brakeman
linter was throwing errors when no output was returned. This has been fixed. #716ansible-lint
was reporting errors from other files. This has been fixed. #216rubocop
. Now it does. #732ghc
linter was showing warning as errors. This has been fixed. #710flow
linter didn't support older versions of flow. This has been fixed. #735fish
, some ALE commands didn't work. Now /bin/sh
will be used instead when the shell is set to fish. #749eslint --fix
needed to be executed with node
on Windows when installed via create-react-app
. This has been fixed. #775scalac
was being run for SBT files with the filetype scala.sbt
. Now scalac
is not run for SBT files. #804tsserver
. This has been fixed. #798fileformat=dos
, carriage returns were not included. This has been fixed. #823flake8
wasn't parsing errors if you configured the format option in configuration files. Now the format is always explicitly set in the command, so it works. #837rubocop
fixer now uses the same options that the linter is configured with. #841lint_file
linter, ALE would not downgrade signs in the sign column. This has been fixed. #825:help ale-lsp-linters
for documentation on how LSP linters can be defined. #517tsserver
. See :help ale-completion
:ALEFixSuggest
will now suggest tools for fixing problems in a new window, instead of a long echo message.:help ale-cool-down
#468g:ale_pattern_options
by using names starting with &
.__init__.py
file. #755:help g:ale_open_list
#271b:ale_open_list
and b:ale_keep_list_window_open
are now supported. #271ALEInfo
will now print the results of executable checks for linters, which should help you figure out why a linter might not be running.dartanalyzer
#308SyntaxErl
#774erubis
#865gqlint
#863idris
#838langserver
#517, phpstan
#772pycodestyle
#872lintr
#182rails_best_practices
#751rls
#517scalastyle
#766stylelint
#178nagelfar
#821swaglint
#771clang-format
#873stylelint
#657 #813prettier-standard
#702standard
#781phpcbf
#862puppet-lint
#701swiftformat
#842elm-make
linter now includes end line and column numbers for highlights. #699verilator
linter's options can now be configured. #698pug-lint
linter now detects node_modules
executables, like other linters, and supports the same options as most other linters. https://github.com/w0rp/ale/commit/79e8e063af1cf7a72ec42075f4eed30aa69607e8
perlcritic
linter now supports more options and will automatically load configuration files. See :help ale-perl-perlcritic-options
#675luacheck
linter now includes the error codes in the message. #717hadolint
linter can now be run via a Docker image. #720stylelint
linters will now print exceptions thrown by stylelint
, including missing configuration files.gometalinter
linter's executable can now be configured.jscs
linter can now be used with older versions of jscs. #737rubocop
linter now works with older versions of rubocop. #339 #738rubocop
linter now includes end column numbers for better error highlighting. #738rubocop
linter now includes the error type in the error messages. #820clang-check
linter now uses some additional arguments to avoid generating .plist files if no build directory is set. #703hlint
linter now uses type I
for suggestions. #710hlint
linter now includes end line and column numbers for better highlighting. #710hdevtools
linter's options and executable can now be configured. #799ghc-mod
linter will now map the temporary file for better error messages. #846SyntaxErl
linter will now include the basename option when available. #860 #861Vint
problems will be highlighted better.yapf
fixer now only sets --no-local-style
if a configuration file is detected. #786