Releases: KronicDeth/intellij-elixir
v23.0.1
Merge pull request #3789 from joshuataylor/bump-gradle Bump version to 23.0.1
v23.0.0
v23.0.0
v23.0.0 brings a commonly requested feature for those using Windows -- WSL support (!!!).
Windows users can now develop Elixir projects hosted inside WSL directly from their JetBrains IDE. This closes issues dating back to 2018!
Also, "funnily" enough, 2025.3 broke quite a few features with WSL when @sh41 was working on it, and was fixed in 2025.3.1.1.
This release also includes fixes for a bunch of other various issues, such as a deps watcher deadlock, broken JPS Builder module names, and false warnings in regex sigils with interpolation.
v23.0.0 , thanks to @sh41!
This release is entirely the work of one person:
- sh41 (Steve Hall) -- @sh41 submitted the original WSL support PR (#3749) as a 63-commit "let's fix WSL" proof of concept, then patiently broke it into 7 PRs for review.
Beyond WSL itself, @sh41 fixed a deps watcher deadlock, a JPS Builder regression, added Mix dependency health checks, built out Windows dev infrastructure, added UI test infrastructure, updated documentation, and fixed regex sigil inspection warnings.
Thank you, @sh41 for the incredible work!
WSL Support
The headline feature of this release.
If you're developing Elixir on Windows using WSL, the plugin should hopefully be a bit better for you - if you find anything weird, please submit an issue.
The work was split from [#3749] into these PRs:
This resolves the following issues:
- #1384 - No WSL support (2018)
- #1911 - Cannot add Erlang/Elixir SDK using Windows WSL
- #2499 - WSL: "Selected directory is not a valid home for SDK"
- #3470 - Cannot set SDK for Erlang and Elixir from WSL
- #3674 - Cannot set Elixir SDK when opening project from WSL2 folder
- #3746 - MIX_HOME points to wrong directory with asdf/mise
This may also help with:
- #3659 - SDK setup issues (improved SDK validation)
- #3716 - SDK not being applied (improved persistence)
- #3715 - Can't add Erlang SDK (better error handling)
It should be noted that @sh41 works on Windows, and I (Josh) use Linux/Mac.
What works
Please see the Windows Subsystem for Linux (WSL) Support in the README.
- SDK detection and configuration for Elixir/Erlang in WSL (asdf, mise, kerl, kiex)
- All run configurations (Mix, ExUnit, ESpec, Elixir, IEx)
- External tools (Credo, Dialyzer, Mix Format)
- Project creation wizard with WSL SDKs
- Path conversion (Windows UNC paths <-> WSL POSIX paths)
- Graceful BEAM process termination (double SIGINT)
- Auto-assignment of project SDK when the first Elixir SDK is created
- Proper
MIX_HOMEdetection for mise/asdf version managers
Known Limitations
Warning
- JPS Builder does not support WSL -- use Mix run configurations to compile instead.
- SDK setup tip: Click "OK" directly after configuring SDKs. Avoid clicking "Apply" then "OK", as this can cause persistence issues.
- Performance: WSL is slower than native Linux. This is a WSL limitation, not a plugin issue.
Tested Environment
Tested on Windows 11 with Ubuntu 24.04 on WSL2, with Elixir/Erlang installed via both asdf and mise. There are many possible combinations of Windows versions, WSL distributions, and version managers -- we'd appreciate community testing and bug reports for configurations we haven't covered.
SDK Discovery
The plugin can now discover Elixir and Erlang SDKs installed inside your WSL distributions. All the version managers you'd expect are supported:
- asdf -
~/.asdf/installs/ - mise - mise install directories
- kerl - Erlang installations via kerl
- kiex - Elixir installations via kiex
- Homebrew (Linuxbrew) - SDKs installed via Homebrew on Linux
- Nix - SDKs in Nix store paths
SDK discovery has been consolidated into a single SdkHomeScan component that works across both native and WSL environments, so the same scanning logic applies everywhere.
During SDK setup, you can choose which WSL distribution to scan. Once an SDK is created, the plugin auto-assigns it as the project SDK if it's the first Elixir SDK configured. SDK persistence has been fixed to resolve workspace model mismatches that previously caused SDKs to "disappear" after restarting the IDE.
Path Conversion
Transparent path conversion between Windows UNC paths and WSL Linux paths. Both \\wsl$\ and \\wsl.localhost\ formats are handled. You can open a project from a WSL network share and everything just works -- file paths are correctly resolved when communicating with WSL-hosted tooling.
Run Configurations
All run configurations work with WSL-hosted SDKs and projects:
- Mix tasks (
mix compile,mix format, custom tasks) - IEx sessions
- ExUnit tests (with clickable file/line links back to the IDE)
- ESpec tests
- Distillery releases
- External tools (Credo, Dialyzer, Mix Format)
- Project creation wizard with WSL SDKs
All run configurations have been migrated to extend a new WslSafeCommandLineState base class. Test frameworks share a common TestRunnerCommandLineState. New WSL-aware command line classes (WslAwareCommandLine, WslAwarePtyCommandLine) handle path translation in command arguments, environment variables, and working directories behind the scenes. ColoredProcessHandler has been replaced with a custom ElixirProcessHandler across all configurations.
Process Handling
Processes running inside WSL cannot be signaled directly from Windows, so dedicated handling was needed. The BEAM VM requires a double SIGINT to terminate gracefully (rather than SIGKILL), and this doesn't work across the WSL boundary with standard IntelliJ process handling.
- DoubleSignalTerminator - Sends SIGINT twice to gracefully shut down the BEAM VM, working correctly across the WSL boundary
- ElixirProcessHandler - WSL-safe process handler with proper state tracking, replacing
ColoredProcessHandler - CommandLineLogging - Diagnostic logging for command-line construction to aid troubleshooting when things go wrong
WSL-aware SDK UI
SDKs from WSL distributions are clearly labeled in the UI and status bar widget, so you can tell at a glance whether you're looking at a native Windows SDK or a WSL one. The SDK selection flow is WSL-aware and works in small IDEs (RubyMine, WebStorm, etc.) that don't have the full "Project Structure" dialog.
Mix Dependency Health Checks
When you open a project, the plugin now checks whether Mix dependencies are installed. If they're missing or stale, you'll get a notification with an action to run mix deps.get. This works for both native and WSL-hosted projects via a shared MixTaskRunner.
The Mix project import flow is also faster and more robust -- OTP apps are pre-scanned off the EDT, and results are reused in the import wizard.
Bug Fixes
Deps Watcher Deadlock (#3761)
Fixed a deadlock that occurred when the /deps directory was deleted while the deps watcher was active. This also fixes JPS Builder module name handling that had been broken since September 2025.
Regex Sigil Interpolation (#3765)
Fixed false inspection warnings in ~r regex sigils containing interpolated variables (e.g., ~r/#{var}/). When the ~H sigil injection feature is enabled, the regex inspection engine was seeing the interpolation syntax and complaining. Interpolations are now stripped before passing the regex to the IDE's inspection engine.
Infrastructure
Some behind the scenes features, which is really nice!
- Windows development - Platform-aware build services, Gradle tasks, and run configurations for developing the plugin on Windows. Updated
CONTRIBUTING.mdwith Windows setup instructions. - CI improvements - Fork-safe Gradle caching (~4.5 GB cache) to reduce Maven dependency downloads, Maven Central access diagnostics.
- Experimental UI test infrastructure - IntelliJ IDE Starter-based UI tests under
testUI/for automated IDE testing, including Ultimate-only tests for license activation and project import flows. - Documentation - README updated with WSL setup instructions, configuration steps, and troubleshooting guidance.
Installation steps
Download the Elixir-23.0.0.zip file from below, under Assets.
Tip
Please refer to the Install plugin from disk JetBrains documentation for how to install plugins manually.
- Ensure your IDE ...
v22.0.1
Merge pull request #3767 from joshuataylor/feature/intellij-2026_1 Add support for 2026.1 EAP, 2025.3.2 version bumps
v22.0.0
v22.0.0
(This changelog is still in progress)
v22.0.0 supports only the newly released (as of December 2025) 2025.3 IDEs (253.xxx), with additional functionality being tested (please help us test!) to better support adding Erlang/Elixir SDKs, Sigil Highlighting, etc.
Thank yous
A lot of people have helped to get us here, submitting bug reports, patches, testing, etc.
I would like to personally thank a couple of contributors (and if I've forgotten someone, let me know :P).
A noteable thank you to the following contributors for their amazing work helping shape this release, and figuring out some tough problems.
-
sh41 (Steve Hall) who helped fix many outstanding compatibility issues blocking us in 2025.1+, especially for figuring out a particularly hairly bug with FindUsages that stumped me hard. Also for modernising CI, converting build.gradle to build.gradle.kts and many more changes. Thank you for carrying the torch.
-
mwnciau (Simon James) for their investigation into language support for HEEx, and figuring out the arcane witchcraft to get it to work. There will be more changes coming (as above) that add to this, but we finally have HEEx support, and Language Injection and more. Phoenix users rejoice! Thank you for staring into the abyss. We to ensure you're correctly attributed in the codebase, we'll work something out.
-
polymorfiq (Cory Finger) for their work on getting Language Injection to work. Language Injection is one of my favourite things about IntelliJ -- you can inject another language within a language to get contextual that languages syntax highlighting, error reporting, etc.
-
[hsz] For pushing to modernise Plugin development, making it way easier. Bit random, but the recent changes have made developing a lot easier.
-
You. Reporting bugs, testing the earlier EAPs. Thank you for being awesome, patient and a part of this community.
Release notes for v22.0.0
- This release supports 2025.3+ only, mostly due to the amount of changes to internal APIs only projects like intellij-elixir uses that JetBrains just breaks. See also IntelliJ Platform 2025.3: What Plugin Developers Should Know, I tried to make the plugin work with previous IDEs but it was a mess.
- There has been a TON of work to fix EDT issues in this release. Almost every plugin has been buggy/broken since 2025.2 without rework, including many of JetBrains first-party plugins closed sourced plugins, both bundled and installable. See Changes in Threading Framework in IntelliJ Platform 2025.2 Yes, I'm a bit mad, especially when JetBrains employers post things like Keeping plugins compatible when their plugins are a shitshow. If they can't properly port their own plugins, which we pay for, how are opensource developers supposed to cope?
HEEx support
Thanks to the amazing work from mwnciau (Simon James) (PR #3696), we now have HEEx support!
Yes, you can FINALLY get proper syntax highlighting and IDE features in your Phoenix LiveView templates!
If you're not sure what HEEx is, it's the templating language for Phoenix LiveView that replaced EEx. It adds HTML awareness, component support, and compile-time validation.
See https://hexdocs.pm/phoenix_live_view/assigns-eex.html
What's included
.heexfile type recognition** with custom icons- Syntax highlighting** for HEEx-specific constructs like
{@assigns}and{expressions} - Relative component support** -
<.component>tags now work correctly - Brace interpolation** -
{@user.name}expressions are properly highlighted - HTML inspection suppression - no more false-positive "invalid tag name" errors for Phoenix components
- CSS/JavaScript injection -
<style>and<script>tags get their respective language support automatically
Example
<div id={"user_#{@user.id}"}>
{@user.name}
</div>Before
After
Literal sigil injection
Once polymorfiq cracked how Language Injection works, we were able to implement Language Injection for literal sigils.
So now, you can see ~H, ~r!
If you don't want the green background, you can turn that off, though note it turns it off for everything else as well that's injected.
Status Bar Widget
To aid in SDK management, there is now a status bar widget that shows the current project's Elixir SDK version.
There is an issue with IntelliJ, where if you:
- Create an Erlang SDK.
- Do not save.
- Add an Elixir SDK that depends on the Erlang SDK.
The classpaths are not correctly set up:
You need to either save BEFORE adding the Elixir SDK, or close settings, and click the new Status Bar Widget to fix the classpaths (below):
Better SDK management
If you've accidentally created an Erlang SDK without saving, and then created an Elixir SDK that depends on it, the classpaths are not correctly set up.
I've added some Actions to help fix this, called "Refresh Elixir SDK Classpaths", available from the Elixir SDK settings page:
## Elixir SDK Note
Note that Homebrew hasn't been including Erlang/Elixir sources, and won't actually work.
Try using mise, kerl, asdf, etc.
EDT fixes
An absolute monumental amount of work has gone into fixing EDT issues in this release.
Installation steps
Download the Elixir-20.0.1.zip file from below, under Assets.
Tip
Please refer to the Install plugin from disk JetBrains documentation for how to install plugins manually.
- Ensure your IDE is 2024.3 or above.
- Open
Settings->Plugins. - Click the cog icon and select
Install Plugin from Disk. - Select where the plugin
.zipwas downloaded and install it. - Ensure the plugin is version 20.0.1.
- Click
OKto close the plugin window and reload the IDE.
v22.0.0-pre+20251212184119
Merge pull request #3731 from joshuataylor/feature/2025-3-open-project Fixes "Open Project" in 2025.3 due to EDT changes
v22.0.0-pre+20251212182751
Merge pull request #3731 from joshuataylor/feature/2025-3-open-project Fixes "Open Project" in 2025.3 due to EDT changes
v21.0.0-pre+20250905123300
Merge pull request #3703 from sh41/canary-release-workflow Add GitHub Action for automatic publish to the Canary channel
v21.0.0-pre+20250803031959
Change the name of the project so that built artifacts match the plug…
v21.0.0
v21.0.0
Supports both 2024.x and 2025.x. IntelliJ Platform version 2025.1 (build 251), the required Kotlin version is 2.0.0 or higher, so this plugin will need a bit of work to support that.
Enhancements
- #3651 - @joshuataylor
- Support Jetbrains 2025.1 and relax until-build.
Warning
As JetBrains has made changes to how plugins should operate on the main thread, a lot of functionalities may sometimes seem not to work, such as adding an SDK. This error is usually Slow operations are prohibited on EDT.
This is being addressed by moving slow code from the Event Dispatch Thread (EDT) to background threads. Threading Model.
Installation steps
Download the Elixir-20.0.1.zip file from below, under Assets.
Tip
Please refer to the Install plugin from disk JetBrains documentation for how to install plugins manually.
- Ensure your IDE is 2024.3 or above.
- Open
Settings->Plugins. - Click the cog icon and select
Install Plugin from Disk. - Select where the plugin
.zipwas downloaded and install it. - Ensure the plugin is version 20.0.1.
- Click
OKto close the plugin window and reload the IDE.
v20.0.1
v20.0.1
Massive thank you to the community for your patience and kindness.
Please see Roadmap for the Project, and new Maintainer for the Plugin #3598 for more information about the roadmap -- we've got lots coming up!
Warning
As JetBrains has made changes to how plugins should operate on the main thread, a lot of functionalities may sometimes seem not to work, such as adding an SDK. This error is usually Slow operations are prohibited on EDT.
This is being addressed by moving slow code from the Event Dispatch Thread (EDT) to background threads. Threading Model.
Important
The plugin has been submitted for approval, and should be available in the coming days. This notice will be removed upon approval.
Installation steps
Download the Elixir-20.0.1.zip file from below, under Assets.
Tip
Please refer to the Install plugin from disk JetBrains documentation for how to install plugins manually.
- Ensure your IDE is 2024.3 or above.
- Open
Settings->Plugins. - Click the cog icon and select
Install Plugin from Disk. - Select where the plugin
.zipwas downloaded and install it. - Ensure the plugin is version 20.0.1.
- Click
OKto close the plugin window and reload the IDE.
Bug Fixes
- #3651 - @joshuataylor
- Support Webstorm 2024.3 (243.21565.180). Thanks to @Kae-Tempest for the report!