ale

Check syntax in Vim/Neovim asynchronously and fix files, with Language Server Protocol (LSP) support

BSD-2-CLAUSE License

Stars
13.3K
Committers
811

Bot releases are visible (Hide)

ale - ALE v1.8.0

Published by w0rp over 6 years ago

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

  • Elixir - dialyxir #1257
  • Erb - erubi #1157
  • fish - fish -n #1252
  • Fountain - proselint #1243
  • Lua - luac -p #1272
  • Git commit messages - gitlint #1233
  • Go - gotype #1099
  • Markdown - markdownlint #1394, textlint #1383 #1448
  • PO - alex #1321, msgfmt #1321, proselint #1321, write-good #1321
  • Pony - ponyc #1343
  • QML - qmllint #1419
  • Text - textlint #1448

New Fixers

  • JSON - fixjson #1284, jq #1303
  • C - flawfinder #1361
  • C++ - flawfinder #1361
  • PHP - php-cs-fixer #1390
  • Ruby - rufo #1415

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 - ALE v1.7.1

Published by w0rp over 6 years ago

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 - ALE v1.7.0

Published by w0rp almost 7 years ago

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

  • AsciiDoc - alex #1220, redpen #1142, write-good #643 #811
  • API Blueprint - drafter #1152
  • Clojure - joker #1133
  • Dafny - dafny #1093
  • Dart - dart_language_server #1006
  • GLSL - glslls #1179
  • GraphQL - eslint #1169
  • HTML - alex #1220, write-good #643 #811
  • LaTeX - alex #1220, redpen #1142, vale #1230, write-good #643 #811
  • LESS - lessc #1103, stylelint #510
  • mail - alex #1220, proselint #1037, vale #1044
  • Markdown - alex #1220, redpen #1137, write-good #643 #811
  • nroff - alex #1220, write-good #643 #811
  • OCaml - ols #1110
  • PHP - phan #1026
  • Pod - alex #1220, write-good #643 #811
  • proto - protoc-gen-lint #1098
  • Python - prospector #565 #1183, pyflakes #516, PyLS #1097
  • Solidarity - solhint #1192
  • ReasonML - ols #1110
  • reStructuredText - alex #1220, redpen #1142, rstcheck #1090, vale #1230, write-good #643 #811
  • Re:VIEW - redpen #1142
  • Terraform - tflint #1046
  • Texinfo - alex #1220, write-good #643 #811
  • text - alex #1220, redpen #1142, write-good #643 #811
  • Vim help - alex #1220, write-good #643 #811
  • XHTML - alex #1220, write-good #643 #811

New Fixers

  • Elixir - mix format #1017
  • Go - goimports #1123
  • Hack - hackfmt #1053
  • Haskell - brittany #1174, hfmt #1027
  • Java - google-java-format #1209
  • JavaScript - importjs #1191
  • ReasonML - refmt #1059
  • Rust - rustfmt #1025
  • Shell - shfmt #1083

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 can be replaced with something else. #1031

Fixer Enhancements

  • The prettier fixer will now use the --stdin-filepath argument when the version is 1.6.0 or greater. #1095
  • The prettier_eslint fixer will now use the --stdin-filepath argument when the version is 4.4.0 or greater. #1095
  • The prettier_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. #988
ale - ALE v1.6.2

Published by w0rp almost 7 years ago

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 - ALE v1.6.1

Published by w0rp almost 7 years ago

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 - ALE v1.6.0

Published by w0rp almost 7 years ago

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

  • prettier for TypeScript, CSS, SCSS, LESS, and JSON #910 #1018
  • elm-format #916
  • gofmt #970
  • trim_whitespace #991
  • tslint #1001

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 - ALE v1.5.2

Published by w0rp about 7 years ago

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 - ALE v1.5.1

Published by w0rp about 7 years ago

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 - ALE v1.4.1

Published by w0rp about 7 years ago

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
ale - ALE v1.5.0

Published by w0rp about 7 years ago

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. https://github.com/w0rp/ale/commit/79e8e063af1cf7a72ec42075f4eed30aa69607e8
  • 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 - ALE v1.4.0

Published by w0rp over 7 years ago

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 - ALE v1.3.1

Published by w0rp over 7 years ago

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 - ALE v1.3.0

Published by w0rp over 7 years ago

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 - ALE v1.2.1

Published by w0rp over 7 years ago

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 - ALE v1.2.0

Published by w0rp over 7 years ago

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 - ALE v1.1.1

Published by w0rp over 7 years ago

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 - ALE v1.1.0

Published by w0rp over 7 years ago

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 - ALE v1.0.0

Published by w0rp almost 8 years ago

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.