Skip to content

Releases: elixir-lsp/elixir-ls

ElixirLS 0.29.2

07 Aug 08:29
Compare
Choose a tag to compare

v0.29.2: 07 August 2025

Improvements

  • MCP server disabled by default

Fixes

  • MCP bridge script now accepts port parameter
  • Rescue serialization errors

ElixirLS 0.29.1

05 Aug 12:39
Compare
Choose a tag to compare

v0.29.1: 5 August 2025

Improvements

  • Added config options for disabling MCP and setting MCP port

Fixes

  • Reverted release artefact name change
  • Fixed issue when the server would not start if MCP port was used
  • Fixed crash when reading docs fail
  • Normalize empty string in dotFormatter setting to nil
  • Fixed crashes on invalid multialias
  • Plugins that fail to compile are now skipped
  • Test code lens do not crash if unable to find scope
  • Suggest contract code lens do not crash if unable to translate erlang contract

ElixirLS 0.29.0

04 Aug 10:40
Compare
Choose a tag to compare

v0.29.0: 4 August 2025

Highlights

  • Added Call hierarchy provider implementing LSP textDocument/prepareCallHierarchy, callHierarchy/incomingCalls and callHierarchy/outgoingCalls
  • ElixirLS now bundles a number of experimental LLM oriented tools exposed as custom commands and a builtin MCP server. The tools focus on model friendly text interface instead of typical IDE oriented LSP API methods. Refer to README.md on how to connect to the MCP server. The tools include:
    • find_definition - Find and retrieve the source code of symbols.
    • get_environment - Retrieve environment at location with aliases, imports, requires and more.
    • get_docs - Aggregate and return comprehensive documentation
    • get_type_info - Extract typespecs and contracts.
    • find_implementations - Find all implementations of behaviours and protocols.
    • get_module_dependencies - Analyze module dependency relationships
  • Unofficial support for elixir 1.19

Improvements

  • Added option elixirLS.dotFormatter to specify path to custom .formatter.exs
  • Added elixir_check mode to launch script
  • Respect :* in locals_without_parens
  • Language Server Protocol implementation refactored to use typed structs from gen_lsp library by Mitchell Hanberg
  • Debug Adapter Protocol implementation refactored to use typed structs from gen_dap library by Łukasz Samson
  • Debug Adapter Protocol spec compliance - introduced error codes
  • Added support for includeDeclaration parameter in references provider
  • Improved * wildcard handling in debug adapter launch config

Fixes

  • Fixed crashes related to invalid iodata handling
  • Fixed unicode handling in refactoring functions
  • Fixed debug adapter crash when getting info on no longer alive processes
  • Forkaround Exception.blame crash
  • Fixed crash on invalid locals_without_parens
  • Fixed crash on invalid dialyzer settings
  • Fixed crash in markdown generation
  • Fixed crash during launch on deterministic elixir builds Sofie

Breaking changes

  • support for rtx in launch script dropped. Upgrade to mise

Release v0.28.0

24 May 10:49
Compare
Choose a tag to compare

v0.28.1: 24 May 2025

Fixes

  • Added missing CI permissions on release publish

v0.28.0: 24 May 2025

Highlights

  • Added support for OTP 28 on elixir 1.18.4
  • Support for go to definition and find references in multialias directives
  • ElixirLS will now try to autodetect path to elixir standard library Gilbert

Improvements

  • Documentation on struct and record field completion items
  • Added support for OTP 28 dialyzer options
  • Signature help now renders metadata entries
  • Improvements to references provider. It now can find references to aliases in current file

Release v0.27.2

24 Mar 20:11
Compare
Choose a tag to compare

v0.27.2: 24 March 2025

Fixes

  • Improved asdf v0.16+ handling in launch script. ElixirLS will no longer overwrite ASDF_* environment variables
  • Fixed selection ranges crash with empty do end blocks
  • Fixed declaration provider when multiple locations are returned
  • Avoid emitting events from debug adapter after disconnect request

Release v0.27.1

27 Feb 22:24
Compare
Choose a tag to compare

v0.27.1: 27 February 2025

Fixes

  • Fixed regression in legacy asdf handling

Release v0.27.0

27 Feb 10:08
Compare
Choose a tag to compare

v0.27.0: 27 February 2025

Highlights

  • Added Go to declaration provider. It can be used to navigate from implementation to callback definition in behaviour module, from protocol implementation to protocol definition or from overriding def to the __using__ macro.
  • Added support for asdf v0.16

Improvements

  • Better handling of typespecs from behaviours
  • Definition provider returns spec and callback location
  • Hover provider returns documentation on spec and callbacks
  • Added a new setting elixir_ls.stdlibSrcDir to allow users to point to their elixir stdlib directory cbecker
  • Better handling of non standard deps_path and path deps in tracer
  • Replace function code action now works with __MODULE__ and attribute calls
  • Better macro expansion with cursor AST nodes

Fixes

  • Fixed incremental dialyzer crash on error
  • Avoid triggering build on settings notification when settings are not changed. This caused a dialyzer crash in some clients
  • Fish sell launch script now uses exec instead of eval. This should resolve process leaks
  • Use System.halt/1 to exit the server, this is more reliable than System.stop/1 and should resolve issues with process leaks
  • Added a workaround for a common completions crash related to Ash
  • Fixed a rare parser crash on race conditions between document update and LSP request
  • Fixed crash in code action when diagnostic is a markdown document
  • Fixed completions crashing on too long regexes
  • Fixed a bug in inference engine on invalid pin AST nodes
  • Fixed a crash on invalid optional callbacks

Breaking changes

  • elixir 1.13 reached end of life and is no longer supported. Consider updating to 1.14+

Release v0.26.4

31 Jan 16:29
Compare
Choose a tag to compare

v0.26.4: 31 January 2025

Fixes

  • Fixed a crash when elixir 1.18.0 emits diagnostics without line position
  • Fixed a crash in type inference engine when expanding calls

Release v0.26.3

30 Jan 20:26
Compare
Choose a tag to compare

v0.26.3: 30 January 2025

Improvements

  • Better handling of AST with cursor in defs and typespecs
  • ElixirLS will now respect that locals are not accessible in module body
  • Macro accessibility rules are now respected in type inference engine

Fixes

  • Fixed completions crash in keyword options
  • Fixed completions crash when cursor line in request was outside document range
  • Fixed completions crash when unable to format spec
  • Fixed a crash when surround context around cursor is dynamic alias
  • Fixed a crash when elixir 1.18.0 emits diagnostics without column position
  • Fixed completions crash on capture arg
  • Fixed signature provider crash on protocol reflection functions
  • Fixed multiple provider crashes when LSP request position falls exactly in the middle of UTF16 high surrogate pair

Release v0.26.2

02 Jan 22:09
Compare
Choose a tag to compare

v0.26.2: 2 January 2025

Improvements

  • Replace remote function code action now works when erlang modules are aliased

Fixes

  • Fix crash when extracting data from diagnostics on elixir 1.18
  • Fixed crash in keyword options completions when docs cannot be found
  • Fixed crash in keyword options completions when remote type cannot be expanded