Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
edef5fe
Empty commit for feature/2025.2
joshuataylor Aug 30, 2025
e48e984
Support Kotlin 2.2, fix writeAction in SDK, various bumps.. large com…
joshuataylor Sep 5, 2025
cef4f98
Make PackageManager a class to fix warning about being an object
joshuataylor Sep 3, 2025
596d774
Always throw in coroutine
joshuataylor Sep 3, 2025
02a8103
Use default locale
joshuataylor Sep 3, 2025
4b6fe4f
Bump .jetbrains.intellij.platform
joshuataylor Sep 3, 2025
6252600
Start fixing writeAction on blocking
joshuataylor Sep 4, 2025
704f768
Make REG_KEY_ENABLE_LITERAL_SIGIL_INJECTION true by default
joshuataylor Sep 4, 2025
9fbea6c
Rework base version
joshuataylor Sep 5, 2025
20c87d2
writeAction seems to work better, for now.
joshuataylor Sep 6, 2025
c1436ca
Fix deprecated withTitle
joshuataylor Sep 6, 2025
8dccc37
Add "RefreshSdkPathsAction" to refresh the Elixir SDK
joshuataylor Sep 6, 2025
5ae12fc
Line marker tweaks to attempt to fix leafs
joshuataylor Sep 6, 2025
5ff54ff
Use edtWriteAction for Elixir/Erlang SDK
joshuataylor Sep 6, 2025
3ba4509
Support 2025.x testing
joshuataylor Sep 6, 2025
db54fd4
Make stubbuilder debug log
joshuataylor Sep 6, 2025
3e04d01
Reset UsageTypeProvider
joshuataylor Sep 7, 2025
9b3f1cc
Bump IDE versions
joshuataylor Sep 7, 2025
9b8020d
"Add SDK" fixes for both IntelliJ/Small IDEs
joshuataylor Sep 7, 2025
40b1d08
inject
joshuataylor Sep 27, 2025
20e7290
Bump Kotlin to 2.2.20
joshuataylor Sep 28, 2025
05790f8
Support latest 2025.3 changes
joshuataylor Sep 28, 2025
56272da
Allow deleting SDKs in all IDEs
joshuataylor Sep 28, 2025
dc93605
Ensure hasBeenVisited for resolvesToModularName
joshuataylor Sep 28, 2025
1878f2d
2025.3
joshuataylor Sep 30, 2025
19ccc71
sigil debugging
joshuataylor Oct 4, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/actions/setup-jbr/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ runs:
distribution: 'jetbrains'
java-version: 21
cache: 'gradle'
java-package: 'jdk+jcef'
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:

strategy:
matrix:
ideaVersion: [ "2024.3.6" ]
ideaVersion: [ "2024.3.6", "2025.2.1" ]

steps:
- uses: actions/checkout@v5
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,4 @@ jps-shared/build
jps-shared/out
libs/
.intellijPlatform
/.kotlin
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Changelog

## v22.0.0 (Unreleased)
### Enhancements
* [#3712](https://github.com/KronicDeth/intellij-elixir/pull/3712) - [@joshuataylor](https://github.com/joshuataylor)
* Upgrade Kotlin to 2.2.10, as it's deprecated in IntelliJ 2025.1+, various deprecations are also fixed.
* Fixed adding Erlang/Elixir SDKs in 2025.1+ IDEs.

## v21.0.0
### Enhancements
* [#3651](https://github.com/KronicDeth/intellij-elixir/pull/3681) - [@joshuataylor](https://github.com/joshuataylor)
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
6. In "Import Project from Gradle"
1. Check "Use auto-import"
2. Check "Create separate module per source set"
3. Ensure Gradle JVM is **AT LEAST** Java 1.7 / 7. (Java 1.8 / 8 is recommended.)
3. Ensure Gradle JVM is **AT LEAST** Java 21+.
Your import settings should look something like this:<br/>
![Gradle settings](/screenshots/contributing/gradle_settings.png?raw=true "Gradle settings")
4. Click Finish
Expand Down
78 changes: 78 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,11 @@ Table of Contents[![Backers on Open Collective](https://opencollective.com/intel
* [Time](#time)
* [Visibility](#visibility)
* [Call to Element](#call-to-element)
* [Experimental Features](#experimental-features)
* [~H Sigil HTML Injection](#h-sigil-html-injection-support)
* [How to enable ~H sigil HTML Injection](#how-to-enable-h-sigil-html-injection)
* [Providing feedback and reporting issues for the ~H Sigil HTML Injection Experimental Feature](#providing-feedback-and-reporting-issues-for-the-h-sigil-html-injection-experimental-feature))
* [Removing the green background for Injected language fragments](#removing-the-green-background-for-injected-language-fragments)
* [Installation](#installation)
* [Stable releases](#stable-releases)
* [Inside IDE using JetBrains repository](#inside-ide-using-jetbrains-repository)
Expand Down Expand Up @@ -5761,6 +5766,79 @@ The Visibility icons indicated whether the element is usable outside its definin
</tbody>
</table>

## Experimental Features

As we develop new functionality that requires additional testing and feedback, we offer an opt-in system for Experimental Features via the `Elixir Experimental Settings` page.

You can view the currently available Experimental Features by navigating to `Languages & Frameworks` and selecting `Elixir Experimental Settings`, which is marked with the [BETA icon](https://plugins.jetbrains.com/docs/intellij/settings-guide.html#l6vycg_378). Alternatively, you can access it directly via [Settings | Languages & Frameworks | Elixir Experimental Settings](jetbrains://Idea/settings?name=Languages+%26+Frameworks--Elixir+Experimental+Settings).

![Elixir Experimental Settings UI](/screenshots/experimental/elixir-experimental-settings-ui.png)

### ~H Sigil HTML Injection Support

**Experimental Feature – available from version 2024.3+ (243.21565.180) and later**

When working with Phoenix Live View templates within the IntelliJ Elixir plugin, you'll notice that sigils such as `~H` are rendered as strings, which means that out of the box there is no HTML syntax highlighting or autocomplete when working with Phoenix Live View, which is used for writing HEEx templates inside source files. `HEEx` is a HTML-aware and component-friendly extension of Elixir Embedded language, this can make editing templates tedious.

This Experimental Feature introduces preliminary HTML injection support within `~H` sigils, enabling HTML syntax highlighting and autocomplete.

**Before, you would see this rendered as a string:**

![~H shows as a string](/screenshots/experimental/h-sigil-html-before.png?raw=true "Shown as a string")

**After enabling ~H Sigil HTML Injection:**

![~H now shows with HTML injection](/screenshots/experimental/h-sigil-html.png?raw=true "HTML injection for autocomplete and syntax highlighting for the ~H sigil")

> [!TIP]
> The [Phoenix LiveView Documentation on sigil_H](https://hexdocs.pm/phoenix_live_view/1.0.3/Phoenix.Component.html#sigil_H/2) is a fantastic resource for understanding how the `~H` sigil works.

**Note:** Elixir code completion within HTML attributes is not yet supported.

However, it does open the door, thanks to [MultihostInjector](https://plugins.jetbrains.com/docs/intellij/language-injection.html#multihostinjector), we could possibly mix HTML+Elixir, allowing autocomplete of Elixir within HTML.. if anyone is daring enough to wrangle the MultihostInjector API!

#### IntelliLang Plugin Requirement

This functionality has a dependency on the [IntelliLang](https://plugins.jetbrains.com/plugin/13374-intellilang) plugin, which comes bundled with both IntelliJ Community/Ultimate, and other IDEs.

However this is marked as an optional dependency for the plugin, and does not need to be enabled if you are not using the functionality. THe code won't run, and you won't see injections.

More information about [Language Injections](https://www.jetbrains.com/help/idea/using-language-injections.html) is available in the IntelliJ IDEA documentation.

#### How to Enable ~H Sigil HTML Injection

To enable support for HTML syntax highlighting and autocomplete:

1. Open [Settings](https://www.jetbrains.com/help/idea/configure-project-settings.html).
2. Navigate to [Settings | Languages & Frameworks | Elixir Experimental Settings](jetbrains://Idea/settings?name=Languages+%26+Frameworks--Elixir+Experimental+Settings).
3. Enable the **~H Sigil HTML Injection** feature.

![Settings | Languages & Frameworks | Elixir Experimental Settings](/screenshots/experimental/elixir-experimental-settings-ui.png?raw=true "Elixir Experimental Settings UI")

> [!NOTE]
> This Experimental Feature is currently enabled on a **per-project** basis. We are considering adding application-level support or enabling it by default in future versions based on feedback

#### Providing feedback and reporting issues for the ~H Sigil HTML Injection Experimental Feature

Have feedback or encountered issues? Please share your thoughts, Exception Stacktraces on the dedicated [**\[Experimental Feature\] ~H Sigil HTML Injection #3678**](https://github.com/KronicDeth/intellij-elixir/issues/3678).

#### Removing the Green Background for Injected Language Fragments

By default, IntelliLang highlights injected content with a green background, which can be changed by within [Color Scheme settings](https://www.jetbrains.com/help/idea/settings-colors-and-fonts.html).

However, note that this change will apply to **all injected language fragments**, not just `~H` sigils HTML injections.

> We are investigating the use of [InjectionBackgroundSuppressor](https://github.com/JetBrains/intellij-community/blob/idea/243.21565.193/platform/analysis-impl/src/com/intellij/psi/impl/source/tree/injected/InjectionBackgroundSuppressor.java) to selectively disable background highlighting, but this is still a work in progress.

If you're okay with disabling the background for all injections:

1. Open [Settings](https://www.jetbrains.com/help/idea/configure-project-settings.html).
2. Navigate to [Settings | Editor | Color Scheme | General](jetbrains://Idea/settings?name=Editor--Color+Scheme).
3. Under the `Code` section, find `Injected Language Fragment`.
4. Uncheck **Background** or change the colour to your preference.

![How to remove the green background for Injected languge support](/screenshots/experimental/disable-injection-green-background.png?raw=true "Color Settings")

## Installation

### Stable releases
Expand Down
Loading
Loading