Skip to content

ALE v2.4.0

Compare
Choose a tag to compare
@w0rp w0rp released this 07 Apr 15:36
· 1494 commits to master since this release
02af53b

Deprecated Features

  • Some functions have been renamed, and are deprecated. Use the new functions instead. #2132
    • ale#engine#CreateDirectory has been renamed to ale#command#CreateDirectory
    • ale#engine#CreateFile has been renamed to ale#command#CreateFile
    • ale#engine#EscapeCommandPart has been renamed to ale#command#EscapeCommandPart
    • ale#engine#ManageDirectory has been renamed to ale#command#ManageDirectory
    • ale#engine#ManageFile has been renamed to ale#command#ManageFile
  • 'executable_callback' for linters has been deprecated. Use 'executable' with a Funcref instead. #2132
  • 'command_callback' for linters has been deprecated. Use 'command' with a Funcref instead. #2132
  • 'command_chain' for linters has been deprecated. Use ale#command#Run instead. #2132
  • 'project_root_callback' for LSP linters has been deprecated. Use 'project_root' with a Funcref instead. #2132
  • 'address_callback' for LSP linters has been deprecated. Use 'address' with a Funcref instead. #2132
  • 'language_callback' for LSP linters has been deprecated. Use 'address' with a Funcref instead. #2132
  • 'initialization_options_callback' for LSP linters has been deprecated. Use 'initialization_options' with a Funcref instead. #2132
  • 'lsp_config_callback' for LSP linters has been deprecated. Use 'lsp_config' with a Funcref instead. #2132
  • 'chain_with' for fixers has been deprecated. Use ale#command#Run with a Funcref instead. #2132

Bugs Fixed

  • End column positions for LSP diagnostics were off by 1. #2223
  • Hover, go to definition, and references are off by one. #2224
  • ALE now correctly responds to the response to an LSP initialize message with an initialized notification. This was breaking some language server integrations. #2295
  • ALE now always starts jobs with cmd /c on Windows so NeoVim works in PowerShell. #2009
  • virtualtext for NeoVim is now correctly cleared when using disabling ALE linting via commands. #2307
  • URIs like file:/foo/bar and FILE:///foo/bar are handled now. #2300
  • Windows URIs with pipes like file://C:|foo are now translated to C:\foo.
  • Windows URIs where the drive letter is encoded are now handled, even though the drive letter shouldn't be encoded. #2357
  • Java projects without src/main/java now add src/test/java for test files. #2305
  • ALE now avoids a bug in versions of Vim where getcurpos() causes curswant to be changed, which can cause the cursor to move around strangely. #2330
  • Rust error message end columns were off by 1. #2325
  • Manual completion with :ALEComplete no longer replaces completopt like automatic completion does. #2326
  • ale_completion_max_suggestions now correctly limits the number of results from LSP completion servers.
  • Spaces and backslashes can now be used for sign text. #2351
  • LSP reference responses will a null result are now handled. #2402
  • Opening the location list in a vertical list now forces it opening to the bottom or right, so it won't steal focus. #2368

New Features

  • Linter and fixers executables and commands can be deferred from an arbitrary number of asynchronous results using the new ale#command#Run function. See :help ale#command#Run.
  • :ALEDocumentation can now be used to request documentation at your cursor with tsserver only. #1520
  • :ALEGoToDefinitionInSplit and :ALEGoToDefinitionInVSplit can now be used for opening definitions in split windows. #2141
  • ALE now centers the screen and forces a redraw after jumping to a new location for going to a definition, etc. #2277
  • tsserver results for :ALEFindReferences now show text from the lines found. #2173
  • You can now use :ALEFindReferences -relative to show results with relative paths. #2238
  • You can now use :ALESymbolSearch -relative to show results with relative paths. #2255
  • Completion results can now be requested manually with the ALEComplete command or with the <Plug>(ale_complete) key. #2177 #2189
  • The shell and shell command used for jobs run by ALE can now be overridden via settings. #2167
  • Project path detection for LSP tools can now be overridden with settings. #2241
  • When moving through problems, the type of problems can now be filtered. #2279
  • 'executable' for linters can now be set to a Funcref for calculating the executable string. #2132
  • All LSP and tsserver linters can now be disabled entirely with ale_disable_lsp, while leaving other linters enabled. #2403

Other Changes

  • compile_commands.json file processing is now cached and ALE spends a lot less time processing the files. #2161
  • compile_commands.json file processing now uses the build directory as taken from the compilation database, for more accurate results. #2191
  • C flag processing from compile_commands.json and make -n is now much better in general. #2194 #2168 #2131 #2272
  • semver version parsing now handles versions without the patch number, even though this goes against the semver spec. #2216 #2355

New Linters

New Fixers

Linter Enhancements

  • The javalsp linter should now be set up with a new distribution system. #2119 #2284
  • The sasslint linter is now configurable, and will use a local installation if present. #2077
  • The swiftlint linter will now use a Pod-managed install if available. (#2122)
  • More output for perl is now handled. #2150
  • black can now be run via pipenv. #1988
  • The elm make linter will now find problems in test files for versions 0.19 and up. #2176
  • pyls is now configurable. #2230
  • Shell linters now handle ksh better. #2245
  • You can now override the shellcheck dialect with ale_sh_shellcheck_dialect. #2289
  • stack ghc options can now be configured with ale_haskell_stack_ghc_options. #2235
  • Older style flake8 output is now handled to support the hacking plugin. #2215
  • elm files can now be checked with elm-test. #2225
  • The alex linter now handles HTML content better. #2268
  • The alex linter's executable can now be configured. #2268
  • Separate instances of tsserver are now run for nested tsconfig.json files. #2290
  • pylint now runs from the project directory by default, or the buffer directory if no project can be found. #2302
  • The rls options are now configurable. #2332
  • credo can now be set to --strict mode. #2337
  • The location of the composer configuration file is now used for finding the PHP project directory for PHP languagserver too. #2391
  • jsonlint now supports local executables like other JS linters. #2363
  • gotype now uses the -e option to include all errors. #2340

Fixer Enhancements

  • ale_javascript_standard_options is now used for fixing files too.
  • The prettier fixer now uses an explicit default parser when the parser is not otherwise known. #2220
  • The black fixer now uses the buffer's directory as the working directory by default. #2262