Releases: elixir-lsp/elixir-ls
Releases · elixir-lsp/elixir-ls
Release v0.24.1
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
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.17Macro.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
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
v0.22.1: 10 July 2024
Improvements
- Improvements to symbol presentation in document symbols
- ANSI colors enabled in Debug Adapter
Release v0.22.0
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
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
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
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
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
Release v0.20.0
v0.20.0: 21 February 2024
Highlights
- Selection ranges provider added. This provider handles expand/shrink selection editor commands in a semantic aware way
- Completions, hover and signature help providers now are able to display
@doc
and other attributes data from the currently edited buffer - Hover provider now returns markdown with working links to hexdocs and erlang documentation. Support for ExDoc autolinking and erlang see tags has been added
Improvements
- Completions provider renders metadata about returned items. Metadata includes info on
since
,deprecated
,impl
attributes as well as a number of other flags (hidden, optional, opaque, overridable etc.) - Completions provider is now able to suggest callbacks and protocol functions defined in the current buffer
- Completions provider is now able to suggest return values when implementing callbacks and protocol functions defined in the current buffer
- Documentation and signatures is provided on builtin function in more cases
- Avoid race conditions when reading mix project in workspace symbols provider
- Avoid a crash in document symbols provider when unable to determine the end of expression
- Avoid a crash when
locals_without_parens
contains invalid elements - Improved resilience of alias expander
Fixes
- Hover provider would emit invalid markdown when it contained escaped
#
and links with anchor - Fixed a crash in workspace symbols provider when the directory is no longer a mix project
- Workaround an issue when elixir compiler would emit a diagnostic with invalid Unicode
- Fixed a crash when
Mix.env
cannot be retrieved - Fixed a crash in spec code lens on protocol def with default arguments
- Added a workaround for a crash when reading module exports while it is being compiled
- Fixed a crash when formatting an atom argument
- Fixed a crash when handling an invalid typespec
- Fixed a crash when in complete provider when unable to expand a phoenix controller