Releases: elixir-lsp/elixir-ls
Releases · elixir-lsp/elixir-ls
Release v0.25.0
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
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