Skip to content

Releases: dense-analysis/ale

ALE v1.8.0

25 Mar 12:15
164c711
Compare
Choose a tag to compare

Deprecated Features

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()

Bugs Fixed

  • tsserver now reports warnings with 'W' and suggestions with 'I'. #1384
  • The tslint exectuable is now escaped. #416
  • Forward slashes in temporary filenames could cause issue with errors being reported on Windows. This has been fixed. #1431
  • Errors returned by fish -n are now handled properly on Linux. #1373
  • ALE will no longer show balloons when g:ale_set_balloons is set to 0 while Vim is running. #1404

New Features

  • ALE now supports wrapping commands that are run. See :help g:ale_command_wrapper. #1115
  • ALE will now send textDocument/didSave to LSP servers when linting is done as the result of saving a file. #1288
  • ALE now increments a variable b:ale_linted when buffers are checked, for use in other plugins. #1379
  • LSP-like clients can now be stopped with :ALEStopAllLSPs.
  • ALE now runs ALEFixPre and ALEFixPost events when fixing files.
  • Balloons can now be disabled for a buffer by setting b:ale_set_balloons to 0. #1404

Other Changes

  • If you specify a fixer which is neither in the registry, nor a valid function name, ALE will now print a friendly message telling you your settings are wrong. #1336

New Linters

New Fixers

Linter Enhancements

  • The gawk linter now prevents arbitrary execution of code by exiting early. #1411
  • The options for ghc can now be configured. #1260
  • The HTML tidy linter will now no longer run the outdated version of tidy which comes with Mac OSX. Install a modern version via homebrew instead. #1262
  • htmlhint will now automatically use the .htmlhintrc configuration file when checking for problems while you type. #1038
  • Syntax errors can now be ignored for mypy with g:ale_python_mypy_ignore_invalid_syntax.
  • The Rust features code will be checked with can now be controlled for the cargo linter. #1275
  • Options for protoc are now configurable. #1268
  • The credo and dogma linters now contain a work-around for an obscure hot-reloading issue. #1266
  • Error messages will be read from stderr for newer versions of ESLint. #1246
  • The hadolint linter now reports Dockerfile parse errors. #1308
  • The hadolint linter now outputs hyperlinks with information about errors for :ALEDetail. #1308
  • Some namespace issues for lintr have been solved. #1326
  • Options can now be set for the gobuild linter. #1206
  • The gobuild linter should now set GOPATH on Windows. #1206
  • The gobuild linter should now escape the path for GOPATH and for changing the directory. #1206
  • The lintr linter can now be set to lint packages. See :help g:ale_r_lintr_lint_package #1332
  • F401 is now a warning and E112 is now a syntax error for pycodestyle and flake8. #476
  • The go 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 #1358
  • The staticcheck 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
  • The perl linter now reports warnings as warnings. #933
  • The perl linter now only shows the first problem among many problems one line. #933
  • The markdown mdl linter options are now configurable. #945
  • Whether warnings are errors are displayed for flawfinder can now be controlled with g:ale_c_flawfinder_error_severity. #1400
  • The gotype linter will now only check files on disk, so it can work with vendored-only dependencies. #1392
  • The gotype and gosimple linters will now check whole packages, which seems like the only thing that will work properly. #1433 #936
  • The mix format options are now configurable. #1410
  • Errors for Japanese text with Redpen will now be highlighted better. #1416
  • Problems with ranges will now be handled for the remark linter. #1207

Fixer Enhancements

  • The elm-format fixer is now available as 'elm-format', in addition to the old name of 'format'. #1395

ALE v1.7.1

25 Feb 14:25
Compare
Choose a tag to compare

Bugs Fixed

  • rustfmt will now apply project settings correctly by using stdin and stdout instead. #1254
  • The extra arguments are now passed to clang-check correctly. #1255
  • ALE now supports running commands on Windows when the shell is PowerShell. #1298
  • Rust errors will now use the correct column numbers instead of byte offsets. #1322
  • isort configuration files will now be detected more accurately by changing the working directory instead of setting the configuration file. #1330

ALE v1.7.0

19 Dec 18:31
Compare
Choose a tag to compare

Bugs Fixed

  • ALE will now find files relative to buffers in cygwin. #1180 #1181
  • The temporary file for TSLint was being mentioned sometimes in the quickfix list. #1210
  • ALE will now suppress trailing whitespace warnings for ansible-lint when the option is on. #1216
  • Relative and absolute paths are now resolved better on Windows. #1210
  • ALE no longer moves the cursor slightly when briefly escaping insert mode and echoing a message. #1228

New Features

  • ALE linting can now be toggled for particular buffers. See :help ALEToggleBuffer. #817
  • Problems reported by ALE can now be removed with ALEReset or ALEResetBuffer. #719
  • b:ale_fix_on_save can now be used for controlling fixing on save for specific buffers. #857
  • Fixer functions can now be chained, much like linters. #1086
  • Fixer functions can now specify callbacks for post-processing command output.
  • Reading the buffer via stdin can now be disabled for fixer commands with 'read_buffer': 0, just like linters.
  • b:ale_fixers can now be set to a List. #1108
  • b:ale_linters can now be set to a List. #1108
  • b:ale_linters can now be set to 'all'. #1108
  • b:ale_linter_aliases can now be set to a List. #1108
  • ALE will now show the echoed severity for type 'I' problems as 'Info'.
  • ALE now supports formatting echo messages with error codes. #852
  • Several linters have now been updated so the error codes are configurable. #852
  • The echo message format can now be configured differently for different buffers. See :help b:ale_echo_msg_format
  • Messages for loclist and the quickfix list can now be formatted like echoed messages. See :help g:ale_loclist_msg_format #1069 #852
  • ALE linters can now be configured to only be enabled explicitly. See :help g:ale_linters_explicit #1128
  • :ALEDetail will now show messages in a preview window. #757
  • Line highlights will now be set when signs are disabled. #741
  • ALE now supports jumping to definitions for LSP and tsserver linters. See :help ale-go-to-definition.
  • Warnings about trailing blank lines can be disabled for some linters. See :help g:ale_warn_about_trailing_blank_lines.
  • Failing executable checks may now be cached with let g:ale_cache_executable_check_failures = 1 #1176
  • An autocmd command ALELintPre has been added for running code just before ALE starts linting.

Other Changes

  • ALE will no longer modify runtimepath when g:ale_emit_conflict_warnings is set to 0. #1049
  • ALE should no longer mess with folds when ALELint autocmd commands are set. #1062
  • ALE will no longer send an id key for the LSP notification messages at all, instead of v:null. #1110
  • Output will now be ignored for fixer commands which output only whitespace.
  • When ALE deletes lines as the result of fixing files, the deleted lines will be put in the black hole register. #1165
  • tsserver completions will now be requested again after completion is done only if the cursor moves, rather than waiting for 100ms. #1041
  • The perl linter is now disabled by default, as it can execute malicious code. #1186
  • The ALELint 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.
  • ALE will now look for mypy.ini files for finding Python project roots.
  • ALE will now look for venv for finding virtualenv directories by default. #1237
  • Cursor messages can now be disabled while Vim is running.
  • ALE now cleans up buffer data when buffers are deleted instead of unloaded, so the quickfix list can be maintained.

New Linters

New Fixers

Linter Enhancements

  • ALE now captures problems for other files for GCC, clang, and related tools. #1023
  • The rubocop and haml-lint configuration files will be now used for ham-lint automatically. #1047
  • The shellcheck linter will now use -x and follow sourced files when checking for errors. #491
  • The shellcheck linter now uses the type 'I' for notes. #1122
  • The phpcs linter will now include the error code in the message. #1009
  • Errors for missing ESLint configuration files can now be disabled. See :help g:ale_javascript_eslint_suppress_missing_config. #971
  • cargo 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. #626
  • The phpmd executable can now be configured, and error checking should be more reliable. #1076
  • The flow linter will now include more information for errors in the :ALEDetail message. #946
  • Error codes can now be configured for messages from ESLint. #852
  • Error codes can now be configured for messages from TSLint. #852
  • Error codes can now be configured for messages from flake8. #852
  • Error codes can now be configured for messages from rubocop. #852
  • Error codes can now be configured for messages from ansible-lint. #852
  • Error codes can now be configured for messages from cpplint. #852
  • Error codes can now be configured for messages from shellcheck. #852
  • Error codes can now be configured for messages from pylint. #852
  • Error codes can now be configured for messages from checkmake. #852 #1135
  • Error codes can now be configured for messages from checkstyle. #852
  • Error codes can now be configured for messages from pycodestyle. #852
  • Error codes can now be configured for messages from csslint. #852
  • Error codes can now be configured for messages from jscs. #852
  • Error codes can now be configured for messages from luacheck. #852
  • Error codes can now be configured for messages from mcs and mcsc. #852
  • Error codes can now be configured for messages from nimcheck. #852
  • Error codes can now be configured for messages from reek. #852
  • Error codes can now be configured for messages from slim-lint. #852
  • Error codes can now be configured for messages from stylelint. #852
  • Error codes can now be configured for messages from swaglint. #852
  • Error codes can now be configured for messages from swiftlint. #852
  • Error codes can now be configured for messages from tflint. #852
  • Error codes can now be configured for messages from foodcritic. #852
  • msgid values (like E0103) are no longer reported for pylint, which aren't human-readable. #852
  • pycodestyle errors and warnings are now style errors and warnings. #852
  • Rails-specific syntax will now automatically be stripped from erb files. #580 #1114
  • The GCC executable for ASM may now be configured. #1138
  • Options can now be configured for iverilog. #1143
  • The javac linter now includes test source paths for test files. #859
  • The javac linter now includes jaxb source paths when available. #859
  • Problems in other files will now appear in lists for the gobuild linter. #1154
  • The foodcritic linter has been overhauled to check only files on disk with better error messages. #1151
  • flow 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. #783
  • Prettier text will now be saved for detailed messages for Haskell linters. #918
  • Different toolchains for rls can now be selected. See :help g:ale_rust_rls_toolchain #1166
  • The ruby executable is now configurable. #1168
  • Warnings about trailing blank lines can be disabled for flake8 and pycodestyle.
  • The phpcbf linter should now work properly, apparently. #1188
  • The puppet linter now parses output which doesn't include column numbers. #1182
  • The executable for perl is now properly escaped.
  • gometalinter can now be configured to report problems from other files. See :help g:ale_go_gometalinter_lint_package #1156
  • The php linter now handles error output from PHP 7.2, which has slightly different output.
  • The vale linter now parses end column numbers, for better highlighting.
  • The erb linter now works on puppet style templates. #1221
  • The mcsc linter paths and escaping should now work on Windows.
  • The ember-template-lint linter will now parse line and column numbers for fatal errors if they are included.
  • Some of the options for rustc can now be configured, so -Z no-trans ...
Read more

ALE v1.6.2

21 Nov 14:58
Compare
Choose a tag to compare

Bugs Fixed

  • ALE's parsing for stack-build has been updated so it will parse errors with leading spaces, as returned by newer versions. #1124
  • LSP linters on Windows weren't handling filename URIs correctly. This has been fixed. #1149

ALE v1.6.1

09 Nov 21:17
Compare
Choose a tag to compare

Bugs Fixed

  • ALE will now read cargo output from either stdout or stderr, to support more versions of cargo #1045
  • ALE will no longer try to lint files named . #1048
  • ash and dash are now supported for shell linters #1051
  • Completions will now not be requested shortly after CompleteDone, fixing a bug where the menu kept re-opening #1041
  • gosimple and staticcheck will now check only the actual files on disk, because that is all they support. #936
  • Running the php linter will no longer write to the PHP error log. #1072
  • The erlc linter is now supported on Windows. #1071
  • Python fixers weren't working on Windows since version 1.6.0. This has been fixed. #1081
  • When combined with some other plugins in NeoVim, ALE would sometimes through exceptions when trying to stop jobs. These errors are now silenced. #1058
  • The javac linter wasn't handling errors from other files correctly. This has been fixed. #1061
  • All LSP and tsserver 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. #1085
  • Message handling for LSP linters wasn't working in NeoVim, due to improper handling of LSP messages. This has been fixed. #1006
  • ALE was reporting no-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. #1101

ALE v1.6.0

23 Oct 22:47
Compare
Choose a tag to compare

Bugs Fixed

  • ALE wasn't checking buffers on enter in some cases. This has been fixed. #734
  • The regular expression for parsing phpmd errors has been updated, so errors may be handled better in some cases. #1032

New Features

  • The maximum number of signs ALE will set can now be configured. See :help g:ale_max_signs #965
  • The delay before echoing a message can now be configured. See :help g:ale_echo_delay #965

Other Changes

  • Linters and some other processing will no longer be run when v:exiting is set in NeoVim 0.2.0 and above. #904
  • Linters will no longer be run on :wq or :x, which did nothing useful. #904

New Linters

  • C - clang-tidy #827
  • C# - mcsc (See :help ale-cs-mcsc`) #952
  • GLSL - glslang #914
  • LLVM IR - llc #979
  • Solidity - solium #929
  • Thrift - thrift #892
  • Markdown - remark-lint #1010

New Fixers

Linter Enhancements

  • ALE will now prefer to use prettier_d for prettier, if it is installed. #885
  • The javac linter will now include paths based on gradle build commands. #889
  • CM files are now used for smlnj where available. See :help ale-sml-smlnj #884
  • TSLint output can now be ignored for empty files. See :help g:ale_typescript_tslint_ignore_empty_files
  • The brakeman linter will now report problems for other files in quickfix and loclist.
  • The slim-lint linter will now use rubocop configuration files. #903 #942
  • The shellcheck linter now arranges the arguments in such a way that manually changing the dialect is possible. #949
  • The phpstan configuration file can now be configured. #969
  • $VIRTUAL_ENV will be used for running Python tools when no local directories can be found. #990
  • The luacheck linter will now respect the g:ale_warn_about_trailing_whitespace option. #968
  • ALE will now tell you how to configure scalastyle when no configuration file was found. #977

Fixer Enhancements

  • Configuration files can now be detected for prettier. See :help g:ale_javascript_prettier_use_local_config #886
  • The prettier-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 #854
  • The yapf fixer should now run local virtualenv executables on Windows.
  • The standard fixer can now be used even if the linter is never loaded.

ALE v1.5.2

03 Oct 17:56
Compare
Choose a tag to compare

Bugs Fixed

  • ALE was sometimes reporting errors when trying to open empty list windows. This has been fixed. #920
  • staticcheck and gosimple now capture both output streams so they will report errors where they didn't. #921
  • ALE wasn't changing the sign column color any more when that option was on since 1.5.0. This has been fixed. #924
  • ALE stopped removing signs properly when multiple signs ended up lying on a single line, since 1.5.0. This has been fixed. #964
  • ALE was using the wrong ESLint configuration files in some cases. This has been fixed. #922
  • eslint --fix now uses -c instead of --config for specifying the configuration file, which apparently works better in some versions. #951

ALE v1.5.1

08 Sep 19:12
Compare
Choose a tag to compare

Bugs Fixed

  • ALE will now detect the shell dialect for shellcheck by parsing hashbang (#!) lines. #869
  • pycodestyle is now disabled by default, as it is also installed when you install flake8. #888
  • ALE now uses node.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 #895
  • ALE will no longer lint a file when the filetype is initially set if g:ale_lint_on_enter is set to 0. #505
  • ALE should no longer show linting results in ctrlp-funky windows. #891
  • Since version 1.5.0, ALE wasn't closing the loclist or quickfix windows most of the time. This has been fixed. #899 #912
  • Since version 1.5.0, tsserver integration was broken due to a bug in NeoVim. A workaround has been added to fix this issue in ALE. #907

ALE v1.5.0

28 Aug 16:59
Compare
Choose a tag to compare

Bugs Fixed

  • ALE sometimes didn't remove highlights now and again. This has been fixed. #697
  • eslint --fix needed to be executed with node on Windows when installed via create-react-app. This has been fixed. #775
  • The GCC error handler was ignoring errors without column numbers. This has been fixed. #795
  • scalac was being run for SBT files with the filetype scala.sbt. Now scalac is not run for SBT files. #804
  • Many linters which expect JSON output now ignore output which isn't JSON. #810
  • ALE was not handling syntax errors from tsserver. This has been fixed. #798
  • ALE didn't check files some of the time when restoring multiple windows from a saved session. This has been fixed. #734
  • When ALE wrote files with fileformat=dos, carriage returns were not included. This has been fixed. #823
  • Now when selections are active when loclist or quickfix windows are opened, the selection will be reset. #788
  • flake8 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. #837
  • The rubocop fixer now uses the same options that the linter is configured with. #841
  • Jumping through problems didn't work in some cases with blank lines. This has been fixed. #848
  • If problems were kept from previous linter runs, like a lint_file linter, ALE would not downgrade signs in the sign column. This has been fixed. #825

New Features

  • ALE now comes with LSP (Language Server Protocol) support, for checking files with language servers. See :help ale-lsp-linters for documentation on how LSP linters can be defined. #517
  • ALE now offers support for code completion while you type for TypeScript code via tsserver. See :help ale-completion
  • :ALEFixSuggest will now suggest tools for fixing problems in a new window, instead of a long echo message.
  • ALE will now stop checking buffers for a period of time when exceptions are thrown. See :help ale-cool-down #468
  • ALE now supports running Python executables from virtualenv directories on Windows. #729
  • ALE will now remove any problems previously set when linters are disabled, removed, or when the filetype changes.
  • Buffer-local settings can now be set with g:ale_pattern_options by using names starting with &.
  • ALE will now detect Python project roots based on common configuration files, in addition to looking upwards to find the first directory without an __init__.py file. #755
  • ALE can now be configured to open quickfix or loclist windows only when files are saved. See :help g:ale_open_list #271
  • Buffer local options b:ale_open_list and b:ale_keep_list_window_open are now supported. #271
  • ALEInfo will now print the results of executable checks for linters, which should help you figure out why a linter might not be running.

New Linters

  • Dart - dartanalyzer #308
  • Erlang - SyntaxErl #774
  • eruby - erubis #865
  • GraphQL - gqlint #863
  • Idris - idris #838
  • PHP - langserver #517, phpstan #772
  • Python - pycodestyle #872
  • R - lintr #182
  • Ruby - rails_best_practices #751
  • Rust - rls #517
  • Scala - scalastyle #766
  • Stylus - stylelint #178
  • Tcl - nagelfar #821
  • YAML - swaglint #771

New Fixers

  • C, C++ - clang-format #873
  • CSS, SASS, SCSS, stylus - stylelint #657 #813
  • JavaScript - prettier-standard #702
  • JavaScript - standard #781
  • PHP - phpcbf #862
  • Puppet - puppet-lint #701
  • Swift - swiftformat #842

Linter Enhancements

  • All C and C++ linters executable paths can now be configured. #711
  • The elm-make linter now includes end line and column numbers for highlights. #699
  • The verilator linter's options can now be configured. #698
  • The pug-lint linter now detects node_modules executables, like other linters, and supports the same options as most other linters. 79e8e06
  • The perlcritic linter now supports more options and will automatically load configuration files. See :help ale-perl-perlcritic-options #675
  • The luacheck linter now includes the error codes in the message. #717
  • The hadolint linter can now be run via a Docker image. #720
  • stylelint linters will now print exceptions thrown by stylelint, including missing configuration files.
  • The gometalinter linter's executable can now be configured.
  • The jscs linter can now be used with older versions of jscs. #737
  • The rubocop linter now works with older versions of rubocop. #339 #738
  • The rubocop linter now includes end column numbers for better error highlighting. #738
  • The rubocop linter now includes the error type in the error messages. #820
  • The clang-check linter now uses some additional arguments to avoid generating .plist files if no build directory is set. #703
  • The hlint linter now uses type I for suggestions. #710
  • The hlint linter now includes end line and column numbers for better highlighting. #710
  • The hdevtools linter's options and executable can now be configured. #799
  • The ghc-mod linter will now map the temporary file for better error messages. #846
  • The rule name is now included in the messages for tslint problems.
  • The SyntaxErl linter will now include the basename option when available. #860 #861
  • Warnings about files ignored by ESLint can now be disabled. #836
  • Some Vint problems will be highlighted better.

Fixer Enhancements

  • The yapf fixer now only sets --no-local-style if a configuration file is detected. #786

ALE v1.4.1

28 Aug 17:03
Compare
Choose a tag to compare

Notes

  • From this version and onward, ALE remembers the full output of recent commands by default, which helps with filing bug reports and fixing issues. See :help g:ale_history_log_output for more information.

Bugs Fixed

  • When fixers like yapf failed, they were removing all of the lines in files. This has been fixed. #706
  • The brakeman linter was throwing errors when no output was returned. This has been fixed. #716
  • ansible-lint was reporting errors from other files. This has been fixed. #216
  • ALE wasn't setting the configuration file when fixing files with rubocop. Now it does. #732
  • The ghc linter was showing warning as errors. This has been fixed. #710
  • The flow linter didn't support older versions of flow. This has been fixed. #735
  • Rust linters should now work on Windows. They didn't before, due to how paths were handled. #736
  • ALE wasn't checking files on save if it also tried to fix files on save, and no changes were made. This has been fixed. #730
  • When the shell was set to fish, some ALE commands didn't work. Now /bin/sh will be used instead when the shell is set to fish. #749
  • Errors when ALE is unable to set signs will now be silenced. #560 #763