Skip to content

Releases: dense-analysis/ale

ALE v1.4.0

27 Jun 15:22
Compare
Choose a tag to compare

Bugs Fixed

  • Escaping of strings for the shell on Windows has been fixed in a major way. Safe strings are passed on verbatim. Strings with spaces are quoted, and percents and quotes are doubled. All other strings have characters with special meanings escaped with carets (^).
  • ALE was checking files when g:ale_run_on_insert_leave was set to 1, when it should only check buffers. This has been fixed.
  • ALE now uses the BufWinEnter event for g:ale_lint_on_enter instead of BufEnter, which should result in files only being checked when they need to be, and prevent problems with checking files again when moving across split windows. FileChangedShellPost is used to check if files are changed outside of Vim. If they are, then the BufEnter event will be used to check the file again.
  • When g:ale_open_list is set, ALE will now allow multiple loclist windows to be opened. #461
  • ALE wasn't finding errors for Flow files when Flow returned relative paths. This has been fixed.
  • The Perl linter was showing some errors from other files. Now ALE checks that the errors come from a file with a matching name. #625
  • The stylelint linter was ignoring quite a few stylelint errors. This has been fixed. #629
  • When checking files on disk, ALE was sometimes checking buffers where the file hasn't been saved to disk yet. This has been fixed. #651
  • Filename escaping has been fixed for the kotlinc linter. #662
  • The ghc-mod linter will now filter out errors for other files. #690
  • The pylint linter wasn't parsing a few errors. This has been fixed. #695

New Features

  • ALE can now help you fix your code, via a configurable set of integrations for programs for fixing code. See :help ale-fix. #541
  • Python functions for fixing files will search for executables in virtualenv directories. #632
  • Linters can now add end column indexes and end lines for error highlights, for highlighting words for problems, etc.
  • ALE linting can now be disabled for particular buffers with b:ale_enabled. #371
  • Arbitrary buffer variables can be configured for filename patterns. See :help g:ale_pattern_options for more information. #371
  • ALE now supports disabling linting of files above a configurable maximum file size. See :help g:ale_maximum_file_size.
  • ALE now supports balloon messages. See :help g:ale_set_balloons.
  • ALE now sets the filename as the quickfix and loclist titles. #588
  • The quickfix window height can now be configured with g:ale_list_window_size.
  • You can now jump straight to the first or last problem with :ALEFirst or :ALELast. #616
  • ALE now makes results for a single linter available as soon as possible, instead of waiting for other running linters to complete. #406
  • Linter problems types can now be re-mapped via a setting. See :help g:ale_type_map for more information. #536
  • C and C++ linters are generally better at detecting the location of header files, but will never be perfect.

Misc Changes

  • The slower Go linters have been disabled by default. To re-enable them, see :help ale-go-options.

New Linters

  • Awk - gawk #638
  • C++ - clang-check #686, cpplint #546
  • FusionScript - fusion-lint #648
  • Haskell - ghc-mod #496
  • Java - checkstyle #551
  • Koitlin - ktlint #610
  • Objective C - clang #568
  • Objective C++ - clang #568
  • TypeScript - eslint #668, tsserver #517
  • XML - xmllint #559

New Fixers

  • JavaScript - eslint #541, prettier #571, prettier-eslint #571
  • Python - autopep8, isort, yapf
  • Ruby - rubocop #689
  • TypeScript - eslint #668

Linter Enhancements

  • The eslint linter will now output some end column indexes for better error highlighting.
  • The eslint linter will now use eslint_d, where available, which can be much faster.
  • The php linter will now output some end column indexes for better error highlighting.
  • The executable can now be configured for the rubocop linter. #561
  • When an executable ends with 'bundle', The rubocop linter will now automatically add ' exec rubocop' to the command for executing rubocop via Bundle. #561
  • The performance of gometalinter integration has been substantially improved by using the --include option. #566
  • The koitlinc linter now supports getting import paths from Maven, just like the javac linter. #585
  • The perl linter now shows warnings by default. #600
  • The cargo and rustc linters now report problems with end column and line numbers. #602
  • The cargo and rustc linters now report problems with more details. #601
  • The flake8 linter will now report exceptions thrown by flake8. #596
  • The flake8 linter will now include end colum indexes for better highlights for some problems. #538
  • The flake8 linter now describe E and W errors as style errors, which can be highlighted differently. #430
  • The --version check run for vint will now be run in the background. #624
  • 'lint_file' has been set to 1 for nimcheck, so only files on disk will be checked. #620
  • The percritic linter now includes column numbers for problems. #640
  • The tslint linter now distinguishes warnings from errors. #663
  • The javac linter now includes column numbers for better error highlighting. #660
  • The phpcs linter will now run locally installed versions where available by default. #666
  • The clang-tidy linter will now detect compile_commands.json files, and let you override the build directory location. See :help g:ale-cpp-options #688
  • The tslint linter now uses the JSON format for parsing errors, which should work better between different versions, and includes end line and column numbers. #684
  • The elm linter now includes some general errors not previously reported. #637

ALE v1.3.1

06 Jun 17:07
Compare
Choose a tag to compare

Bugs Fixed

  • Shell escaping has been fixed pretty much everywhere. #540
  • PHP error parsing has been fixed, so more errors will be parsed. #533
  • The gometalinter handler wasn't filtering file errors correctly. Now errors from other files will be filtered out. #553
  • csslint errors without groups weren't being reported. This has been fixed. #555
  • pytlint error columns were off-by-one. This has been fixed. #578
  • Fatal errors weren't being parsed for ember-template-lint. This has been fixed. #589
  • ALE was sometimes highlighting entire lines when buffers were un-hidden. This problem was introduced in version 1.3.0. This bug has been fixed. #574

ALE v1.3.0

07 May 18:37
Compare
Choose a tag to compare

Bugs Fixed

  • Highlights will now be cleared and restored when buffers are hidden and shown.

New Features

  • Files/buffers will now be checked when the filetype is changed.
  • All ALE commands defined so far may now be combined with |. (command! -bar ...)
  • Commands ALEEnable and ALEDisable have been added for explicitly turning ALE on or off.
  • g:ale_lint_on_text_changed now accepts values 'never', 'normal', and 'always' for controlling whether TextChanged or TextChangedI will be listened to. Old options 0 and 1 will continue to be supported until version 2.0.0.
  • An option g:ale_lint_on_insert_leave for triggering linting on leaving Insert mode. See :help g:ale_lint_on_insert_leave.
  • Line highlights may now be set for set for signs. See :help g:ale_set_signs.
  • For all C and C++ linters, errors inside of headers will be reported on the #include lines.
  • Filetypes may now be aliased to multiple filetypes in a List. See :help g:ale_linter_aliases.
  • All settings for all linters should now be dynamically evaluated, so settings can be changed while Vim is running.

New Linters

  • ASM - gcc
  • Crystal - crystal
  • Elixir - dogma
  • eruby - erb
  • Go - staticcheck, gosimple
  • handlebars - ember-template-lint
  • Koitlin - koitlinc
  • Markdown - Vale
  • ReasonML - merlin
  • RPM Spec - rpmlint
  • Ruby - brakeman, reek, ruby
  • SQL - sqlint
  • Text - Vale

Linter Enhancements

  • cargo check may now be used instead of cargo build See :help g:ale_rust_cargo_use_check.
  • The cargo linter now uses lint_file option so it will only run when files are opened, saved, etc.
  • The rubocop linter's error levels have been improved.
  • The eslint linter will now automatically detect eslint installed via create-react-app.
  • The eslint linter will now report invalid configuration file settings as errors at line 1.
  • The tslint linter will now detect executables installed in node_modules.
  • The csslint linter will now use .csslintrc files defined in ancestor directories.
  • The javac linter will now create .class files in temporary directories, deleted at the end of lint cycles.
  • The javac linter will now include source paths like src/main/java.
  • The javac linter will now get class paths from Maven automatically.
  • The javac linter will now report symbol names in undefined symbol errors for types.
  • The executable and some options may now be configured for the foodcritic linter.
  • The nimcheck linter now turns thread support on, so code using threads can be checked.
  • Error parsing for the sml linter has been improved.
  • The executable and some options may now be configured for the shellcheck linter.
  • The go build linter will now only check files on disk, but is now capable of understanding paths correctly.
  • Options and the executable can now be set for the puppetlint linter.
  • The Fortran gcc linter can now be configured to check fixed form layouts. See :help g:ale_fortran_gcc_use_free_form
  • The Fortran gcc linter's executable can now be configured. See :help g:ale_fortran_gcc_executable
  • The flow linter will now filter out errors/warnings from other files.
  • The tslint linter can now be set to prefer the global executable, like many other linters.
  • The laucheck linter can now be configured with different options.
  • The cppcheck linter will now detect and use compile_commands.json files and switch to the directory they are in, when detected in ancestor directories.
  • The clang-tidy linter now checks files on disk and uses compile_commands.json files, with no extra options by default. See :help ale-cpp-clangtidy
  • The pylint linter will now detect versions of the program in virtualenv automatically. See :help g:ale_python_pylint_use_global for disabling this behaviour.
  • The pylint linter will now check files on disk, and understand import paths.
  • The mypy linter will now detect versions of the program in virtualenv automatically. See :help g:ale_python_mypy_use_global for disabling this behaviour.
  • The mypy linter will now check files on disk, and understand import paths.
  • The flake8 linter will now detect versions of the program in virtualenv automatically. See :help g:ale_python_flake8_use_global for disabling this behaviour.

Misc Changes

  • Linters now run when files are saved by default.
  • The setting g:ale_linters_sh_shell_default_shell has been renamed to g:ale_sh_shell_default_shell.
  • The setting g:ale_linters_sh_shellcheck_exclusions has been renamed to g:ale_sh_shellcheck_exclusions.

ALE v1.2.1

29 Apr 17:23
Compare
Choose a tag to compare

Bugs Fixed

  • Exceptions will no longer be thrown when the checks for conflicting plugins are run before the rest of the ALE plugin code.
  • Various linters no longer set errors at column 1, when there is no column set.
  • Linting will no longer be performed from inside of a command window.
  • Errors will now be returned for zsh scripts for the shell linter.
  • The vint linter wasn't setting the --no-color option for versions 0.3.7 and above, due to a typo. This has been fixed.
  • The php linter was parsing some errors twice. This has been fixed.
  • Highlights will now be cleared when buffers are unloaded, so matches will not appear in the wrong files.

ALE v1.2.0

26 Mar 21:40
Compare
Choose a tag to compare

Bugs Fixed

  • Signs will now be unplaced for Italian users.
  • Fixed a bug where loclist items could be set for the wrong buffers.

New Features

  • A command :ALEToggle has been added for turning ALE on or off temporarily.
  • A command :ALELint has been added for running ALE manually.
  • A command :ALEDetail has been added for showing more details for an error at the cursor.
  • Linters can now use a read_buffer option for enabling/disabling stdin input.
  • Linters can now use a lint_file option for running checks against files, instead of Vim buffers.
  • ALE now highlights errors in the buffer. See :help g:ale_set_highlights
  • The :ALEInfo command now outputs linter variables.
  • The :ALEInfo command now outputs a command history. See :help g:ale_history_enabled
  • ALE will no longer complain if it can't work for empty filetypes or git commits.
  • If ALE fails to load properly, it should now still emit airline statusline messages.

New Linters

  • AsciiDoc - proselint
  • C++ - clang
  • CMake - cmakelint
  • Haml - hamllint
  • Haskell - hdevtools
  • HTML - proselint
  • Java - javac
  • JavaScript - standard, xo
  • nim - nim
  • nix - nix-instantiate
  • nroff - proselint
  • PHP - phpmd
  • Pod - proselint
  • reStructuredText - proselint
  • Slim - slim-lint
  • SML - smlnj
  • Texinfo - proselint
  • Vim help - proselint
  • XHTML - proselint

Linter Enhancements

  • The coffee and coffeelint linters now attempt to use the versions of those executables from node_modules, if available.
  • The coffelint linter will now parse more errors.
  • The credo linter now includes the filename of the file being checked, which can be useful for various checks.
  • The flow linter will not now no longer run if no .flowconfig file exists in an ancestor directory.
  • You can now configure options for the stylelint linter.
  • The gfortran linter now supports more kinds of error output.
  • The yamllint linter can be now be configured with an executable path and options.
  • The pylint linter now includes the symbol (a short name) for error types.
  • PHP error parsing has been improved, so more errors are handled.
  • The eslint linter will now report problems with the configuration file, using :ALEDetail.
  • The perl linter now supports options. See :help ale-linter-options-perl-perl.
  • The clang and gcc linters now support header includes in the same directories files are in.
  • The erlc linter will no longer leave compiled files lying around.
  • The tslint linter will now find configuration files, and allow the executable and configuration file to be configured.

Misc Changes

  • $TMPDIR will now automatically be set to /tmp on Unix if it is not set.
  • ALE will now only run the cargo linter for Rust by default. To run other linters, modify g:ale_linters appropriately. See :help ale-integration-rust.
  • ALE will now echo the cursor error messages when linting finishes or when leaving insert mode.

ALE v1.1.1

21 Feb 20:47
Compare
Choose a tag to compare

Bugs Fixed

  • The Pug linter wasn't parsing errors correctly. This has been fixed.
  • The gcc/gfortran linter should now parse errors from more versions.
  • Parsing of TypeScript typecheck errors has been fixed for some filenames containing the string ts.
  • The commands for navigating between errors/warnings should now correctly filter out other buffers.
  • The commands for navigating between errors/warnings will now prefer to use the quickfix list, if g:ale_set_quickfix is on.

ALE v1.1.0

09 Feb 09:43
Compare
Choose a tag to compare

New Features

  • ALE now splits filetypes containing . (a dot), and will run all linters for each component of a compound filetype, so files with type foo.bar will use linters for filetypes foo and bar.
  • ALE now offers commands and <Plug> keybinds for moving between warnings and errors. See :help ale-navigation-commands for more information.
  • ALE can now automatically open a window to show the list of errors. See :help g:ale_open_list for more information.
  • ALE now allows you to get some information about the current linters with a new :ALEInfo command.
  • ALE now includes a mechanism for chaining commands for running linters, for any linters which need to run multiple commands to check for errors.

New Linters

Support has been added for the following linters.

  • Ansible - ansiblelint
  • C/C++ - clang, cppcheck
  • C# - mcs
  • Chef - foodcritic
  • CSS - stylelint
  • Dockerfile - hadolint
  • Elm - elm-make
  • Erland - erlc
  • Go - go build
  • JavaScript - flow
  • LatTex - chtex, lacheck
  • Markdown - mdl, proselint
  • MATLAB - mlint
  • OCaml - merlin (Another Vim plugin is required)
  • PHP - hack
  • Puppet - puppet, puppet-lint
  • Python - mypy, pylint
  • SASS - stylelint
  • SCSS - stylelint
  • Swift - swiftlint
  • Text - proselint
  • TypeScript - tslint, typecheck

Linter Enhancements

  • The eslint and jshint linters for JavaScript will now attempt to run eslint installed in node_modules directories first. The g:ale_javascript_eslint_use_global or g:ale_javascript_jshint_use_global variables can be set to 1 to force ALE to use the global executables.
  • The eslint linter can now be configured with more options.
  • The default flags for gcc and g++ were changed to use the latest C and C++ standards by default.
  • The htmlhint options can now be customised with a global variable.
  • htmlhint will now search for executables in node_modules directories to run.
  • The shellcheck linter now uses Vim's special buffer variables for detecting the shell dialect.
  • The flake8 linter now accept variables for configuring the executable and the command line arguments.
  • The flake8 linter is now informed with the filename, which plugins can use.
  • The Haksell linters should produce better error messages.
  • C and C++ linter options can now be changed dynamically.
  • The Verilator linter was improved so it only produces warnings or errors for the file you are editing.
  • The DMD linter should now run on Windows, as the special Linux Bash script has been replaced with
    use of the new command chaining feature.
  • The Vint linter for Vim files now recognises commands specific to NeoVim when running under NeoVim.

Misc Changes

  • The stdin-wrapper script for Unix systems has been simplified, and should see increased support for various systems.
  • A bug was fixed with this plugin and newer versions of NeoVim which altered the job control API slightly, which broke everything.

ALE v1.0.0

19 Oct 21:56
Compare
Choose a tag to compare

This is the initial stable release of ALE, the asynchronous linting engine for Vim.

Features Implemented

  • ALE will run a variety of linters for various programming languages. For a full list of supported linters, please consult the help file.
  • ALE will update the loclist when errors/warnings are found.
  • ALE will echo messages when the cursor moves over warnings or errors.
  • ALE will show signs in the sign gutter when errors or warnings are found.
  • ALE supports functions for showing statuses in the statusline, with some integration with vim-airline.