Skip to content

Latest commit

 

History

History
804 lines (600 loc) · 59.3 KB

CHANGELOG.md

File metadata and controls

804 lines (600 loc) · 59.3 KB

Unreleased

v0.14.5: 21 April 2023

Fixes

  • Fixed regression in debugger not respecting MIX_ENV and MIX_TARGET
  • Silence output from dialyxir making client disconnect from the server on elixir < 1.14
  • Avoid serializing PID to JSON

v0.14.4: 20 April 2023

Fixes

  • Fixed invalid encoding of messages with unicode strings. This should resolve issues when starting the server in in non-ASCII path

v0.14.3: 17 April 2023

Fixes

v0.14.2: 15 April 2023

Fixes

  • Print correct version

v0.14.1: 14 April 2023

Fixes

  • Reorder startup sequence to avert mix crash

v0.14.0: 14 April 2023

Improvements

  • Numerous improvements to variable tracking. This should make navigation to variable definition and references work correctly Samuel Hełdak
  • Doctests can now be run via Test UI Carl-Foster
  • Fixed completions of records defined in the same file
  • Fixed support for alias __MODULE__
  • Silent crashes in dialyzer fixed
  • Document symbol provider now does not crash on incomplete typespec
  • Debugger now properly tracks running processes. Previously UI was not updated when new processes start or running not monitored processes exit
  • Debugger now respects MIX_TARGET environment variable
  • Undefined function diagnostics no longer emitted from mix.exs dependencies. Elixir mix swallows those warnings since 1.10
  • Builds now use --all-warnings flag on mix compile. This should result in more predictable diagnostics in umbrella apps.
  • Completion provider returns typespecs for struct properties in documentation if struct module defines type t()
  • Debugger now returns type of breakpoint in the hit event as required by DAP
  • Fixed crash when elixir-ls is run in a directory without mix.exs
  • References provider now can find references to elixir modules. Previously modules were found only when a function or macro from that module was called
  • Typespecs from behaviour module are used on callback implementations in completions, hover and specification providers
  • @after_verify attribute added in elixir 1.14 is recognized as builtin
  • Fixed edge cases when private def would overshadow a public one
  • Quoted expressions are now skipped when code AST is analyzed. There is low chance anything useful can be extracted from them
  • Submodule implicit alias behavior is now correctly implemented. This should improve quality in various providers
  • Fixed crash in references provider when reference does not have a line (e.g. in phoenix live views)

Refactorings

  • Mix Formatter now properly formats elixir-ls code from the top directory
  • Major refactoring of elixir-ls server driven by Steve Cohen is under way. It's not yet complete and can be tested by enabling experimental server. Thanks to others involved (Scott Ming, Samuel Hełdak)
  • Language server now runs with consolidated protocols. Consolidation is disabled on each build with --no-protocol-consolidation flag on mix compile. This should make the server faster. The side effect is more protocol consolidation warnings printed to the console on elixir < 1.14.

Deprecations

  • This is the last release supporting elixir 1.12

v0.13.0: 8 January 2023

Improvements

  • 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

Refactorings

  • CI pipeline now runs on Windows and Linux

Deprecations

  • Minimum version of Elixir is now 1.12.3
  • docsh fallback for erlang documentation removed. EEP 48 is supported on OTP 23+
  • Code action prefixing unused variables with _ has been removed due to various problems

v0.12.0: 7 November 2022

Improvements:

  • Support for list destructuring and comprehension in for and with 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

v0.11.0: 14 August 2022

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 over defoverridable
  • 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

v0.10.0: 10 June 2022

Improvements to debugger adapter:

Improvements to language server:

VSCode:

Housekeeping:

thanks Łukasz Samson, Thanabodee Charoenpiriyakij, Daniils Petrovs, Jason Axelson

v0.9.0: 4 December 2021

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) #633
    • fetchDeps causes some bad race conditions, especially with Elixir 1.13

Bug Fixes:

  • Add indentation following "do" completion (thanks AJ Foster) #606

Housekeeping:

VSCode:

v0.8.1: 1 September 2021

Improvements:

Housekeeping:

v0.8.0: 14 August 2021

Improvements:

Bug Fixes:

Housekeeping:

VSCode:

Deprecations

v0.7.0: 06 April 2021

Improvements:

  • Use fuzzy matching for function completion (thanks Po Chen) #491
    • For example: "valp" will match validate_password and "Enum.chub" will match Enum.chunk_by/2
    • Note: the plan is to extend this fuzzy matching to other types of completion in the future
  • 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:

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:

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

v0.6.5: 9 February 2021

Bug Fixes:

Housekeeping:

v0.6.4: 2 February 2021

Bug Fixes:

v0.6.3: 30 January 2021

Improvements:

Bug Fixes:

Housekeeping:

VSCode:

v0.6.2: 15 November 2020

Improvements:

  • Add setup.bat support for windows (thanks E14) #374
  • Add a message when done fetching deps #380

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:

v0.6.1: 4 October 2020

VSCode:

  • Fix broken packaging (issue #145)

v0.6.0: 3 October 2020

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:

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.
  • Fix formatting files in umbrella projects (thanks Drew Olson)#350
  • Fix callback suggesions (thanks Łukasz Samson) #359

House keeping:

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:

v0.5.0: 28 June 2020

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:

House keeping:

VSCode:

  • Support workspaces with multiple elixir projects (thanks Alessandro Tagliapietra) #70
    • Support per-folder configuration for many settings (makes the multi-workspace support more powerful) (thanks AJ Foster) #110
  • Improved support for phoenix templates (thanks Marlus Saraiva) #93
    • Shows errors in .eex and .leex files (instead of associated .ex file)
  • 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

v0.4.0: 16 May 2020

Improvements:

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 and HTML (EEx)->html-eex
    • If you have customized your emmet configuration configuration then you need to update it:
    • Open VSCode and hit Ctrl+Shift+P or Cmd+Shift+P and type "Preference: Open Settings (JSON)"
    • Add or edit your emmet.includedLanguages to include the new Language Id:
"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
},

v0.3.3: 15 Apr 2020

Meta:

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 declare deprecatedSupport or tagSupport 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

v0.3.2: 28 Mar 2020

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:

v0.3.1: 3 Mar 2020

Improvements:

Bug Fixes:

  • Fix the debugger #143
  • textDocumentSync save match spec (fixes error notice in vim-lsp) #144 (thanks N. G. Scheurich)

v0.3.0: 14 Feb 2020

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, now DocumentSymbol is returned instead of the more simplistic SymbolInformation (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 and debugger.sh run bash instead of sh (this is expected to break very few setups, if any) #118

v0.2.28: 16 Nov 2019

VSCode:

v0.2.27: 14 Nov 2019

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

v0.2.26: 4 Sept 2019

  • 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 handles null now (fixes eglot support)
  • Update elixir_sense
  • Watch LiveView .leex files
  • Change 'dialyzerFormat' default setting to "dialyxir_long"

v0.2.25: 23 May 2019

  • 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

v0.2.24: 15 Oct 2018

  • Fix debugger crash in new versions of VS Code (Thanks to @martin-watts)
  • Minor improvements to logs and error messages

v0.2.23: 05 Aug 2018

  • Fix crashes caused by the new spec suggestions feature
  • Fix showing of @spec suggestions on newly opened files

v0.2.22: 03 Aug 2018

  • 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

v0.2.21: 13 Jul 2018

  • Print PATH to developer console if "elixir" command fails
  • Fix Dialyzer crash when some modules are undialyzable

v0.2.20: 13 Jul 2018

  • Skipped because I got my versions out of sync :/

v0.2.19: 06 Jul 2018

  • 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

v0.2.18: 19 Mar 2018

  • Fix autocomplete bugs when typing in parentheses
  • Copy latest syntax highlighting from fr1zle/vscode-elixir
  • Handle subdirectories and import_deps in .formatter.exs. Requires the latest Elixir (1.6.5), which you can install via kiex with kiex install master prior to its release.

v0.2.17: 9 Mar 2018

  • New feature: Automatically fetch deps when compiling. Set elixirLS.fetchDeps to false to disable
  • New feature: Incremental text synchronization
  • Minor improvements to autocomplete and automatic block closing

v0.2.16: 7 Mar 2018

  • 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

v0.2.15: 6 Mar 2018

  • Improve autocomplete and re-enable quickSuggestions by default

v0.2.14: 3 Mar 2018

  • Fix failures to launch in some projects

v0.2.13: 2 Mar 2018

  • 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

v0.2.12: 22 Feb 2018

  • 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

v0.2.11: 31 Jan 2018

  • Improve syntax highlighting (Thanks to @TeeSeal)

v0.2.10: 24 Jan 2018

  • Fix builds and related features on Windows

v0.2.9: 29 Nov 2017

  • Fix autocomplete not firing after "."

v0.2.8: 29 Nov 2017

  • 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.

v0.2.7: 9 Nov 2017

  • Read formatter options from .formatter.exs in project root instead of including line length in extension config options

v0.2.6: 3 Nov 2017

  • Don't focus Output pane on errors because request handler errors are common and recoverable

v0.2.5: 3 Nov 2017

  • Improve error output in debugger and fix failures to launch debugger

v0.2.4: 25 Oct 2017

  • 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

v0.2.3: 24 Oct 2017

  • Fix failing debugger launch
  • Fix segfaults in OTP 20 caused by regexes precompiled in OTP 19

v0.2.2: 19 Oct 2017

  • Fix launch on Windows when there are spaces in the path

v0.2.1: 19 Oct 2017

  • Fix bug where deps are recompiled after every change
  • Update README
  • Update syntax highlighting (merged from fr1zle/vscode-elixir)

v0.2.0: 17 Oct 2017

  • 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

v0.0.9: 23 Jun 2017

  • 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

v0.0.8: 23 Jun 2017

  • Enable setting breakpoints in Erlang modules

v0.0.7: 12 Jun 2017

  • 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)

v0.0.6: 12 Jun 2017

  • Handle Elixir installations that were done via the "asdf" tool

v0.0.5: 11 Jun 2017

  • Windows support

v0.0.4: 10 Jun 2017

  • 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 :)