Welcome to Lexical v0.4.0
The main thrust of v0.4 is hover support and quality of life improvements. Now, when you hover over a module or function, you'll see relevant documentation, types and parameters. We've also spent a lot of time working on completions in #410, which makes them more consistent, fixes some bugs in certain language clients (like eglot adding an extra @ when completing module attributes), and greatly improves their feel in vscode.
Additionally, quite a few of the changes in this PR were about laying the groundwork for our indexing infrastructure, which will debut in the next version. But fear not, this version has indexing disabled.
I want to thank @zachallaun and @scottming for all their hard work on this release. They've made lexical faster, more friendly and have removed a bunch of bugs!
Highlights include:
- Document hover for functions and modules
- Improved boot scripts
- Automatically updating nix flake. Thanks, @hauleth
- Helix editor integration. Thanks @philipgiuliani
- .heex integration
- Massively improved completions (Check out the PR, it's too big to summarize)
Bugs fixed:
- Longstanding unicode completion / editing bugs slain. Unicode works perfectly now.
What's Changed
- Suggest a module name for defmodule completion by @scohen in #338
- Add Vanilla Emacs with eglot instruction by @dalugm in #343
- Add elixir boot script to support having spaces in the package path by @Blond11516 in #345
- Centralize general-use AST modules in
common
by @zachallaun in #342 - Allow release workflow to update existing releases by @Blond11516 in #346
- Fixed bug in path namespacing by @scohen in #350
- Convert utf8->latin1 before decoding JSON-RPC payloads by @zachallaun in #353
- Add support for
textDocument/hover
(for modules) by @zachallaun in #331 - Fix markdown formatting for supported versions by @reisub in #355
- Indexing features for modules by @scohen in #347
- Refactor: Moved Dispatch from server to remote_control by @scohen in #357
- Moved dispatch to :gen_event by @scohen in #358
- Integrated indexing into language server by @scohen in #359
- Fixed index store test failure by @scohen in #365
- Add
current_project/1
helper function by @scottming in #360 - Position refactor by @scohen in #364
- Added logos to project and readme by @scohen in #366
- Aliases was confused by nested non-module blocks by @scohen in #368
- Better typespecs by @scohen in #367
- Add Helix installation instructions by @philipgiuliani in #376
- Generate correct typespec for LSP messages by @zachallaun in #380
- Async indexing by @zachallaun in #371
- Enabled warnings-as-errors on umbrella by @scohen in #383
- Improved hover support: Structs, qualified calls and types, more info for modules by @zachallaun in #356
- Explicitly implement protocol in completion modules by @zachallaun in #386
- Refactor client capability tracking by @zachallaun in #385
- Support for HEEx compilation by @scottming in #323
- Made aliases better handle the aliases special form by @scohen in #393
- Fix the
eex
compiled flaky test by @scottming in #394 - Enhanced ets / removed cub and mnesia backends. by @scohen in #392
- Disabled indexing by @scohen in #399
- Fix Field parsing error for zed editor by @scottming in #396
- Fix the struct
KeyError
diagnostics by @scottming in #397 - Always return
Completion.List
withis_incomplete: true
by @zachallaun in #398 - Detect version manager the same way in all scripts by @zachallaun in #390
- Respond with
nil
instead of an error when formatting fails by @zachallaun in #411 - Fixup README word repeating by @solar05 in #414
- Made display name calculation relocatable by @scohen in #415
- Move
entity
module toremote_control
app by @scottming in #406 - Reorder the startup order of the children of
Server.Project.Supervisor
by @scottming in #407 - Refactor completions to always use text edits by @zachallaun in #409
- Fix spec for
Lexical.Ast.cursor_path/2
by @zachallaun in #418 - Fix
path_at/2
to allow path to branches if they're innermost by @zachallaun in #419 - Improve completions by @zachallaun in #410
- Improved memory performance while indexing by @scohen in #421
- chore: update Nix definition by @hauleth in #417
- Make the operational behavior of the ancestors of structures and modules more consistent by @scottming in #408
- Refactor shell scripts and add Docker-based integration tests by @zachallaun in #395
New Contributors
- @dalugm made their first contribution in #343
- @reisub made their first contribution in #355
- @philipgiuliani made their first contribution in #376
- @solar05 made their first contribution in #414
Full Changelog: v0.3.0...v0.4.0
What's Changed
- Suggest a module name for defmodule completion by @scohen in #338
- Add Vanilla Emacs with eglot instruction by @dalugm in #343
- Add elixir boot script to support having spaces in the package path by @Blond11516 in #345
- Centralize general-use AST modules in
common
by @zachallaun in #342 - Allow release workflow to update existing releases by @Blond11516 in #346
- Fixed bug in path namespacing by @scohen in #350
- Convert utf8->latin1 before decoding JSON-RPC payloads by @zachallaun in #353
- Add support for
textDocument/hover
(for modules) by @zachallaun in #331 - Fix markdown formatting for supported versions by @reisub in #355
- Indexing features for modules by @scohen in #347
- Refactor: Moved Dispatch from server to remote_control by @scohen in #357
- Moved dispatch to :gen_event by @scohen in #358
- Integrated indexing into language server by @scohen in #359
- Fixed index store test failure by @scohen in #365
- Add
current_project/1
helper function by @scottming in #360 - Position refactor by @scohen in #364
- Added logos to project and readme by @scohen in #366
- Aliases was confused by nested non-module blocks by @scohen in #368
- Better typespecs by @scohen in #367
- Add Helix installation instructions by @philipgiuliani in #376
- Generate correct typespec for LSP messages by @zachallaun in #380
- Async indexing by @zachallaun in #371
- Enabled warnings-as-errors on umbrella by @scohen in #383
- Improved hover support: Structs, qualified calls and types, more info for modules by @zachallaun in #356
- Explicitly implement protocol in completion modules by @zachallaun in #386
- Refactor client capability tracking by @zachallaun in #385
- Support for HEEx compilation by @scottming in #323
- Made aliases better handle the aliases special form by @scohen in #393
- Fix the
eex
compiled flaky test by @scottming in #394 - Enhanced ets / removed cub and mnesia backends. by @scohen in #392
- Disabled indexing by @scohen in #399
- Fix Field parsing error for zed editor by @scottming in #396
- Fix the struct
KeyError
diagnostics by @scottming in #397 - Always return
Completion.List
withis_incomplete: true
by @zachallaun in #398 - Detect version manager the same way in all scripts by @zachallaun in #390
- Respond with
nil
instead of an error when formatting fails by @zachallaun in #411 - Fixup README word repeating by @solar05 in #414
- Made display name calculation relocatable by @scohen in #415
- Move
entity
module toremote_control
app by @scottming in #406 - Reorder the startup order of the children of
Server.Project.Supervisor
by @scottming in #407 - Refactor completions to always use text edits by @zachallaun in #409
- Fix spec for
Lexical.Ast.cursor_path/2
by @zachallaun in #418 - Fix
path_at/2
to allow path to branches if they're innermost by @zachallaun in #419 - Improve completions by @zachallaun in #410
- Improved memory performance while indexing by @scohen in #421
- chore: update Nix definition by @hauleth in #417
- Make the operational behavior of the ancestors of structures and modules more consistent by @scottming in #408
- Refactor shell scripts and add Docker-based integration tests by @zachallaun in #395
New Contributors
- @dalugm made their first contribution in #343
- @reisub made their first contribution in #355
- @philipgiuliani made their first contribution in #376
- @solar05 made their first contribution in #414
Full Changelog: v0.3.3...v0.4.0