Skip to content

Commit 976e774

Browse files
committed
Merge branch 'develop'
2 parents f9fa7e2 + 272adc7 commit 976e774

File tree

86 files changed

+372
-415
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

86 files changed

+372
-415
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44

55
## [Unreleased]
66

7+
## [5.2.0] - 2025-10-21
8+
* Major code review and clean-up (@ahankinson)
9+
* Fixes a plugin crash when using the expose function (@ahankinson)
10+
* Restored the [dedicated documentation site](https://elm-tooling.github.io/intellij-elm/) (@ahankinson)
711

812
## [5.1.0] - 2025-08-05
913
* Moved the plugin to [elm-tooling/intellij](https://github.com/elm-tooling/intellij-elm) (@lydell)

docs/_config.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,4 @@
1-
theme: jekyll-theme-minimal
1+
title: Elm Language Plugin for JetBrains IDEs
2+
description: Provides support for the [Elm programming language](https://elm-lang.org). This plugin is developed by the [Elm Tooling community](https://github.com/elm-tooling/intellij-elm/).
3+
logo: /assets/pluginIcon.svg
4+
theme: jekyll-theme-minimal

docs/assets/pluginIcon.svg

Lines changed: 41 additions & 0 deletions
Loading

docs/contributing.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ There is a dropdown box labeled "Run tests using" and change it from "Gradle" to
5555
The only time when you would want to have Gradle run the tests is if you change the parser or lexer definition, in which case we would need Gradle to re-build the parser and lexer prior to running the tests.
5656

5757
To run the tests the `elm`, `elm-format` and `elm-review` commands need to be on your `$PATH`.
58-
Lamdera also needs to be installed, but I managed to simply link `elm` to `lamdera`, like with:
58+
Lamdera also needs to be installed, but you can simply link `elm` to `lamdera`, e.g.,:
5959

6060
```bash
6161
sudo ln -s /usr/local/bin/elm /usr/local/bin/lamdera
@@ -71,4 +71,6 @@ https://docs.github.com/en/get-started/exploring-projects-on-github/contributing
7171

7272
## Questions
7373

74-
Have a question? Try reaching out to us on [Elm Slack](https://elmlang.herokuapp.com/) or create a GitHub issue.
74+
Have a question? Try reaching out to us on the [Incremental Elm Discord](https://incrementalelm.com/chat) (Specifically, the `#intellij-elm` channel): https://discord.com/channels/534524278847045633/727577900525682699.
75+
76+
You can also open a [Discussion topic](https://github.com/elm-tooling/intellij-elm/discussions) on GitHub.

docs/features/live-error-checking.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ This feature operates in the background as you type, and it results in increased
1111

1212
This feature is enabled by default.
1313

14-
The syntax error checker cannot be disabled, but you can turn off the type checker and and unresolved reference checker. Disable them by going to **IntelliJ Settings -> Editor -> Inspections -> Elm** and un-checking each inspection that you want to disable.
14+
The syntax error checker cannot be disabled, but you can turn off the type checker and unresolved reference checker. Disable them by going to **IntelliJ Settings -> Editor -> Inspections -> Elm** and un-checking each inspection that you want to disable.
1515

1616
## Demo
1717

18-
![type checking](../assets/type_checking.gif)
18+
![type checking](../assets/type_checking.gif)

docs/index.md

Lines changed: 61 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,62 @@
1-
# Moved
1+
This plugin provides support for the [Elm programming language](https://elm-lang.org). This plugin is developed
2+
by the [Elm Tooling community](https://github.com/elm-tooling/intellij-elm/).
3+
4+
## Using the plugin
5+
6+
Once the plugin is installed it is advised to double-check all CLI tools are found by going to `Settings` -> `Languages & Frameworks` -> `Elm` and see the CLI tools.
7+
8+
After installing the plugin, restart the IDE and then [open your existing Elm project](existing-project.md) or [create a new project](new-project.md).
9+
10+
## Install
11+
12+
You may want to have some CLI tools --`elm` (the Elm compiler), [`elm-test`](features/elm-test.md), [`elm-format`](features/elm-format.md),
13+
[`elm-review`](features/elm-review.md) and [`lamdera`](features/lamdera.md)-- installed for certain features of this plugin to work.
14+
15+
You can install these globally with:
16+
17+
```bash
18+
sudo npm install -g elm elm-test elm-format elm-review lamdera
19+
```
20+
21+
**NOTE**: if you have [node](https://nodejs.org) installed using [nvm](https://github.com/nvm-sh/nvm), make sure to read [our NVM setup guide](nvm.md).
22+
23+
To install the plugin itself first make sure to uninstall all other Elm plugins you may have installed (this requires a restart of the IDE).
24+
Some have reported that having two Elm plugins installed results in the IDE not starting but showing a seemingly unrelated error
25+
(if you have this problem, there are [ways to fix it](https://intellij-support.jetbrains.com/hc/en-us/community/posts/360000524244-Disable-Uninstall-plugin-without-launching-Idea)).
26+
27+
From within a JetBrains IDE, go to `Settings` -> `Plugins` -> `Marketplace` and search for "Elm Language". If you get multiple hits look
28+
for the most recently updated version, since there are still older versions of the plugin available. Alternatively you can install it
29+
manually by downloading a [release](https://github.com/elm-tooling/intellij-elm/releases) (or downloading the source and building it yourself) and installing it with
30+
`Settings` -> `Plugins` -> `⚙️ (gear icon)` -> `Install plugin from disk...`
31+
32+
## Features
33+
34+
* [Live error checking](features/live-error-checking.md)
35+
* [Generate JSON encoder and decoder functions](features/generate-function-json.md)
36+
* [Rename refactoring](features/rename-refactoring.md)
37+
* [Lamdera support](features/lamdera.md)
38+
* [Support for `elm-review`](features/elm-review.md)
39+
* [Type inference and type checking](features/type-inference.md)
40+
* [Find usages](features/find-usages.md)
41+
* [Run tests](features/elm-test.md) (elm-test)
42+
* [Reformat code using `elm-format`](features/elm-format.md) (elm-format)
43+
* [Cleanup unused imports](features/unused-imports.md)
44+
* [Detect unused code](features/unused-code.md)
45+
* ['Add Import' quick fix for unresolved references](features/add-imports.md)
46+
* [Quick Docs](features/quick-docs.md)
47+
* [Structure view and quick navigation](features/structure-view.md)
48+
* [WebGL/GLSL support](features/webgl.md)
49+
* [Code folding](features/code-folding.md)
50+
* [Manage exposing lists](features/exposure.md)
51+
52+
Want to see it in action? This [10 minute video](https://www.youtube.com/watch?v=CC2TdNuZztI) demonstrates many of the features and how they work together.
53+
54+
## Contributing
55+
56+
Yes, please! See [our guide](/docs/contributing.md) on this topic.
57+
58+
## Development and Building
59+
60+
61+
262

3-
This webpage has been replaced by the [intellij-elm project README](https://github.com/klazuka/intellij-elm).

gradle.properties

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@
44
pluginGroup = io.github.elm-tooling
55
pluginName = Elm Language
66
# SemVer format -> https://semver.org
7-
pluginVersion = 5.1.0
7+
pluginVersion = 5.2.0
88

99
# We also set since and until build manually in `plugin.xml`. Keep them in sync!
1010
# See: https://intellij-support.jetbrains.com/hc/en-us/community/posts/360010590059-Why-pluginUntilBuild-is-mandatory
1111
pluginSinceBuild = 242
1212
# We do not set until build, as we want it to be compatible with new versions. See `plugin.xml`.
13-
pluginUntilBuild = 252.*
13+
# pluginUntilBuild = 252.*
14+
pluginUntilBuild =
1415

1516
# IntelliJ Platform Properties -> https://github.com/JetBrains/gradle-intellij-plugin#intellij-platform-properties
1617
# 2022.3 and newer require JDK17

src/main/kotlin/org/elm/ide/actions/ElmExternalFormatAction.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ import org.elm.workspace.elmWorkspace
2020

2121
class ElmExternalFormatAction : AnAction() {
2222

23+
override fun getActionUpdateThread(): ActionUpdateThread {
24+
return ActionUpdateThread.BGT
25+
}
26+
2327
override fun update(e: AnActionEvent) {
2428
super.update(e)
2529
e.presentation.isEnabled = getContext(e) != null

src/main/kotlin/org/elm/ide/actions/ElmExternalReviewAction.kt

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,29 @@ package org.elm.ide.actions
22

33
import com.intellij.execution.ExecutionException
44
import com.intellij.notification.NotificationType
5+
import com.intellij.openapi.actionSystem.ActionUpdateThread
56
import com.intellij.openapi.actionSystem.AnAction
67
import com.intellij.openapi.actionSystem.AnActionEvent
78
import com.intellij.openapi.actionSystem.CommonDataKeys
89
import com.intellij.openapi.actionSystem.PlatformDataKeys
9-
import com.intellij.openapi.diagnostic.logger
1010
import com.intellij.openapi.fileEditor.FileEditorManager
1111
import com.intellij.openapi.project.Project
1212
import com.intellij.openapi.vfs.VfsUtil
1313
import com.intellij.openapi.vfs.VirtualFile
1414
import org.elm.ide.notifications.showBalloon
1515
import org.elm.lang.core.ElmFileType
1616
import org.elm.openapiext.saveAllDocuments
17-
import org.elm.workspace.*
1817
import org.elm.workspace.commandLineTools.makeProject
1918
import org.elm.workspace.compiler.findEntrypoints
20-
21-
private val log = logger<ElmExternalReviewAction>()
19+
import org.elm.workspace.elmToolchain
20+
import org.elm.workspace.elmWorkspace
2221

2322
class ElmExternalReviewAction : AnAction() {
2423

24+
override fun getActionUpdateThread(): ActionUpdateThread {
25+
return ActionUpdateThread.BGT
26+
}
27+
2528
override fun update(e: AnActionEvent) {
2629
super.update(e)
2730
e.presentation.isEnabled = e.project != null
@@ -77,7 +80,7 @@ class ElmExternalReviewAction : AnAction() {
7780
if (compiledSuccessfully) {
7881
elmReviewCLI.runReview(project, elmProject, project.elmToolchain.elmCLI, currentFileInEditor)
7982
}
80-
} catch (e: ExecutionException) {
83+
} catch (_: ExecutionException) {
8184
return showError(
8285
project,
8386
"Failed to 'make' or 'review'. Are the path settings correct ?",

src/main/kotlin/org/elm/ide/actions/ElmExternalReviewWatchmodeAction.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ package org.elm.ide.actions
22

33
import com.intellij.execution.ExecutionException
44
import com.intellij.notification.NotificationType
5+
import com.intellij.openapi.actionSystem.ActionUpdateThread
56
import com.intellij.openapi.actionSystem.AnAction
67
import com.intellij.openapi.actionSystem.AnActionEvent
78
import com.intellij.openapi.actionSystem.CommonDataKeys
89
import com.intellij.openapi.actionSystem.PlatformDataKeys
9-
import com.intellij.openapi.diagnostic.logger
1010
import com.intellij.openapi.fileEditor.FileEditorManager
1111
import com.intellij.openapi.project.Project
1212
import com.intellij.openapi.vfs.VfsUtil
@@ -19,10 +19,12 @@ import org.elm.workspace.compiler.findEntrypoints
1919
import org.elm.workspace.elmToolchain
2020
import org.elm.workspace.elmWorkspace
2121

22-
private val log = logger<ElmExternalReviewAction>()
23-
2422
class ElmExternalReviewWatchmodeAction : AnAction() {
2523

24+
override fun getActionUpdateThread(): ActionUpdateThread {
25+
return ActionUpdateThread.BGT
26+
}
27+
2628
override fun update(e: AnActionEvent) {
2729
super.update(e)
2830
e.presentation.isEnabled = e.project != null
@@ -78,7 +80,7 @@ class ElmExternalReviewWatchmodeAction : AnAction() {
7880
if (compiledSuccessfully) {
7981
elmReviewCLI.watchReview(project, elmProject, project.elmToolchain.elmCLI)
8082
}
81-
} catch (e: ExecutionException) {
83+
} catch (_: ExecutionException) {
8284
return showError(
8385
project,
8486
"Failed to 'make' or 'review'. Are the path settings correct ?",

0 commit comments

Comments
 (0)