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