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 Implmentations" 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 interpretted (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 unneccessary 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 :)