Releases: elixir-lsp/elixir-ls
Releases · elixir-lsp/elixir-ls
Release v0.15.0
Improvements
- This is the first release supporting Elixir 1.15. See 898 for details
- Main distribution mode switched to
Mix.install
script. This allows running ElixirLS built with a correct combination of OTP and elixir. Previously used.ez
releases suffered from numerous problems stemming from version incompatibilities (e.g. 193) - elixir_sense replaced many of its custom source parsing internals with elixir 1.13+ Code.Fragment APIs
require
andimport
are now understood by elixir_sense. This improves accuracy of definition, hover, references and complete providers. For example only imports matchingonly
andexcept
options will now be suggested by complete provider.- When accepting a completion with a not required macro a
require
directive will be now added to module. - Reimplemented
use
macro expansion. This should improve accuracy. - Better handling of typespecs in elixir_sense. This should improve accuracy in modules with defs and types sharing the same name.
- Added ability to pass command line options to elixir and erlang via
ELS_ELIXIR_OPTS
andELS_ERL_OPTS
. This allows for setting a node name and connecting remotely to language server and debugger.
Fixes
- Fixed a longstanding bug with formatter not respecting
.formatter.exs
when code is compiling (requires elixir 1.15) Thomas Depierre - Fixed invalid alias handling with submodules
Breaking changes and deprecations
- Elixir 1.12 is no longer supported
.ez
archive based distribution is now deprecated
Release v0.15.0-rc.3
Release v0.14.6
Improvements
- added option
elixirLS.autoInsertRequiredAlias
controlling if complete provider
will auto insert aliases Zeke Dou
Fixes
- Pin elixir_sense, dialyxir and jason versions to ensure compatibility
- Reduce long file names. This should fix compilation issues on some filesystems
- Fixed crash in dialyzer
Release v0.14.5
Fixes
- Fixed regression in debugger not respecting
MIX_ENV
andMIX_TARGET
- Silence output from
dialyxir
making client disconnect from the server on elixir < 1.14 - Avoid serializing PID to JSON
Release v0.14.4
Fixes
- Fixed invalid encoding of messages with unicode strings. This should resolve issues when starting the server in in non-ASCII path
Release v0.14.3
Fixes
- Fixed compatibility with elixir 1.12 and 1.13 Maciej Szlosarczyk
Release v0.14.2
Fixes
- Print correct version
Release v0.14.1
Hotfix release fixing mix crash
Release v0.14.0
Improvements
- Numerous improvements to variable tracking. This should make navigation to variable definition and references work correctly Samuel Hełdak
- Doctests can now be run via Test UI Carl-Foster
- Fixed completions of records defined in the same file
- Fixed support for
alias __MODULE__
- Silent crashes in dialyzer fixed
- Document symbol provider now does not crash on incomplete typespec
- Debugger now properly tracks running processes. Previously UI was not updated when new processes start or running not monitored processes exit
- Debugger now respects
MIX_TARGET
environment variable - Undefined function diagnostics no longer emitted from
mix.exs
dependencies. Elixirmix
swallows those warnings since 1.10 - Builds now use
--all-warnings
flag onmix compile
. This should result in more predictable diagnostics in umbrella apps. - Completion provider returns typespecs for struct properties in documentation if struct module defines type
t()
- Debugger now returns type of breakpoint in the hit event as required by DAP
- Fixed crash when elixir-ls is run in a directory without
mix.exs
- References provider now can find references to elixir modules. Previously modules were found only when a function or macro from that module was called
- Typespecs from behaviour module are used on callback implementations in completions, hover and specification providers
@after_verify
attribute added in elixir 1.14 is recognized as builtin- Fixed edge cases when private def would overshadow a public one
- Quoted expressions are now skipped when code AST is analyzed. There is low chance anything useful can be extracted from them
- Submodule implicit alias behavior is now correctly implemented. This should improve quality in various providers
- Fixed crash in references provider when reference does not have a line (e.g. in phoenix live views)
Refactorings
- Mix Formatter now properly formats elixir-ls code from the top directory
- Major refactoring of elixir-ls server driven by Steve Cohen is under way. It's not yet complete and can be tested by enabling experimental server. Thanks to others involved (Scott Ming, Samuel Hełdak)
- Language server now runs with consolidated protocols. Consolidation is disabled on each build with
--no-protocol-consolidation
flag onmix compile
. This should make the server faster. The side effect is more protocol consolidation warnings printed to the console on elixir < 1.14.
Deprecations
- This is the last release supporting elixir 1.12
Release v0.13.0
Improvements
- Completions now return LSP 3.17
labelDetails
. This allows to provide more contextual detais to completion items - Protocol implementations are no longer auto aliased
- Completions requiring auto aliasing are deprioretized and visually marked
- Optimisation of references tracing. It should make difference especially in macro heavy modules (e.g. Absinthe schemas)
- Improvements to dependency reloading on switching branches.
- Improved compatibility on Windows
- Definitions provider improved handling of multiline variables timgent
- Definitions provider now finds correct arity function timgent
Refactorings
- CI pipeline now runs on Windows and Linux
Deprecations
- Minimum version of Elixir is now 1.12.3
docsh
fallback for erlang documentation removed. EEP 48 is supported on OTP 23+- Code action prefixing unused variables with
_
has been removed due to various problems
Full Changelog: v0.12.0...v0.13.0