No changes yet
We've identified several long-standing performance bottlenecks in Lexical. Among them:
- A bottleneck that affects Lexical when it receives a large number of document updates. The bottleneck would cause the server process's Task Queue (the thing that delegates incoming LS requests to the process that handles them) to crash, and the server would become unusable after. Additionally, Lexical would build your code while the document updates were occurring, which would further slow things down. Both issues are now fixed, and Lexical waits until you stop making changes before it tries to compile your project.
- We calculated the completion context once per completion item returned, which would be slow when a large number of completions were returned (like when you type
Enum.
). Since the context is static to your cursor, we only need to calculate it once. - Only call
mix deps.compile
for older versions of elixir that change the directory when compiling. - Incorporated Jose's new mix format task that doesn't require us to be inside of the given mix project. This means that formatting no longer uses the build lock. Formatting times have gone down from 400ms in the worst case to 10ms.
In addition, we've improved diagnostic reporting in config files.
- Update the Nix hash on PR, not on the main branch by @akirak in lexical-lsp#817
- Convert all exceptions in config files into diagnostics by @zachallaun in lexical-lsp#824
- Server bottlenecks by @scohen in lexical-lsp#825
- Update the Nix hash by @akirak in lexical-lsp#818
- Improve performance under batch operations by @scohen in lexical-lsp#826
- simplify default config by @filipmnowak in lexical-lsp#814
- add Mix.ensure_application!(:observer) to .iex.exs by @lukad in lexical-lsp#829
- updated dialyxir by @scohen in lexical-lsp#835
- [chore] Allow compression for erlang >= 27.1 by @scohen in lexical-lsp#836
- [feat] Loosen find_references by @scohen in lexical-lsp#831
- [feat] Group functions by name + type + arity in document symbols by @scohen in lexical-lsp#833
- Show syntax macro completions when
Kernel.
is prefixed to the cursor. by @Moosieus in lexical-lsp#840 - Performance oriented fixes. by @scohen in lexical-lsp#841
We're releasing 0.7 so we can support Elixir 1.17 and Erlang 27. However, those users on Erlang 27 will experience large increases in the amount of memory Lexical takes up due to this bug. When that bug is fixed, we'll push out another release that will detect the newer version of Erlang and things should go back to normal.
Other than supporting the newer versions of Erlang and Elixir, we've added the following features:
- Organize aliases code action. When invoked, will alphabetize and flatten all your existing aliases in a module. It will also put all aliases in the same place in a module.
- Remove unused alias code action
- Add alias code action: Type a module, invoke the code action and see a list of modules to alias, select one, and it's added to your module's other aliases.
- Improved script handling: Now lexical won't execute scripts when editing them. Thanks, @zachallaun!
- We now show typespecs for struct field completions. Thanks @kirillrogovoy
- Completion: Use existing specs to infer function signatures and vice-versa by @zachallaun lexical-lsp#802
- Don't evaluate top-level code in exs fils by @zachallaun lexical-lsp#798
- Completion: Don't insert impl attribute if it's already present by @zachallaun lexical-lsp#801
- Completion: Use existing specs to infer function signatures and vice-versa by @zachallaun lexical-lsp#802
- Organize Aliases by @scohen lexical-lsp#725
- Remove unused aliases by @scohen
- Refactor: Pass env into completion in remote control by @scohen in lexical-lsp#733
- Refactor: Increased type detail by @scohen in lexical-lsp#734
- Fix: Edge case for module loading by @scohen in lexical-lsp#738
- Improved store error handling by @scohen in lexical-lsp#737
- Complete callables without parens if present in locals_without_parens by @zachallaun in lexical-lsp#739
- Indexed delegated functions by @scohen in lexical-lsp#729
- Fix: Crash when typing english by @scohen in lexical-lsp#742
- Fix go to definition behavior for same-name, same-arity functions by directing to the first function by @scottming in lexical-lsp#746
- Completion: show type spec for struct fields by @kirillrogovoy in lexical-lsp#751
- Code Action: Add alias by @scohen in lexical-lsp#740
- Fixed: Go to definitions crashes on modules defined via a macro by @scohen in lexical-lsp#753
- Increased plugin timeouts by @scohen in lexical-lsp#757
- Code Action: Remove unused aliases by @scohen in lexical-lsp#748
- Reorder
test
macro completions by @zachallaun in lexical-lsp#769 - Added struct definition detection for ecto schemas by @scohen in lexical-lsp#758
- Sorted bang functions after non-bang variants by @scohen in lexical-lsp#770
Small bugfix release. We found an issue regarding unicode conversion, and although it's existed for a while and no one complained, we felt that it was more likely to happen now that we have workspace symbols.
- Fix conversion of UTF-8 positions to UTF-16 code units by @zachallaun in lexical-lsp#719
- Fix Entity.resolve not correctly resolving local function capture calls @scottming in lexical-lsp#721
After multiple people asked, both document and workspace symbols have been implemented. Both make heavy use of our indexing infrastructure, which provides extremely fast and accurate results.
We've also fixed a number of small inconsistencies and crashes in the indexer, making it more robust and accurate. I especially want to call out the fix that @lukad made, that improved indexing performance by 3600x on his large codebase.
When you update to this release, we strongly recommend re-indexing your project's source code by opening the project's mix.exs
file and
running the Rebuild <your project>'s code search index
code action.
In addition, we've improved support for completions in phoenix controllers, stopped completions inside strings and have changed how we sort completions. The new sorting scheme is a big improvement for usability, and sorts things by how "close" they are to what you're working on. Give it a shot, we think you'll like it.
I'd like to thank all our new contributors, and especially our core team of @scottming, @zachallaun, @moosieus and @blond. You've all gone above and beyond.
- Add Sublime Text instructions to docs by @distefam in lexical-lsp#633
- Implement callback completions by @Moosieus in lexical-lsp#640
- Fix
do
completing todefmodule
in VSCode by @Moosieus in lexical-lsp#642 - Speed up indexing by not calling
deps_dir
for every file by @lukad in lexical-lsp#646 - Fixed bug where blocks weren't popped correctly by @scohen in lexical-lsp#647
- Fix crashing in unsaved vscode files by @Moosieus in lexical-lsp#644
- Find references for variables by @scohen in lexical-lsp#645
- New completion sorting approach by @Moosieus in lexical-lsp#653
- Fixed issue where function definitions were returning references by @scohen in lexical-lsp#655
- Document Symbols support by @scohen in lexical-lsp#652
- Prevent spurious errors in .heex files by disabling the on-type compiler. by @Moosieus in lexical-lsp#662
- Fixing crash when dealing with unicode files by @scohen in lexical-lsp#672
- Fix: Non-string test names crash exunit indexer by @scohen in lexical-lsp#676
- Added module attribute detection by @scohen in lexical-lsp#679
- Impl suggest behaviours by @scohen in lexical-lsp#681
- Support resolving Phoenix Controller modules. by @scottming in lexical-lsp#659
- Completions: Handled nil origin and full name by @scohen in lexical-lsp#689
- Fixed crash for in-progress module attributes by @scohen in lexical-lsp#691
- For module definitions, use the
Indexer
version instead ofElixirSense
by @scottming in lexical-lsp#658 - Current modules can be nil by @scohen in lexical-lsp#696
- Stopped completions inside strings by @scohen in lexical-lsp#692
- Workspace symbols support by @scohen in lexical-lsp#674
- Fix: Module suggestion was incorrect for files with multiple periods by @scohen in lexical-lsp#705
Full Changelog: https://github.com/lexical-lsp/lexical/compare/v0.5.2...v0.6.0
This is a bugfix release that fixes the following:
- Updated credo by @scohen in #617
- Update nix hash with new deps by @hauleth in #618
- Prepare scripts for updating Nix hash by non-Nix users by @hauleth in #619
- Update the installation documentation for the supported Elixir version by @scottming in #624
- Fixed unused variable code action by @scohen in #628
This is a bugfix release that fixes an issue where lexical wouldn't start on MacOS if you're using the default bash, and not using one of the supported version managers (asdf, rtx or mise)
Admittedly, it's been a long while since the last release, but we've laid the groundwork for some exciting new features.
Since November, we've built out our search and indexing infrastructure that allows lexical to find interesting bits of your source code and highlight them for you later. We went through five separate backends before settling on one that is super duper fast, memory efficient(ish) and is written in pure elixir.
Presently, we're using this to power our newest features, find references and go to definition. We've implemented both for modules, module attributes and functions. You'll notice that when lexical starts, it will index your project's source code. This is a one-time operation that should be quick, indexing lexical's and its dependencies 193,000 lines of source code takes around 10 seconds. This means that indexing is on by default, and there's no way to turn it off any more. We've crossed the rubicon, folks, and there's no turning back.
Other good news, because of the indexing infrastructure, we no longer have to do a full build when lexical starts for the first time. This means the startup time has dramatically improved. On the lexical project, it has dropped from 12 seconds to 2.
I'd like to thank @scottming @zachallaun and @Blond11516 for ensuring that the current state of the code is where it is today. Also, thank you @hauleth for taking care of the nix flake.
And we've made a ton of bug fixes and usability improvements since 0.4.1 as well. Some highlights include:
- Support for elixir version 1.16
- Handled renaming of rtx to mise
- Multiple improvements to the hover popup
- Improved ease of writing new code actions
- Undefined variables diagnostics error for HEEx templates
- Code action: Suggested function names
- Completions for typespecs
- Improved nix flake
- Correctly activate rtx during boot by @zachallaun in lexical-lsp#430
- Improve incompatible version errors on boot by @zachallaun in lexical-lsp#389
- i96: send and log messages by @jollyjerr in lexical-lsp#420
- Put module below call signature for hover funs/types by @zachallaun in lexical-lsp#434
- Fix diagnostics issue when
config_env
is called. by @scottming in lexical-lsp#439 - Find References by @scohen in lexical-lsp#405
- Code Actions refactor by @scohen in lexical-lsp#453
- Consider arity in function ordering by @yerguden in lexical-lsp#442
- Fix: Erlang function calls in pipes were incorrectly formatted by @scohen in lexical-lsp#476
- Fix: Stutter when completing inside string interpolations by @scohen in lexical-lsp#464
- Fix: Don't raise an exception if the build directory doesn't exist by @scohen in lexical-lsp#481
- Add Vim ALE configuration details by @jparise in lexical-lsp#484
- Removed unhelpful completion for :: symbol by @mdshamoon in lexical-lsp#485
- Add heex to filetype list for neovim by @soundmonster in lexical-lsp#487
- Added completions for typespecs by @scohen in lexical-lsp#478
- Fix module completion error after a dot by @zachallaun in lexical-lsp#496
- Add replacing unknown remote function to code actions by @sheldak in lexical-lsp#443
- Move from flake-utils to flake-parts by @hauleth in lexical-lsp#498
- Fix Diagnostic.Result to_lsp with 4-elem tuple position by @bangalcat in lexical-lsp#502
- Optimise the manual loading of dependent apps and modules. by @scottming in lexical-lsp#455
- Add instructions for LunarVim installation by @dimitarvp in lexical-lsp#510
- Find function references by @scohen in lexical-lsp#516
- Added percentage based progress reporters by @scohen in lexical-lsp#519
- Added reindex command by @scohen in lexical-lsp#522
- Support mise (new name for rtx) by @x-ji in lexical-lsp#544
- Correctly applied code lens options by @scohen in lexical-lsp#553
- Support Elixir 1.16 by @scottming in lexical-lsp#535
- chore(nix): update deps hash by @hauleth in lexical-lsp#557
- Resolve function definitions without parens by @zachallaun in lexical-lsp#563
- Correctly resolve imported calls by @zachallaun in lexical-lsp#565
- Implemented find references for module attributes by @scohen in lexical-lsp#558
- Correctly resolve
&Module.function/arity
syntax by @zachallaun in lexical-lsp#566 - Switched over to mise rather than rtx by @scohen in lexical-lsp#580
- Struct discovery now uses the index by @scohen in lexical-lsp#582
- Detected module references using MODULE by @scohen in lexical-lsp#603
- Bumped garbage collection for some of our more intensive processes by @scohen in lexical-lsp#600
- Calling find references on a
defstruct
call finds defined structs by @scohen in lexical-lsp#607 - Zipped package now keeps file permissions by @scohen in lexical-lsp#609
- Excluded source files in build directory by @scohen in lexical-lsp#610
This is a small bugfix release for 0.4.0
It contains the following fixes:
- Fix: Stutter when completing some items inside strings (
:erl
would complete to:erlerlang
) - Fix: Undefined variable names in HEEX templates
- Fix: Erlang remote calls in pipelines did not have their first parameter removed during completion
- Feature: Function names in completions are ordered by name and then arity
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.
- Suggest a module name for defmodule completion by @scohen in lexical-lsp#338
- Add Vanilla Emacs with eglot instruction by @dalugm in lexical-lsp#343
- Add elixir boot script to support having spaces in the package path by @Blond11516 in lexical-lsp#345
- Centralize general-use AST modules in
common
by @zachallaun in lexical-lsp#342 - Allow release workflow to update existing releases by @Blond11516 in lexical-lsp#346
- Fixed bug in path namespacing by @scohen in lexical-lsp#350
- Convert utf8->latin1 before decoding JSON-RPC payloads by @zachallaun in lexical-lsp#353
- Add support for
textDocument/hover
(for modules) by @zachallaun in lexical-lsp#331 - Fix markdown formatting for supported versions by @reisub in lexical-lsp#355
- Indexing features for modules by @scohen in lexical-lsp#347
- Refactor: Moved Dispatch from server to remote_control by @scohen in lexical-lsp#357
- Moved dispatch to :gen_event by @scohen in lexical-lsp#358
- Integrated indexing into language server by @scohen in lexical-lsp#359
- Fixed index store test failure by @scohen in lexical-lsp#365
- Add
current_project/1
helper function by @scottming in lexical-lsp#360 - Position refactor by @scohen in lexical-lsp#364
- Added logos to project and readme by @scohen in lexical-lsp#366
- Aliases was confused by nested non-module blocks by @scohen in lexical-lsp#368
- Better typespecs by @scohen in lexical-lsp#367
- Add Helix installation instructions by @philipgiuliani in lexical-lsp#376
- Generate correct typespec for LSP messages by @zachallaun in lexical-lsp#380
- Async indexing by @zachallaun in lexical-lsp#371
- Enabled warnings-as-errors on umbrella by @scohen in lexical-lsp#383
- Improved hover support: Structs, qualified calls and types, more info for modules by @zachallaun in lexical-lsp#356
- Explicitly implement protocol in completion modules by @zachallaun in lexical-lsp#386
- Refactor client capability tracking by @zachallaun in lexical-lsp#385
- Support for HEEx compilation by @scottming in lexical-lsp#323
- Made aliases better handle the aliases special form by @scohen in lexical-lsp#393
- Fix the
eex
compiled flaky test by @scottming in lexical-lsp#394 - Enhanced ets / removed cub and mnesia backends. by @scohen in lexical-lsp#392
- Disabled indexing by @scohen in lexical-lsp#399
- Fix Field parsing error for zed editor by @scottming in lexical-lsp#396
- Fix the struct
KeyError
diagnostics by @scottming in lexical-lsp#397 - Always return
Completion.List
withis_incomplete: true
by @zachallaun in lexical-lsp#398 - Detect version manager the same way in all scripts by @zachallaun in lexical-lsp#390
- Respond with
nil
instead of an error when formatting fails by @zachallaun in lexical-lsp#411 - Fixup README word repeating by @solar05 in lexical-lsp#414
- Made display name calculation relocatable by @scohen in lexical-lsp#415
- Move
entity
module toremote_control
app by @scottming in lexical-lsp#406 - Reorder the startup order of the children of
Server.Project.Supervisor
by @scottming in lexical-lsp#407 - Refactor completions to always use text edits by @zachallaun in lexical-lsp#409
- Fix spec for
Lexical.Ast.cursor_path/2
by @zachallaun in lexical-lsp#418 - Fix
path_at/2
to allow path to branches if they're innermost by @zachallaun in lexical-lsp#419 - Improve completions by @zachallaun in lexical-lsp#410
- Improved memory performance while indexing by @scohen in lexical-lsp#421
- chore: update Nix definition by @hauleth in lexical-lsp#417
- Make the operational behavior of the ancestors of structures and modules more consistent by @scottming in lexical-lsp#408
- Refactor shell scripts and add Docker-based integration tests by @zachallaun in lexical-lsp#395
Full Changelog: https://github.com/lexical-lsp/lexical/compare/v0.3.0...v0.4.0
- Suggest a module name for defmodule completion by @scohen in lexical-lsp#338
- Add Vanilla Emacs with eglot instruction by @dalugm in lexical-lsp#343
- Add elixir boot script to support having spaces in the package path by @Blond11516 in lexical-lsp#345
- Centralize general-use AST modules in
common
by @zachallaun in lexical-lsp#342 - Allow release workflow to update existing releases by @Blond11516 in lexical-lsp#346
- Fixed bug in path namespacing by @scohen in lexical-lsp#350
- Convert utf8->latin1 before decoding JSON-RPC payloads by @zachallaun in lexical-lsp#353
- Add support for
textDocument/hover
(for modules) by @zachallaun in lexical-lsp#331 - Fix markdown formatting for supported versions by @reisub in lexical-lsp#355
- Indexing features for modules by @scohen in lexical-lsp#347
- Refactor: Moved Dispatch from server to remote_control by @scohen in lexical-lsp#357
- Moved dispatch to :gen_event by @scohen in lexical-lsp#358
- Integrated indexing into language server by @scohen in lexical-lsp#359
- Fixed index store test failure by @scohen in lexical-lsp#365
- Add
current_project/1
helper function by @scottming in lexical-lsp#360 - Position refactor by @scohen in lexical-lsp#364
- Added logos to project and readme by @scohen in lexical-lsp#366
- Aliases was confused by nested non-module blocks by @scohen in lexical-lsp#368
- Better typespecs by @scohen in lexical-lsp#367
- Add Helix installation instructions by @philipgiuliani in lexical-lsp#376
- Generate correct typespec for LSP messages by @zachallaun in lexical-lsp#380
- Async indexing by @zachallaun in lexical-lsp#371
- Enabled warnings-as-errors on umbrella by @scohen in lexical-lsp#383
- Improved hover support: Structs, qualified calls and types, more info for modules by @zachallaun in lexical-lsp#356
- Explicitly implement protocol in completion modules by @zachallaun in lexical-lsp#386
- Refactor client capability tracking by @zachallaun in lexical-lsp#385
- Support for HEEx compilation by @scottming in lexical-lsp#323
- Made aliases better handle the aliases special form by @scohen in lexical-lsp#393
- Fix the
eex
compiled flaky test by @scottming in lexical-lsp#394 - Enhanced ets / removed cub and mnesia backends. by @scohen in lexical-lsp#392
- Disabled indexing by @scohen in lexical-lsp#399
- Fix Field parsing error for zed editor by @scottming in lexical-lsp#396
- Fix the struct
KeyError
diagnostics by @scottming in lexical-lsp#397 - Always return
Completion.List
withis_incomplete: true
by @zachallaun in lexical-lsp#398 - Detect version manager the same way in all scripts by @zachallaun in lexical-lsp#390
- Respond with
nil
instead of an error when formatting fails by @zachallaun in lexical-lsp#411 - Fixup README word repeating by @solar05 in lexical-lsp#414
- Made display name calculation relocatable by @scohen in lexical-lsp#415
- Move
entity
module toremote_control
app by @scottming in lexical-lsp#406 - Reorder the startup order of the children of
Server.Project.Supervisor
by @scottming in lexical-lsp#407 - Refactor completions to always use text edits by @zachallaun in lexical-lsp#409
- Fix spec for
Lexical.Ast.cursor_path/2
by @zachallaun in lexical-lsp#418 - Fix
path_at/2
to allow path to branches if they're innermost by @zachallaun in lexical-lsp#419 - Improve completions by @zachallaun in lexical-lsp#410
- Improved memory performance while indexing by @scohen in lexical-lsp#421
- chore: update Nix definition by @hauleth in lexical-lsp#417
- Make the operational behavior of the ancestors of structures and modules more consistent by @scottming in lexical-lsp#408
- Refactor shell scripts and add Docker-based integration tests by @zachallaun in lexical-lsp#395
Full Changelog: https://github.com/lexical-lsp/lexical/compare/v0.3.3...v0.4.0
Fixed Unicode handling.
Unicode was likely broken under the last several releases; Unicode in documents would result in incorrect errors popping up. This has been fixed, and was due to incorrect decoding in the standard input handler.
Full Changelog: https://github.com/lexical-lsp/lexical/compare/v0.3.2...v0.3.3
0.3.2 fixes a bug where packaging would not produce namespaced artifacts if the lexical directory was inside a subdirectory that had one of its dependencies as a path element.
For example, packaging would fail if lexical was in /path/to/home/language_servers/lexical
.
Full Changelog: https://github.com/lexical-lsp/lexical/compare/v0.3.1...v0.3.2
This is a bugfix release. Packaging generated in v0.3.0 would not start in directories that contain spaces, and this is the default for vscode under macOS. This release has a new launching mechanism that should allow us to use a lot less bash scripting.
- Support Struct fields completion when in struct arguments context by @scottming in lexical-lsp#196
- Fix: Argument names crashes in light of a literal atom by @scohen in lexical-lsp#285
- Add Nix Flake by @hauleth in lexical-lsp#175
- ci: Require strict versions from erlef/setup-beam by @Blond11516 in lexical-lsp#289
- Refactor: Extracted Build.Project by @scohen in lexical-lsp#292
- Fixed code unit / codepoint confusion by @scohen in lexical-lsp#290
- Fixed project node naming conflicts by @scohen in lexical-lsp#294
- Remove logger for debugging port stdin/sdtout by @scottming in lexical-lsp#298
- Added support for per-file .eex compilation by @scohen in lexical-lsp#296
- Added default case by @scohen in lexical-lsp#305
- Config compiler by @scohen in lexical-lsp#304
- Namespacing refinements by @scohen in lexical-lsp#307
- Update architecture.md with spelling corrections by @axelclark in lexical-lsp#310
- Improve the documentation related to
neovim
installation. by @scottming in lexical-lsp#308 - Handle presense of multiple version managers by @awerment in lexical-lsp#311
- make sure not to choke on non-export prefixed path lines by @andyleclair in lexical-lsp#312
- Second attempt to make struct completion more consistent by @scottming in lexical-lsp#225
- Added installation instructions for Vim + Vim-LSP by @jHwls in lexical-lsp#315
- Reworked lexical packaging by @scohen in lexical-lsp#314
- Development docs by @scohen in lexical-lsp#316
- Fix extraneous logging in test by @scohen in lexical-lsp#317
- Update paths to start_lexical.sh in installation.md by @edwardsmit in lexical-lsp#318
- Fix: Flaky tests by @scohen in lexical-lsp#320
- Support for erlang 26 by @scohen in lexical-lsp#319
- Fix typo of package task by @scottming in lexical-lsp#321
- Fix VSCode installation instructions by @miXwui in lexical-lsp#325
- Fix package task generating empty ZIPs by @Blond11516 in lexical-lsp#334
- Removed plugin_runner app by @scohen in lexical-lsp#327
- Added development docs suggestions by @scohen in lexical-lsp#333
- Added discord link and build badges by @scohen in lexical-lsp#335
- 0.3.0 Release by @scohen in lexical-lsp#337
- Context-aware "use" completions by @scohen in lexical-lsp#336
Full Changelog: https://github.com/lexical-lsp/lexical/compare/v0.2.2...v0.3.0
- fix: Add missing command to get rtx env by @Blond11516 in lexical-lsp#281
- Update Lexical version to 0.2.2 by @Blond11516 in lexical-lsp#282
Full Changelog: https://github.com/lexical-lsp/lexical/compare/v0.2.1...v0.2.2
This release bumps versions of our apps, and contains no improvements or fixes.
- Handled Cancel Notifications by @scohen in lexical-lsp#157
- Support work done progress during project compilation by @scottming in lexical-lsp#135
- Normalize naming by @scohen in lexical-lsp#158
- Addressed deadlocks in Document Store by @scohen in lexical-lsp#160
- Fix diagnostic for missing fields due to @enforce_keys by @scottming in lexical-lsp#162
- Enable --warnings-as-errors in CI by @scottming in lexical-lsp#154
- Added file watching by @scohen in lexical-lsp#164
- Fix CreateWorkDoneProgress for VScode and Emacs by @scottming in lexical-lsp#161
- Fixed infinite loop in document updates by @scohen in lexical-lsp#166
- Alias only returns modules by @scohen in lexical-lsp#168
- Added fragment capabilities to document by @scohen in lexical-lsp#170
- Fix record missing key's error by @scottming in lexical-lsp#174
- Do not create intermediate binaries by @hauleth in lexical-lsp#176
- Improved README.md by @scohen in lexical-lsp#177
- Removed string-based completion env operations by @scohen in lexical-lsp#172
- Fixed code actions / improved code mod api by @scohen in lexical-lsp#179
- Remove patch from progress/state_test by @scottming in lexical-lsp#180
- Improved struct completion by @scohen in lexical-lsp#181
- fix(asdf): change order of installation by @03juan in lexical-lsp#186
- Improve completions with default arguments by @scohen in lexical-lsp#187
- New project structure / beginning of plugins by @scohen in lexical-lsp#184
- Pulled out the name of arguments in pattern match args by @scohen in lexical-lsp#193
- Removed initial compile by @scohen in lexical-lsp#194
- Fix the parameter issue of Remote Callable in pipeline. by @scottming in lexical-lsp#188
- Removed wx and et applications by @scohen in lexical-lsp#201
- Improve UX when completing struct by @scottming in lexical-lsp#190
- Added a check for credo pipeline initial argument by @scohen in lexical-lsp#200
- We now use Lexical.Plugin.Diagnostics by @scohen in lexical-lsp#197
- Fix the NAMESPACE=1 release issue by @scottming in lexical-lsp#203
- Boost callable completions that are not double underscore/default by @viniciusmuller in lexical-lsp#195
- Reduces behaviour_info/1 priority in completions by @viniciusmuller in lexical-lsp#205
- Suggest behavior callbacks by @doughsay in lexical-lsp#206
- fix: completion context can be null by @hauleth in lexical-lsp#210
- Module sorting / Refactor boost by @scohen in lexical-lsp#212
- Dependency structs were not being detected by @scohen in lexical-lsp#213
- Load project config before compiling by @scohen in lexical-lsp#215
- Plugin Architecture by @scohen in lexical-lsp#211
- Refactor: Completion.Results are now Completion.Candidates by @scohen in lexical-lsp#216
- ci: Tag release workflow by @Blond11516 in lexical-lsp#221
- Added versions to plugins by @scohen in lexical-lsp#219
- Bring the 1.15 version
Code
and:elixir_tokenizer
into lexical by @scottming in lexical-lsp#217 - Support map fields completion by @scottming in lexical-lsp#226
- Plugin packaging by @scohen in lexical-lsp#222
- Support projects having the same directory name as a dependency by @scohen in lexical-lsp#227
- Docs: Installation by @scohen in lexical-lsp#229
- Fixed plugins for external projects by @scohen in lexical-lsp#230
- Add neovim minimal configuaration by @scottming in lexical-lsp#240
- Fixed failing builds by @scohen in lexical-lsp#241
- Fix the issue of project name being too long by @scottming in lexical-lsp#239
- Updated to work with older versions of elixir / erlang by @scohen in lexical-lsp#235
- [issue-178] Snippet translations for macro by @Sleepful in lexical-lsp#208
- [issue-178] Fix macro_test by @Sleepful in lexical-lsp#246
- Compile warnings by @scohen in lexical-lsp#250
- WIP: Alias module by @scohen in lexical-lsp#236
- Fixed boundary issue by @scohen in lexical-lsp#249
- GitHub Actions improvements by @scohen in lexical-lsp#245
- Fixing flaky tests by @scohen in lexical-lsp#252
- Aliases can fail by @scohen in lexical-lsp#251
- Generate
.gitignore
for.lexical
project workspace by @zachallaun in lexical-lsp#218 - Rebuild PLT files on projects dep changes by @scohen in lexical-lsp#253
- Changed docs to indicate support for 1.13 and erl 24 by @scohen in lexical-lsp#257
- Enforced project name validity by @scohen in lexical-lsp#258
- Removed double compilation by @scohen in lexical-lsp#259
- Completion improvements by @scohen in lexical-lsp#260
- The start line can be the end line by @scohen in lexical-lsp#264
- Fixed protocol consolidation by @scohen in lexical-lsp#265
- Heavy refactor of namespacing by @scohen in lexical-lsp#266
- Namespacing fixes / simplifications by @scohen in lexical-lsp#268
- Quieted compile warnings in test by @scohen in lexical-lsp#270
- Support Elixir 1.15 by @scottming in lexical-lsp#261
- Re-enabled multiple version support by @scohen in lexical-lsp#269
- Loadconfig needs to be called before deps are compiled by @scohen in lexical-lsp#275
- Added default candidate case by @scohen in lexical-lsp#274
- Replace with underscore can fail by @scohen in lexical-lsp#276
- Preparing for 0.2.0 release by @scohen in lexical-lsp#278
Full Changelog: https://github.com/lexical-lsp/lexical/compare/4367692...v0.2.0