- 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
- Fixed invalid encoding of messages with unicode strings. This should resolve issues when starting the server in in non-ASCII path
- Fixed compatibility with elixir 1.12 and 1.13 Maciej Szlosarczyk
- Print correct version
- Reorder startup sequence to avert mix crash
- 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)
- 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.
- This is the last release supporting elixir 1.12
- Completions now return LSP 3.17
labelDetails
. This allows to provide more contextual details to completion items - Protocol implementations are no longer auto aliased
- Completions requiring auto aliasing are deprioretized and visually marked
- Optimization 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
- CI pipeline now runs on Windows and Linux
- 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
Improvements:
- Support for list destructuring and comprehension in
for
andwith
expressions. ElixirLS is able to provide completions for destructured list element - Introduction of compile tracers. ElixirLS now builds a databases basing on compile tracers API available since elixir 1.10. References provider has been rewritten to support tracer database
- Code action prefixing unused variables with
_
Luca Cervello - Complete now proposes not aliased modules and adds required
alias
Ajay - Custom command running mix clean added. Useful when server hits a compilation error
- Custom command returning tests in
.exs
file - Better handling of Phoenix components Aaron Tinio
- Test code lense improvements in umbrella apps 我没有抓狂
- Start script improved when
$XDG_CONFIG_HOME
is not set Sahn Lam - Deprecated symbols are now deprioretized in completions
- Improvements to logging
- Dialyxir is now vendored. This should avert dependency conflicts
- ElixirLS emits more helpful error messages in case of common problems
- Automatic builds can now be disabled Hans
- Better module name suggested for
defprotocol
Milo Lee - Improved LSP position handling
Fixes:
- Several crashes with
untitled:
schema URIs fixed - Longstanding bug in dependencies reloading leading to infamous
** (Mix.Error) Can't continue due to errors on dependencies
fixed - Fixed crash when formatting a file with syntax errors Steve Cohen
- Fixed several crashes in document symbols Steve Cohen
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)
Housekeeping:
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 :)