Skip to content

Releases: elixir-lsp/elixir-ls

Release v0.25.0

15 Dec 20:16
Compare
Choose a tag to compare

v0.25.0: 15 December 2024

Improvements

  • Definition, implementations and references providers now return ranges. This means that editors will highlight the symbols in code and in case of VSCode finding references will work when the cursor is in side a definition
  • Complete provider will now return record fields when the cursor is inside a record macro call (currently only for locally defined records)
  • Completions provider will now emit keyword list options for defs with typespec including all the options. Previously this worked only for remote modules. Improvements were also made to make sure keyword list options are returned only when cursor is on the last argument of a call
  • Better call trancing in AST processing engine
  • Silenced warnings when AST processing engine is unable to expand macros

Fixes

  • Fixed crash in selection ranges when handling an empty token list
  • Fixed crash in references provider when a symbol has no column position
  • Fixed crash in references provider when unable to find environment
  • Fixed a crash in debug adapter completions provider related to module attributes. Module attributes are now correctly filtered out from the result set
  • Completions provider will no longer insert import statements when accepting a completion with local macro Jean Klingler
  • Silenced an error when handling an unsupported source DAP request
  • Fixed completions crash in Ecto schemas when an invalid regex would be generated
  • Fixed crash when doc chunks returns an invalid UTF8 string
  • Fixed debug adapter crash when inspecting a remote node pid
  • Fixed a crash in debug adapter caused by timed out response from meta process with a stacktrace
  • Completions provider will no longer emit do snippet if the client does not support snippets Rogach
  • Fixed a crash in completions when no snippet is returned Rogach
  • Fixed a crash in installer on elixir 1.13
  • Fixed formatting of ... in typespecs on older elixir versions

Release v0.24.1

14 Oct 20:38
Compare
Choose a tag to compare

v0.24.1: 14 October 2024

Fixes

  • Fixed references crash on variables used in macro
  • Improved document symbols stability on code with unquote fragments
  • Fixed DAP crash when obtaining meta PID timeouts
  • Fixed crash when rendering markdown docs from edoc

Release v0.24.0

06 Oct 20:22
Compare
Choose a tag to compare

v0.24.0: 6 October 2024

Highlights

  • Local file code intelligence engine provided by elixir_sense library has been rewritten from scratch using new elixir 1.17 Macro.Env APIs. The new APIs has been backported to earlier elixir versions 1.13 - 1.16. The new engine expands and traverses elixir AST in a way that mirrors the elixir compiler behavior. As a result, ElixirLS is able to more accurately infer aliases/imports/requires, track variable/attribute definitions and usage, track calls, defined functions, modules and typespecs. It is now also able to expand some macros. All that information is used for completions, navigation to definition, finding references and other LSP operations requiring understanding of elixir code.
    Limitations: The new engine does not expand local macros, and support for dynamically defined functions, modules, and typespecs (including those with unquote fragments) is partial.

Improvements

  • vendored dialyxir updated to v1.4.4
  • vendored jason updated to v1.4.4
  • guard type inference is now smarter and better handle various guard expressions

Fixes

  • fixed crash when analyzing types in guard with map

Breaking changes

  • elixir 1.12 reached end of life and is no longer supported. ElixirLS will fail to start on versions lower than 1.13. Consider updating to 1.13+ or use v0.23
  • Deprecated ez archives release mode is no longer supported. It never worked with elixir 1.16+

Release v0.23.0

03 Aug 21:16
Compare
Choose a tag to compare

v0.23.0: 3 August 2024

Improvements

  • Added support for attaching with the debug adapter to remote nodes
  • Debug Adapter protocol source request implemented
  • Added presentation hints to debug scopes
  • Breakpoints are now annotated as failed if setting them fails

Fixes

  • Fixed a deadlock in debug adapter when meta process is not alive
  • Removed no longer needed workaround for :gen_statem callbacks

Release v0.22.1

10 Jul 12:58
Compare
Choose a tag to compare

v0.22.1: 10 July 2024

Improvements

  • Improvements to symbol presentation in document symbols
  • ANSI colors enabled in Debug Adapter

Release v0.22.0

11 Jun 09:53
Compare
Choose a tag to compare

v0.22.0: 11 June 2024

Highlights

  • Support for elixir 1.17
  • Support for OTP 27

Improvements

  • Related information with inferred type is added on diagnostics origination from elixir 1.17 type system
  • Added support for ExDoc autolinking in OTP 27 markdown documentation
  • Debug adapter can display OTP 27 process labels
  • Dialyzer is more strict with option validation
  • Updated vendored dialyxir to 1.4.3
  • Added support for vfox package manager yeshan333

Fixes

  • Fixed a crash in metadata builder when recovering from AST parse error

Release v0.21.3

22 May 09:56
Compare
Choose a tag to compare

v0.21.3: 22 May 2024

Improvements

  • Reuse incremental dialyzer PLT when suggesting specs
  • Avoid starting both incremental and old dialyzer

Fixes

  • Properly clean up incremental dialyzer PLT when a new one is loaded

Release v0.21.2

21 May 05:36
Compare
Choose a tag to compare

v0.21.2: 21 May 2024

Improvements

  • Improved validation of dialyzer options. Previously invalid options were allowed leading to dialyzer crashes

Fixes

  • Fixed a crash in incremental dialyzer leading to used memory buildup

Release v0.21.1

08 May 06:10
Compare
Choose a tag to compare

v0.21.1: 8 May 2024

Fixes

  • Fixed endless loop when expanding incomplete use macro
  • Fixed crash in incremental dialyzer when dialyze is already in progress
  • Fixed crash when rendering metadata to markdown

Release v0.21.0

05 May 08:07
Compare
Choose a tag to compare

v0.21.0: 5 May 2024

Highlights

  • OTP incremental dialyzer is now the default dialyzing engine on OTP 26+. While slower than ElixirLS dialyzer it is much better at tracking module dependencies and should resolve issues with transient dialyzer warning that do not disappear on recompile. ElixirLS dialyzer is still available and incremental dialyzer can be disabled by config setting elixirLS.incrementalDialyzer
  • Experimental support for Code actions added. Two code actions are available: Replace unknown remote def, replace an unused variable with an underscore Samuel Heldak

Improvements

  • Added a workaround for ExUnit emitting invalid event in case setup_all is killed. This error resulted in invalid test results being presented in Test UI
  • More apps is now unloaded on recompile. This should improve build consistency
  • Underscored variables are now returned in completions and tracked
  • All provider code has been moved to ElixirLS repo from elixir_sense. This should make it easier for contributors to navigate in the codebase

Fixes

  • Fixed a crash in on-type formatting
  • Fixed a crash on invalid diagnostic severity emitted by compiler
  • Fixed a crash in parser related to race conditions
  • Fixed a crash in debugger when only 1 frame was returned
  • Fixed selection ranges incompatibility with elixir 1.16.2
  • Fixed a crash when logging elixir API error AJ Foster
  • Fixed a crash in type inference engine related to map keys

Potential incompatibilities

  • elixir_sense plugin management code has been moved to ElixirLS repo along with all providers. This can potentially affect existing plugins