- ElixirLS updated to v0.24.1
- fixed a crash in telemetry init caused by breaking change in @vscode/extension-telemetry library
- ElixirLS updated to v0.24.0
- Addressed regression on Windows affection users with whitespaces in home path - Alim ul kader T
- ElixirLS updated to v0.23.0
- Added support for remote debugging launch configs (with
attach
request) - It is possible to restrict
mix.exs
search (projectDir) to the current root folder only, so in multi-root workspace configurations ElixirLS won't start in the outermost containing themix.exs
folder - Vladimir Drobyshevskiy
- Addressed breaking change introduced in VSCode 1.92 affecting Windows related to CVE-2024-27980 - Lars Oehnenamen
- ElixirLS updated to v0.22.1
- Enabled ANSI colors in Debug Adapter
- Support for elixir 1.17
- Support for OTP 27
- ElixirLS updated to v0.22.0
- Added support for elixir 1.17 sigils with numerals
- Added missing OTP 26+ dialyzer options
overlapping_contract
andno_unknown
- Improvements to terminal link provider Juan Barrios
- ElixirLS updated to v0.21.3
- ElixirLS updated to v0.21.2
- ElixirLS updated to v0.21.1
- 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
- ElixirLS updated to v0.21.0
- Debug test from Test UI now runs tests in trace mode to disable timeouts
- New logo Kirills Reunovs
- 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
- ElixirLS updated to v0.20.0
- Quoted atoms and calls are now treated as unbalanced bracket scopes
- Improved syntax highlighting of underscored typespecs and typespecs without parens. Previously those were matched as
comment.unused.elixir
,variable.other.readwrite.elixir
,entity.name.function.call.local.elixir
. A scopemeta.type.definition.elixir
has been introduced
- Typespecs are now matched as
entity.name.function.typespec.elixir
. Previously those would match ascomment.unused.elixir
,variable.other.readwrite.elixir
andentity.name.function.call.local.elixir
- Test UI is now able to run multiple tests at once. This is made possible with running
mix test
command via debug adapter with a custom ExUnit formatter streaming test suite progress via DAP output events. Running multiple tests is supported on workspace folder, file, module, describe blocka and doctest level - 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.
- ElixirLS updated to v0.19.0
- Added highlighting of matching
do|fn
end
pairs. This was added in v0.15.0 and reverted in v0.15.1. The previous attempt broke ondo:
and other atoms. This problem is now resolved withconstant.language.symbol.elixir
added to unbalanced scopes - Added highlighting of matching
<<
>>
pairs. This was added in v0.15.0 and reverted in v0.15.1. The previous attempt broke on bitwise operators. This problem is now resolved withkeyword.operator.bitwise.elixir
andkeyword.operator.other.unbalanced.elixir
added to unbalanced scopes - Tests are no longer run with with
--raise
flag - Test UI now renders separate doctests making it possible to run or debug them separately
- Charlists are now classified as
string.quoted.single.elixir
instead ofsupport.function.variable.quoted.single.elixir
. The previous class was breaking brackets matching algorithm. VSCode treats strings as unbalanced scopes.
- Test UI is able to correctly run tests with file filter on Windows. This works around elixir-lang/elixir#13225
- Test UI now finds tests of types other that
test
anddoctest
. Previously the filtering was too aggressive
- Tests are now always run through debug adapter (with or without
noDebug
flag) - Charlists are now classified as
string.quoted.single.elixir
instead ofsupport.function.variable.quoted.single.elixir
. The previous class was breaking brackets matching algorithm. VSCode treats strings as unbalanced scopes. ~>>
<<~
operators are now classified askeyword.operator.other.unbalanced.elixir
instead ofkeyword.operator.other.elixir
- ElixirLS updated to v0.18.1
- Syntax highlighting now correctly matches quoted remote calls (
Mymod."4quo\"ted"()
is valid elixir syntax)
- Elixir 1.16 support
- Diagnostics provider now returns related info with code positions. This feature works best with elixir 1.16 allowing for navigation to invalid syntax elements like mismatched brackets
- On type parser has been improved and extended. It now keeps a cache of parsed AST and extracted document metadata. Most of the providers has been updated to reuse this metadata eliminating the need for on demand parsing. This should make completions, hover, etc more snappy. The previous implementation was particularly not efficient for completions provider that would parse the file twice for each request
- Phoenix integration improved. Go To Definition can now navigate to controllers when inside a Phoenix scope. Complete suggestions in Phoenix.Router now return controllers and actionsGustavo Aguiar
- ElixirLS updated to v0.18.0
- Added suggested configuration for
eex
files - Test UI will no longer look for test files in directories starting with
.
- Syntax highlighting correctly matches
!
and?
at the end of function calls. Preciously those was matched assource.elixir
- Minimum vscode engine version is now 1.80.0
- VSCode language client updated to v9.0.1 updating LSP compatibility to v3.17.5
- ElixirLS updated to v0.17.10
- ElixirLS updated to v0.17.9
- Introduced sampling for most common telemetry data
- ElixirLS updated to v0.17.8
- ElixirLS updated to v0.17.7
- ElixirLS updated to v0.17.6
- ElixirLS updated to v0.17.5
- ElixirLS updated to v0.17.4
- ElixirLS updated to v0.17.3
- Better sanitization of elixir stack traces in error reports
- Fixed crash when Test UI is not able to parse test file
- ElixirLS updated to v0.17.2
- The extension reports errors and usage data via VSCode telemetry. Refer to README.md#Telemetry
- Grammar updated - fixed dot access matched as function call. This regression was introduced in v0.17.1
- Grammar updated - fixed punctuation not matched in atoms and attributes. This regression was introduced in v0.17.0
- Restart command refactored. Previously it would fail to restart a failed language server client
- ElixirLS updated to v0.17.1
- Variables are no longer matched as punctuation in grammar
- Restored function call matching in grammar
- Consistently match modules. Previous rules matched them differently in
defmodule
- Syntax highlighting for Unicode identifiers. Elixir supports Unicode identifiers since v1.5 and now all ElixirLS features should work with them
- When running a debug session from Test UI test result is now passed to the test controller and UI updates accordingly
- ElixirLS updated to v0.17.0
- The extension is now bundled. This should improve startup time
defprotocol
anddefimpl
are now treated as modules in grammar
- Task arguments are now correctly passed to debugger when starting debug session from Test UI. This bug made it impossible to debug a single test
- Fixed race conditions in Test Controller. Previously if Test UI was loaded before the language server starts the extension would error and fail to get the list of tests in project
env
from launch config is now correctly passed to debugger process in folderless setup (i.e. when launch config is bundled in workspace file)- Bogus syntax highlighting rules matching function calls removed
- ElixirLS updated to v0.16.0
- Migrated to pull based configuration retrieval and removed deprecated configuration sync. This addresses issues in recent VSCode versions when after restart the server would ignore client configuration.
- Improved handling of language server uninitialized state. This should make Testing UI more stable.
- Fixed syntax highlighting with camelCase calls Milo Lee
- Debug now starts in the correct workspace folder. Previously the debug controller incorrectly assumed there is only one workspace.
<<
and>>
bracket matching has been removed. It broke syntax highlighting in modules using<<<
and>>>
bitwise operators.
No changes since v0.15.2. 0.15.2 failed to publish to Open VSX
- ElixirLS updated to v0.15.1 with support for OTP 26
- Revert
do
end
bracket matching. This introduced too many problems and the workarounds did not work fordo:
- Revert markdown highlighting in heredocs.
text.html.markdown
interferes with elixir grammar when a list (*
or-
) is present. Handling this would require a dedicated grammar for heredoc markdown.
- ElixirLS updated to v0.15.0
- Added support for elixir 1.15 multi-letter sigils
- Added highlighting of matching
do
end
pairs - Treat code in heredocs as markdown. This allows syntax highlighting and delegation to markdown language server in
@moduledoc
@doc
and@typedocs
- Highlight elixir code in
~L
sigil - Improved handling of multi-root workspaces. Now language server is started in outermost workspace directories that contain
mix.exs
. - Pass env from launch configuration to debugger. This allows setting node name for remote debugging (e.g.
"env": {"ELS_ELIXIR_OPTS": "--sname mynode"}
)
- Fixed not working syntax highlighting for
defguard
andreraise
- Reverted changes adding syntax highlighting in
.heex
. This conflicted with Phoenix Framework extension languageServerOverridePath
is correctly handled in debugger- Consistently highlight
@moduledoc
@doc
and@typedocs
modifiers as documentation
- The extension code has been split into smaller units
- Test suite expanded
- Test suite now passing on unix and windows
- Removed highlighting of some pre elixir 1.0 operators (
inlist
,inbits
,bc
,lc
,xor
) that are not supported by the compiler - elixir 1.12 is no longer supported
- Disabled ANSI colors in test output when run from Testing tab. VSCode test output does not support ANSI color markers
- Refer to correct version in launch script
- Mix.install is now running in quiet mode. Thanks to that git errors are no longer swallowed. This should make resolving problems easier.
- TestUI Run test and Debug will now be default use a launch configuration named
mix test
if present in workspace Dave Purrington - Added option
elixirLS.autoInsertRequiredAlias
controlling if complete provider will auto insert aliases
- Fix crash when running tests via code lense
- Fix crash in test discovery
- Protocol consolidation is now turned off. This was causing problems in debugger
- Include fixes for crashes from v0.14.5 of elixirLS
- Explicitly set MIX_ENV to
test
in run/debug test commands
- Fixed invalid encoding of messages with unicode strings. This should resolve issues when starting the server in in non-ASCII path
- Fix compatibility with elixir 1.12 and 1.13
- Correctly set release tag in Windows startup scripts
- Make startup scripts not crash on Linux
- Debugger can now be run directly from Test UI
- The extension now uses
Mix.install
to manage elixir-ls versions. Thanks to that it will use a correct version build for the project's environment, OTP and elixir version.
- Test Code Lense integrated with Test UI Carl-Foster
- Test UI properly respects
projectDir
setting - Improve rendering of
defdelegate
Vicente Merlo - It's now possible to disable auto build with
autoBuild
setting - Fixed handling of scoped settings in multiroot workspaces
- Debugger respects
MIX_TARGET
- Formatter properly lints all files Carl-Foster
- Allow to override default elixirLS release path in config Daniel Silva
- VSCode task provider with common mix tasks e.g. clean, compile, get.deps, test
- HEEX syntax highlighting - turned out to break phoenix extension
Improvements:
- Test UI support added
- HEEX syntax highlighting Matthew Lehner
- More extension activation events
- Support for elixir 1.14 EEX comment syntax Brian Alexander
- Custom command
Trigger mix clean in language server
Fixes:
- duplicated workspace modification subscription removed
Improvements:
- Elixir 1.14 support
- Document symbols now return non empty selection ranges. This fixes breadcrumbs behavior in vscode
- Fixed dialyzer crash on OTP 25
- Added support for mix formatter plugins (Dalibor Horinek)
- Debugger now returns detailed info about ports, pids and function variables
- Debugger completions now return detail field
- Diagnostic positions now return column position returned by compiler (elixir 1.14+)
- Diagnostic position fixed to never return invalid negative values
- An exact
do
keyword completion is now preselected and more preferred overdefoverridable
- Fixed hexdocs links in hover for aliased modules and imported functions (Milo Lee)
- Better module name suggestions in Phoenix
live
directory (Manos Emmanouilidis)
Deprecations
- Minimum version of Elixir is now 1.11
Improvements to debugger adapter:
- A lot of new features around breakpoints: function breakpoints, conditional breakpoints, hit count and log points #656, #661, #671 (thanks Łukasz Samson)
- Completions in debugger eval console #679 (thanks Łukasz Samson)
- Debugger evaluate results can now be expanded #672 (thanks Łukasz Samson)
- Messages in the queue of debugged process can now be examined #681 (thanks Łukasz Samson)
- Debugger can now handle pause and terminateThread requests #675 (thanks Łukasz Samson)
- Clipboard and hover eval is now supported in debugger #680 (thanks Łukasz Samson)
- Auto interpreting can now be disabled #616 (thanks Jason Axelson)
- Debugger conforms better to DAP 1.51 specification #678 (thanks Łukasz Samson)
Improvements to language server:
- Language server can now be restarted via custom command (e.g. from VSCode) #653 (thanks Łukasz Samson)
- Hover provider adds links to hexdocs.pm #574 (thanks Fenix)
- Numerous cases of invalid UTF8-UTF16 position conversions fixed #677 (thanks Łukasz Samson)
- Improved markdown wrapping #663 (thanks 我没有抓狂)
- Improved MIX_TARGET environment variable handling #670 (thanks Masatoshi Nishiguchi)
- defmodule snippet now suggests a module name #684 (thanks Manos Emmanouilidis)
- Constant recompilation on Nerves projects fixed #686 (thanks Łukasz Samson)
- Invalid negative positions in diagnostics are no longer emitted #695 (thanks Łukasz Samson)
- Improvements to document symbols provider (https://github.com/elixir-lsp/elixir-ls/commit/1e38db4c9dd9277dfffd9563286f652e3d617a5f) (thanks Łukasz Samson)
- Added support for OTP 25 new dialyzer options (https://github.com/elixir-lsp/elixir-ls/commit/0da7623f644f79559699e9f002820ad9219d108d) (thanks Łukasz Samson)
- Improvements to complete (operator, sigil, bitstring) #150, (https://github.com/elixir-lsp/elixir_sense/commit/33df514a1254455f54cb069999454c7e8586eb2d) (thanks Łukasz Samson)
- Improved alias resolution (elixir-lsp/elixir_sense#151) (thanks Łukasz Samson)
- Fixed crash on OTP 24.2 (https://github.com/elixir-lsp/elixir_sense/commit/72f3d4ffee3c11c289d47d14a6c5f6e1a4afacb4) (thanks Łukasz Samson)
- Better function detection when hovering inside string interpolation #152 (thanks Milo Lee)
- Support for external plugins to elixir_sense #141 (thanks Zach Daniel)
VSCode:
- To Pipe and From Pipe code transformation command #182 (thanks Paulo Valente)
- Restart language server command added #218 (thanks Łukasz Samson)
- New settings related to auto interpreting in debugger (https://github.com/elixir-lsp/vscode-elixir-ls/commit/4294f9f0da6819e519aa4278f5f2d553ff054dac) (thanks Jason Axelson)
- New OTP 25 dialyzer settings (https://github.com/elixir-lsp/vscode-elixir-ls/commit/50a8a53fa79c14d2ea4031f872ec3d7cd32155f5) (thanks Łukasz Samson)
- Compile time environment variables can now be set in extension config #213 (thanks vacarsu)
- Additional watched extensions can now be set in extension config #197 (thanks Vanja Bucic)
- Improved unquote_slicing highlighting #221 (thanks Milo Lee)
- Improved string interpolation highlighting #229 (thanks Milo Lee)
- Improved regex with < highlighting #226 (thanks Tiago Moraes)
- Extension updated to use LSP v3.16 #227 (thanks Łukasz Samson)
Houskeeping:
thanks Łukasz Samson, Thanabodee Charoenpiriyakij, Daniils Petrovs, Jason Axelson
Improvements:
- Elixir 1.13 support (thanks Łukasz Samson) #620
- Fix formatting performance problems with .formatter.exs in subdirectories (thanks Jon Leighton) #609
- Allow watching additional extensions via
additionalWatchedExtensions
(thanks Vanja Bucic) #569 - Support for setting additional environment variables (thanks vacarsu) #622
- Allow configuring debugExpressionTimeoutMs (thanks Jason Axelson) #613
Changes:
- Default
fetchDeps
to false (thanks Jason Axelson) #633fetchDeps
causes some bad race conditions, especially with Elixir 1.13
Bug Fixes:
Housekeeping:
- Add initial mkdocs documentation website (thanks Daniils Petrovs) #619
- Update to elixir-lsp fork of mix_task_archive_deps (thanks Jason Axelson) #628
VSCode:
- Change the default of
fetchDeps
to false (thanks Jason Axelson) #189 - Allow configuring the debug expression timeout (thanks Jason Axelson) #210
- Set which pairs of brackets should be colorized (thanks S. Arjun) #207
Improvements:
- Add a "do" autocompletion (thanks Jason Axelson) #593
- Add an "end" autocompletion (thanks Maciej Szlosarczyk) #599
Housekeeping:
- Remove dependency on forms (thanks Awlexus) #596
- CI releases: utilize auto selection of latest patch version (thanks Po Chen) #591
- Change minimum OTP version to 22 in warning message (thanks Thanabodee Charoenpiriyakij) #592
- Fix various typos (thanks Kian Meng Ang) #594
Improvements:
- Basic single-file (e.g.
.exs
) support (thanks Łukasz Samson) #562 (and VSCode #195) - Add commands for piping and unpiping text (thanks Paulo Valente) #515
- Make
test
snippet consistent by including quotes (thanks Mitchell Hanberg) #542 - Smarter spec suggestions in protocols and implementations (thanks Łukasz Samson) #549
- Trigger signature_help on comma (thanks Jared Mackey) #564
- Watch HEEx and Surface files (thanks Marlus Saraiva) #583
- ElixirSense: Add more fuzzy matching (thanks Maciej Szlosarczyk) #131
- ElixirSense: Add inference when using dependency injection with module attributes (Gustavo Aguiar) #133
- ElixirSense: Add support for EEP-48 (updated documentation storage format) (thanks Łukasz Samson) #132
- Watch
.heex
and.sface
templates (thanks Marlus Saraiva) #583
Bug Fixes:
- Fix suggest contracts windows regression (thanks Łukasz Samson) #531
- Support exunit describe and test calls with unevaluated names (thanks Jonathan Arnett) #537
- Improve test runner to use exunit testPaths and testPattern (thanks Étienne Lévesque) #500
- Fix race-condition in suggest contracts (thanks Łukasz Samson) #544
- Fix
@doc false
and@moduledoc false
for folding ranges (thanks Jason Axelson) #580 - Guard against sending -1 line or column locations in LSP messages (thanks Oliver Marriott) #558
- Avoid crashing on manipulatePipes errors (thanks Paulo Valente) #576
- Handle Nova long form paths in rootURI (thanks Raul Chedrese) #579
- Fix invalid glob pattern in watchers registration (thanks Łukasz Samson) #586
- Handle
.
and symlinks as the project dir (thanks Łukasz Samson) #587
Housekeeping:
- Minor iteration/performance improvements (thanks Andrew Summers) #527
VSCode:
- Support optional
~S
sigil at start of doc folding region (thanks thepeoplesbourgeois) #179 - Fix run test command to save document before running tests (thanks Étienne Lévesque) #165
- Support HEEx and Surface files (thanks Marlus Saraiva) #204
Deprecations
- Minimum version of Elixir is now 1.10
- Minimum version of Erlang/OTP is now 22 These are keeping in line with our Version Support Guidelines: https://github.com/elixir-lsp/elixir-ls/blob/master/DEVELOPMENT.md#version-support-guidelines
Improvements:
- Use fuzzy matching for function completion (thanks Po Chen) #491
- For example: "valp" will match
validate_password
and "Enum.chub" will matchEnum.chunk_by/2
- Note: the plan is to extend this fuzzy matching to other types of completion in the future
- For example: "valp" will match
- Support auto-generating folding ranges (textDocument/foldingRange) (thanks billylanchantin) #492
- Snippet variants with n-1 placeholders to use after pipe (thanks Leonardo Donelli) #501
- Make launcher script more robust and support symlinks... more robustly (thanks Joshua Trees) #473
- Add support for Elixir 1.12 (thanks Łukasz Samson) #523
Bug Fixes:
- Make expandMacro a custom command (thanks Łukasz Samson) #498
- Scope expandMacro command to ElixirLS server instance (thanks Tom Crossland) #505
- Suppress setup script stdout output on windows (thanks Po Chen) #497
Housekeeping:
- Improved support for OTP 24 (thanks Tom Crossland) #504
- Note that OTP 24 isn't officially supported since it is not yet released
- Add meta-test to ensure that all commands include the server instance id (thanks Jason Axelson) #507
- Fix test flakiness by ensuring build is complete (thanks Łukasz Samson) #511
VSCode:
- Fix test lens shell escaping on Windows (thanks Étienne Lévesque) #175
- Add hrl to watched files (thanks Łukasz Samson) #177
- Fix CI issues (thanks Łukasz Samson) #178
- Add support for
expandMacro
command (thanks Łukasz Samson) #176
Deprecations
Deprecate non-standard elixirDocument/macroExpansion
command. It is being replaced with the expandMacro
custom command. See #498 for details. It is planned to be fully removed in 0.8
Bug Fixes:
- Skip non file: URI scheme notifications (thanks Łukasz Samson) #475
Housekeeping:
- Fixes tests not compiling after first run (thanks Étienne Lévesque) #463
Bug Fixes:
- Revert "Make wrapper script more robust" (thanks Jason Axelson) #471
Improvements:
- Add support for
textDocument/implementation
("Go to Implementations" and "Peek Implementations") (thanks Łukasz Samson) #415 - More specific
CompletionItemKind
for autocomplete (thanks Jason Axelson) #419 - Support ASDF installed via homebrew on macOS (thanks Fabian Stegemann) #428
- Make launcher script more robust and support symlinks (thanks Joshua Trees) #445
- ElixirSense: Fix autocomplete for many_to_many associations (thanks Damon Janis) elixir_sense #120
- Experimental: Add code lens to run tests (thanks Étienne Lévesque) #389
- Note: This is disabled by default for now
Bug Fixes:
- Fix multiple issues with text synchronization (thanks Łukasz Samson) #411
- Purge consolidated protocols before compilation (thanks Łukasz Samson) #406
- Don't add stream_data to release archive (thanks Tomasz Kowal) #417
- Fixes bug introduced in #411 so it doesn't affect a released version of ElixirLS
- Do not insert
end
afterdo:
(thanks Łukasz Samson) #426 - Fix awaiting_contracts not getting responses (thanks Łukasz Samson) #433
- Fix invalid value set in write_manifest_pid (thanks Łukasz Samson) #430
- Give better warning for incomplete erlang install (thanks Jason Axelson) #434
- Fix some test lenses bugs (thanks Étienne Lévesque) #443
- URI - file system path conversion fixes (thanks Łukasz Samson) #447
- Significantly improve debugger stability (thanks Łukasz Samson) #457
- Fix invalid snippet inserted when completing fun with record argument (thanks Łukasz Samson) #458
- Return correct location for defs with when (thanks Łukasz Samson) #464
Housekeeping:
- Switch from Travis CI to GitHub actions (thanks Jason Axelson) #420
- Add an .editorconfig for the project (thanks Jeff Jewiss) #432
- Add test coverage to packet stream and wire protocol modules (thanks Łukasz Samson) #429
VSCode:
- Fix debugger not starting on windows (thanks Łukasz Samson) #154
- Add fodling markers for @doc, @moduledoc, @typedoc, and #region (thanks Michael Johnston) #157
- README update to reflect editor.acceptSuggestionOnEnter change (thanks Maximilien Mellen) #159
Improvements:
Changes:
- Remove query prefixes from workspace symbol search (the functionality is now longer supported by VSCode) (thanks Łukasz Samson) #396
Bug Fixes:
- Fix formatting on windows (thanks Po Chen) #375
- Improve formatting speed (thanks Matt Baker) #390
- Fix warnings and errors around starting wx (thanks Łukasz Samson) #388
- This fixes an issue when running ElixirLS in VSCode remote dev containers
Housekeeping:
- Add GitHub action to auto-publish releases (thanks Po Chen) #384
- Spec compliance, race condition fixes, and more tests (thanks Łukasz Samson) #399
VSCode:
- Bump deps and switch to newer vscode platform version (thanks Łukasz Samson) #148
- Subscribe Copy Debug Info command for disposal (thanks Tan Jay Jun) #149
- Turn files in stack traces into clickable links (thanks Tan Jay Jun) #152
VSCode:
- Fix broken packaging (issue #145)
Potentially breaking changes:
- Do not format files that are not listed in
inputs
of.formatter.exs
(thanks Tan Jay Jun) #315 - Drop OTP 20 and Elixir 1.7.x support and set some version support guidelines (thanks Jason Axelson) PR #337
Improvements:
- Add Ecto completion plugin from ElixirSense (thanks Marlus Saraiva) #333
- Supports generic completion items and moves doc snippet completions to ElixirSense because there's more context there (more detail available in elixir_sense#104)
- Add eval support in debugger to see values of variables in scope (thanks Dmitry Shpagin) #339
- Use ElixirSense's error tolerant parser for document symbols (thanks Łukasz Samson) #322
- Add more auto-completion trigger characters:
& % ^ : !
(thanks Łukasz Samson) #327 - Disable busy-wait in BEAM to reduce CPU usage (thanks Jason Axelson) #331
- Update HoverProvider to return MarkupContent (thanks Jonathan Arnett) #342
- In debugger, exclude modules with wildcards (thanks Fabian Stegemann) #363
- Support Elixir 1.11 (thanks Łukasz Samson) #360
Bug Fixes:
- Fix issue with formatting and deps handling (thanks Thanabodee Charoenpiriyakij) #345
- This would manifest as
** (Mix.Error) Unknown dependency :ecto_sql given to :import_deps in the formatter configuration.
- This would manifest as
- Fix formatting files in umbrella projects (thanks Drew Olson)#350
- Fix callback suggesions (thanks Łukasz Samson) #359
House keeping:
- Use error tolerant parser for WorkspaceSymbols (thanks Łukasz Samson) #322
- Fix the link in the README to releases (thanks RJ Dellecese) #312
- Update the dialyzer section in the readme (thanks Serenity597) #323
- Add vim-lsp to plugin list (thanks Thanabodee Charoenpiriyakij) #340
- Cleanup test output (thanks Jason Axelson) #347
- Remove the default .tool-versions file (thanks Jason Axelson) #351
- Fix up the test suite (thanks Jason Axelson) #352
- And re-enable dialyzer #354
Note: MIX_TARGET
support was added in 0.5.0 but wasn't added to the changelog until later:
- Support
MIX_TARGET
so the language server can have target specific contexts, like with Nerves (thanks Jon Carstens) #299
VSCode:
- Debugger does not successfully launch on Windows (thanks Craig Tataryn) #115
- Add support to highlight octal numbers correctly (thanks Thanabodee Charoenpiriyakij) #128
- Followup improvement #137
- Add support to highlight binary numbers correctly (thanks Thanabodee Charoenpiriyakij) #133
- Add support to highlight
...
correctly (thanks Thanabodee Charoenpiriyakij) #130 - Highlight atoms as
constant.language.symbol.elixir
instead ofconstant.other.symbol.elixir
(thanks Omri Gabay) #142
Improvements:
- Support completion of callback function definitions (thanks Marlus Saraiva) #265
- Support WorkspaceSymbols (go to symbol in workspace) without dialyzer being enabled (thanks Jason Axelson) #263
- Give more direct warnings when mix.exs cannot be found (thanks Jason Axelson) #297
- Add completions for
@moduledoc false
and@doc false
(thanks Jason Axelson) #288 - Support
MIX_TARGET
so the language server can have target specific contexts, like with Nerves (thanks Jon Carstens) #299
Changes:
- Major improvement/change: Improve autocomplete and signature help (thanks Marlus Saraiva) #273
- Don't insert arguments when completing a function call (almost always had to be deleted)
- Autocomplete triggers signature help
- Don't insert a
()
around the function call if the formatter configuration does not require it - Further autocomplete refinements (thanks Marlus Saraiva) #300
- No longer always return a static list of keywords for completion (thanks Jason Axelson) #259
Bug Fixes:
- Formatting was returning invalid floating point number (thanks Thanabodee Charoenpiriyakij) #250
- Fix detection of empty hover hints (thanks Dmitry Gutov) #279
- Debugger doesn't fail when modules cannot be interpreted (thanks Łukasz Samson) (such as nifs) #283
- Do not advertise
workspaceFolders
support (thanks Jason Axelson) #298 - Do not try to create gitignore when project dir not set (thanks Łukasz Samson) #306
- Only call DocumentSymbols (outline pane) for .ex and .exs files (thanks Marlus Saraiva) #262
House keeping:
- Server runs with a unique id (and uses it to disambiguate commands) (thanks Alessandro Tagliapietra) #278
- Improvements to the reliability of the test suite (thanks Jason Axelson) #270, #271
- Rename debugger app so that it does not conflict with otp debugger app (thanks Łukasz Samson) #280
- Vendor Jason library to prevent conflicts with user's code (thanks Jason Axelson) #253
- Switch to new supervisor format (thanks Jason Axelson) #260
- Display the version of Elixir used to compile ELixirLS (thanks Jason Axelson) #264
VSCode:
- Support workspaces with multiple elixir projects (thanks Alessandro Tagliapietra) #70
- Improved support for phoenix templates (thanks Marlus Saraiva) #93
- Shows errors in
.eex
and.leex
files (instead of associated.ex
file)
- Shows errors in
- Improve syntax highlighting following pipes (thanks Dusty Pomerleau) #81
- Make
%
a dedicated punctuation scope in elixir syntax file (thanks Dusty Pomerleau) #72 - Migrate generated tasks.json to 2.0.0 syntax (thanks Dusty Pomerleau) #71
- Improve development instructions (thanks Tan Jay Jun) #97
- Activate extension whenever workspace contains elixir files (thanks Jason Axelson) #107
- Make heredocs and most sigils auto-close when used with quotes and triple quotes (thanks Jarrod Davis) #101
- Set a default for
elixirLS.projectDir
(thanks Łukasz Samson) #112 - Support setting
elixirLS.mixTarget
to include target specific dependencies, like with Nerves (thanks Jon Carstens) #108
Improvements:
- Add autocompletion of struct fields on a binding when we know for sure what type of struct it is. (thanks Łukasz Samson) #202
- For details see the Code Completion section of the readme
- Normalize compiler warnings and associate them with templates (thanks Marlus Saraiva) #241
- Add all core elixir apps to the Dialyzer PLT. (thanks Eric Entin) #225
- Change "did not receive workspace/didChangeConfiguration" log level from warning to info (thanks Jason Axelson) #222
- Automatically create a
.gitignore
file inside the.elixir-ls
dir so that users do not need to manually add it to their gitignore (thanks Thanabodee Charoenpiriyakij) #232 - Dialyzer provider shouldn't track removed files and modules (thanks Michał Szajbe) #237
- Load all modules after first build (thanks Akash Hiremath) #227
Bug Fixes:
- Dialyzer: Get beam file for preloaded modules. (thanks Łukasz Samson) #218
- Warn when using the debugger on Elixir 1.10.0-1.10.2. (thanks Jason Axelson) #221
- Don't return snippets to clients that don't declare
snippetSupport
for function completions (thanks Jeffrey Xiao) #223
VSCode:
- Add basic support for
.html.leex
files for Phoenix LiveView (thanks oskarkook) #82 - Add filetype and watcher for
.html.leex
files for Phoenix LiveView (thanks Byron Hambly) #83 - Better phoenix templates support (thanks Marlus Saraiva) #93
VSCode potentially breaking changes:
- Change language id to be lowercase kebab-case in accordance with VSCode guidelines. This also fixes an issue displaying the elixir logo for html.eex files. (thanks Matt Furden) #87
- This changes the language id's
EEx
->eex
andHTML (EEx)
->html-eex
- If you have customized your emmet configuration configuration then you need to update it:
- Open VSCode and hit
Ctrl+Shift+P
orCmd+Shift+P
and type"Preference: Open Settings (JSON)"
- Add or edit your
emmet.includedLanguages
to include the new Language Id:
- This changes the language id's
"emmet.includeLanguages": {
"html-eex": "html"
}
If you have eex file associations in your settings.json then remove them:
"files.associations": {
"*.html.eex": "HTML (EEx)", // remove this
"*.html.leex": "HTML (EEx)" // remove this
},
Meta:
- The original repository at JakeBecker/elixir-ls has now been deprecated in favor of elixir-lsp/elixir-ls. Any IDE extensions that use ElixirLS should switch to using this repository. The "ElixirLS Fork" extension on the VS Code marketplace will be deprecated, and updates will continue at the original ElixirLS extension
Improvements:
- Return the type of function/macro in DocumentSymbols provider (e.g.
def
,defp
,defmacro
) (thanks Jason Axelson) #189 - Return
deprecated
flag or completion tag on completion items for clints that declaredeprecatedSupport
ortagSupport
in complete provider (thanks Łukasz Samson) #180
Bug Fixes:
- Fix
textDocument/documentSymbol
on a non-fully initialized server (thanks Jason Axelson) #173 - Don't return snippets to clients that don't declare
snippetSupport
for completions (thanks Jason Axelson) #177 - Handle an exception that was raised in the DocumentSymbols provider (thanks Jason Axelson) #179
- Fix support for environments (such as Docker Alpine linux) that do not have bash (thanks Cees de Groot) #190
- Handle syntax errors without raising an exception (thanks Jason Axelson) #186 #192
- Workspace symbols handle module unloading during compilation without bringing down the server (thanks Jason Axelson) #191
VSCode:
- Change: Upgrade vscode-languageclient to 6.1.3 to support Language Server Protocol 3.15 (thanks Łukasz Samson) #64
Improvements:
- Bump ElixirSense
- Fixes find all references doesn't work with argument defaults #150
- Adds erlang edoc support elixir_sense #86
- Improvements to complete provider (thanks to Łukasz Samson) #159
- Better handling when file fails to parse
- Remove no longer necessary workaround that prevented completing default
@
(such as@doc
or@external_resource
) - Add more keywords
- Trim spaces
- Use lower compression level to speed up dialyzer manifest writing (thanks to hworld) #164
Bug Fixes:
- Fix dialyzer errors not being reported for umbrella projects #149 (thanks hworld)
- Fix dialyzer checking files that have not changed which gives a good speedup #165 (thanks hworld)
VSCode:
- Change: No longer override default value of
editor.acceptSuggestionOnEnter
vscode-elixir-ls #53 - Change: Warn when incompatible extensions are installed vscode-elixir-ls #57
Improvements:
- Do not highlight function calls the same as function definitions vscode-elixir-ls #40 (thanks Jason Axelson)
- Code lens is returned in more situations #122 (thanks Łukasz Samson)
- Properly support requests without params (fixes shutdown in vim-lsc) #139 (thanks Brad Folkens)
Bug Fixes:
- Fix the debugger #143
- textDocumentSync save match spec (fixes error notice in vim-lsp) #144 (thanks N. G. Scheurich)
Major Improvements:
- Add workspaceSymbol support to quickly navigate to modules, functions, callbacks etc (thanks to Łukasz Samson) #110
- Provide completions for protocol functions (thanks to Łukasz Samson) #83
- Upgrade ElixirSense (thanks to Jason Axelson) #82
- Main changes: return results by arity, return all type signatures, typespec and dialyzer fixes
Improvements:
- Update dialyxir to 1.0.0-rc.7
- Improvements to
textDocument/documentSymbol
, nowDocumentSymbol
is returned instead of the more simplisticSymbolInformation
(thanks to Łukasz Samson and kent-medin) #76 - Support asdf-vm in wrapper scripts (thanks to Cees de Groot) #78
- Update startup message (thanks to Ahmed Hamdy) #85
- Add didSave to server capabilities (thanks to Jonáš Trantina) #86
Potentially Breaking Changes:
language_server.sh
anddebugger.sh
run bash instead ofsh
(this is expected to break very few setups, if any) #118
- Fix debugger tasks not continuing to run on Elixir 1.9 (thanks to joshua-andrassy for doing the legwork)
- Improve supervision tree when writing dialyzer manifest files
VSCode:
- Add syntax rules for function calls vscode-elixir-ls #15 (thanks CaiqueMitsuoka)
VSCode:
- Fix missing comma issue in the language configuration #16
- Add some basic configuration for HTML (EEx) files #14 (thanks @J3RN)
- Fix exceptions raised when running on Erlang 20 and 21 #65
- Dialyxir new 1.0-rc formatting support
can_format/2
now case-insensitive (fixes formatting on Mac OS X)defdelegate
snippet is now syntactically correct (was previously missing a comma)workspace/didChangeConfiguration
handlesnull
now (fixes eglot support)- Update elixir_sense
- Watch LiveView .leex files
- Change 'dialyzerFormat' default setting to
"dialyxir_long"
- Fix compatibility with Elixir 1.9
- Fix bug where Mix file is not reloaded on change if it had errors
- Remove unnecessary empty parens from suggested specs
- Add 'dialyzerFormat' setting to select which warning formatter to use. Options are
"dialyzer"
(default),"dialyxir_short"
,"dialyxir_long"
- (VS Code) Support syntax highlighting in Phoenix LiveView (.leex) files, including ~L sigil (Thanks to @rrichardsonv)
- (VS Code) Improved syntax highlighting and other automatic behavior (Thanks to @crbelaus)
- Fix crash when yecc grammar file has conflicts
- Dialyzer robustness improvements
- When autocompleting a function name with cursor immediately prior to a
(
, don't insert additional parens and argument list
- Fix debugger crash in new versions of VS Code (Thanks to @martin-watts)
- Minor improvements to logs and error messages
- Fix crashes caused by the new spec suggestions feature
- Fix showing of @spec suggestions on newly opened files
- Fix crash in Dialyzer when stale-checking beam files takes too long
- Fix documentation and arg names in suggestions for Elixir 1.7
- Formatter response is now incremental instead of replacing the entire document text
- New feature: Autocomplete suggestions for struct field names (Thanks to @msaraiva/elixir_sense)
- New feature: Suggest @spec annotations using Dialyzer's inferred success typings. To turn it off, set
elixirLS.suggestSpecs: false
- Print PATH to developer console if "elixir" command fails
- Fix Dialyzer crash when some modules are undialyzable
- Skipped because I got my versions out of sync :/
- Fix compatibility issues with recent Elixir versions (1.7.0-dev) and Erlang OTP 21
- Go-to-definition now works for variables (thanks to Elixir Sense)
- Better error messages when server crashes or fails to launch
- Fix autocomplete bugs when typing in parentheses
- Copy latest syntax highlighting from fr1zle/vscode-elixir
- Handle
subdirectories
andimport_deps
in.formatter.exs
. Requires the latest Elixir (1.6.5), which you can install via kiex withkiex install master
prior to its release.
- New feature: Automatically fetch deps when compiling. Set
elixirLS.fetchDeps
tofalse
to disable - New feature: Incremental text synchronization
- Minor improvements to autocomplete and automatic block closing
- New feature: Smart automatic insertion of "end" when beginning a block. This replaces the autocomplete-based approach and fixes the very annoying completion of "->" with "end" when not appropriate
- ** ACCEPT AUTOCOMPLETE SUGGESTIONS WITH TAB INSTEAD OF ENTER.** See readme for an explanation of why. You can change it back if you really want.
- Change default settings to automatically trim trailing whitespace and add newline at end of file
- Don't trigger autocomplete on "_" because you're usually just naming an unused variable
- Improve autocomplete and re-enable quickSuggestions by default
- Fix failures to launch in some projects
- New feature: Find references to modules and functions (Thanks to @mattbaker)
- New feature: Find symbols in document (Thanks to @mattbaker)
- Fix failure to launch if project prints anything to stdout in the mixfile
- Fix bug where Dialyzer warnings sometimes remain after being fixed
- Override build directory to ".elixir_ls/build" as recommended by José Valim
- Fix restart button in debugger
- Improve syntax highlighting (Thanks to @TeeSeal)
- Fix builds and related features on Windows
- Fix autocomplete not firing after "."
- Add auto-indentation rules (copied from fr1zle/vscode-elixir)
- Disable
editor.quickSuggestions
by default so autocomplete suggestions are triggered automatically only when after a ".". This is nice because the language server irritatingly tries to auto-complete things like "do" or "else" if they come at the end of a line. - Add configuration option "mixEnv" to set the Mix environment used when compiling. It now defaults to "test" instead of "dev" to aid in TDD and to avoid interfering with the Phoenix dev server.
- Add configuration option "projectDir" for when your Mix project is in a subdirectory instead of the workspace root.
- Add debug launch configuration option "env" to set environment variables
(including
MIX_ENV
) - Add debug launch configuration option "excludeModules" to avoid interpreting modules. This is important if for modules that contain NIFs which can't be debugged.
- Read formatter options from
.formatter.exs
in project root instead of including line length in extension config options
- Don't focus Output pane on errors because request handler errors are common and recoverable
- Improve error output in debugger and fix failures to launch debugger
- Package ElixirLS as .ez archives instead of escripts. This should make
asdf
installs work. - Fix debugger error logging when initialize fails
- Fix timeouts when calling back into the language server with build or dialyzer results
- Fix failing debugger launch
- Fix segfaults in OTP 20 caused by regexes precompiled in OTP 19
- Fix launch on Windows when there are spaces in the path
- Fix bug where deps are recompiled after every change
- Update README
- Update syntax highlighting (merged from fr1zle/vscode-elixir)
- Rewritten build system to make use of Elixir 1.6 compiler diagnostics
- Code formatting in Elixir 1.6
- Automatic dialyzer server in Erlang/OTP 20
- Lots and lots of refactoring
- Revert to building with Erlang OTP 19.2 instead of 20.0. It seems that escripts built with 20.0 won't run on 19.2 runtimes.
- Fix handling of Windows paths with non-default drive letter
- Enable setting breakpoints in Erlang modules
- Fix launching of debugger on OSX (when working directory is not set to the extension directory)
- Fix launching of language server when Elixir is installed with "asdf" tool. (Fix in 0.0.6 didn't actually work)
- Handle Elixir installations that were done via the "asdf" tool
- Windows support
- Updated ElixirLS to package its apps as escripts and updated client to handle
it. This should fix the error
(Mix) Could not start application language_server: could not find application file: language_server.app
. Windows, however, is still broken. - Began a changelog :)