Releases: elixir-lsp/elixir-ls
Releases · elixir-lsp/elixir-ls
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
Release v0.19.0
v0.19.0: 21 January 2024
Highlights
- On type parsing and diagnostics for phoenix
.heex
files - Workspace symbols provider has been reimplemented. Previously the workspace symbols index was build from all available symbols. To make it more focused and helpful now only symbols from the project are considered. This change made it much quicker and improved the quality of returned results. Fuzzy matching engine was also improved and made consistent with how complete provider works.
Improvements
- Parser is now asynchronous. This should limit the number of cases when providers wait on parsing.
- Function location in workspace symbols provider is optimized. Index build speed should now be much quicker
- Added support for
mise
version manager (the formerrtx
is still supported) - Robson Roberto Souza Peixoto - Workspace symbols provider return results on empty query
- Workspace symbols provider no longer returns duplicated results for functions with default arguments
- Workspace symbols provider now returns
containerName
if applicable - Workspace symbols provider now returns deprecated symbol tag
- Workspace symbols provider, completions and other providers return distinct symbol kinds for functions and macros. This makes them visually different in editors (e.g VSCode uses different icons)
- Apps are now reloaded after build so application controller can provide an accurate list of modules. This works around elixir-lang/elixir#13001
- App config is now reset on each build. This works around elixir-lang/elixir#13246
- Suggest contracts calls are now non blocking. Previously a call to dialyzer would block the server.
- Diagnostics without
file
set will now be returned as originating frommix.exs
. Diagnostics without document URI are meaningless in LSP - Document symbols rendering is improved for defs with multiline arguments - Milo Lee
- Debugger now respects
--no-mix-exs
flag in launch configtaskArgs
- Do block indentation level discovery is improved in completions provider. This should improve keyword completions position
- Elixir version checks have been optimized in completions provider. Those turned out to be expensive.
- Completions provider now caches modules. This greatly improves responsiveness when completion is invoked off an empty hint
- Completions provider now returns
@nifs
attribute added in elixir 1.16 - Definitions provider now supports resetting aliases
alias: nil
on phoenix router scope
Fixes
- Fixed crash when code action is unable to apply spec
- Fixed a crash when loading an old format or unrepairable DETS file
- Operators, functions and macros are now correctly labelled in completions provider. Previously every symbol from
Kernel
was labelled askeyword
and every completion having a snippet was labelled assnippet
. - Fixed a crash in build when printing invalid diagnostics from external compilers
- Fixed a crash in suggest contracts when dialyzer is able to infer concrete types in protocol
- Fixed a crash in completions provider when a completion would be filtered out
- Fixed a crash in document symbols provider when unable to get a line for AST node
- Mix clean custom command will no longer crash when executed in non mix project
- Completions provider returns correct type when a module has functions and macros with the same name. This bug made it return
Application.compile_env
as function instead of macro - Fixed a crash in phoenix router scopes when code fails to parse
- Fixed a crash in definitions provider when cursor over phoenix controller action in router
- Fixed a crash in definitions provider with nested phoenix scopes. The scope combination algorithm was incorrect and produced invalid aliases
Release v0.18.1
v0.18.1: 28 December 2023
Improvements
- Variables defined in
ex_unit
test
,setup
andsetup_all
context are now returned by completions provider. Navigation to variable definition and references now also works correctly - Suggest spec code lens now emits specs for all arity variants when function has default arguments. Previously only the one with all parameters was emitted
- Missing required OTP
:crypto
module is now detected on startup - Completions provider is now properly returning quoted remote calls. Previously accepting a suggestion would insert invalid code
Fixes
- Fixed regression and crash on
phoenix-heex
files. This problem was introduced in v0.18.0 and broke completions, definition and hover - Fixed a crash during struct field inspection when the struct cannot be instantiated
- Fixed a crash in implementations provider when behaviour implementation is a delegate or a guard
- Fixed a crash on invalid delegate AST node
- Fixed a crash when incorrect AST resulted in mismatched alias stack pop operations
- Fixed a crash on older elixir versions when compiler diagnostic message is not a binary. This problem was introduced in v0.18.0
- Fixed invalid argument passed to fallback implementation for Apply spec code action
- Workspace symbols provider now correctly navigates to functions with default arguments