Skip to content

Releases: KronicDeth/intellij-elixir

v23.0.1

10 Feb 05:38
042b07c

Choose a tag to compare

v23.0.1 Pre-release
Pre-release
Merge pull request #3789 from joshuataylor/bump-gradle

Bump version to 23.0.1

v23.0.0

09 Feb 04:41
ffc1ed0

Choose a tag to compare

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:

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_HOME detection 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.md with 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.

  1. Ensure your IDE ...
Read more

v22.0.1

01 Feb 14:23
59ef6f5

Choose a tag to compare

v22.0.1 Pre-release
Pre-release
Merge pull request #3767 from joshuataylor/feature/intellij-2026_1

Add support for 2026.1 EAP, 2025.3.2 version bumps

v22.0.0

16 Dec 03:33
7698bdd

Choose a tag to compare

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

  1. 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.
  2. 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

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

h-sigil-html-before

After

h-sigil-html

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:

  1. Create an Erlang SDK.
  2. Do not save.
  3. Add an Elixir SDK that depends on the Erlang SDK.
img

The classpaths are not correctly set up:

img_1

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

img_4

Better SDK management

#3711

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:

img_2 ## 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.

  1. Ensure your IDE is 2024.3 or above.
  2. Open Settings -> Plugins.
  3. Click the cog icon and select Install Plugin from Disk.
  4. Select where the plugin .zip was downloaded and install it.
  5. Ensure the plugin is version 20.0.1.
  6. Click OK to close the plugin window and reload the IDE.

v22.0.0-pre+20251212184119

12 Dec 18:44
921ac47

Choose a tag to compare

Pre-release
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

12 Dec 18:31
921ac47

Choose a tag to compare

Pre-release
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

05 Sep 12:35
f9dd2bb

Choose a tag to compare

Pre-release
Merge pull request #3703 from sh41/canary-release-workflow

Add GitHub Action for automatic publish to the Canary channel

v21.0.0-pre+20250803031959

03 Aug 03:23
9e4e5bf

Choose a tag to compare

Pre-release
Change the name of the project so that built artifacts match the plug…

v21.0.0

17 May 06:23
5890bcc

Choose a tag to compare

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

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.

  1. Ensure your IDE is 2024.3 or above.
  2. Open Settings -> Plugins.
  3. Click the cog icon and select Install Plugin from Disk.
  4. Select where the plugin .zip was downloaded and install it.
  5. Ensure the plugin is version 20.0.1.
  6. Click OK to close the plugin window and reload the IDE.

v20.0.1

29 Nov 20:44
4cc4e0c

Choose a tag to compare

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.

  1. Ensure your IDE is 2024.3 or above.
  2. Open Settings -> Plugins.
  3. Click the cog icon and select Install Plugin from Disk.
  4. Select where the plugin .zip was downloaded and install it.
  5. Ensure the plugin is version 20.0.1.
  6. Click OK to close the plugin window and reload the IDE.

Bug Fixes