Skip to content

Conversation

@darvld
Copy link
Member

@darvld darvld commented Jun 30, 2025

Draft Powered by Pull Request Badge

Summary

This PR introduces an Intellij IDEA plugin providing support for Elide as an External Build System, which allows users to edit Elide projects in the IDE, build, run, and sync them.

Roadmap (initial plugin release)

The first release will have a basic but complete set of features to enable the use of Elide in simple projects. This includes most of the capabilities expected of an external build tool in Intellij IDEA (project sync, dependency management, building, and running).

This release will be focused on Kotlin and Java, support for other languages (and polyglot features) will be added later.

  • Project auto-import and sync button.
  • Read project structure (modules and content roots) from elide.pkl.
  • Inform Intellij IDEA about dependencies on disk using the lockfile.
  • Run elide install on project sync if the lockfile is not up to date or dependencies are not found on disk.
  • Allow running Elide commands from the IDE (build, run, install).
  • Suggest project entry points and scripts from the manifest in run configuration editor.
  • Add "run with Elide" action to the IDE, similar to the "run Gradle task" action.
  • Add the ability to run entry points with Elide when clicked from the "run" gutter icon.
  • Allow forcing a specific Elide distribution to be used given its path in the settings.
  • Add notification to install Elide if it is not found on PATH and no custom distribution is selected.
  • Prepare to publish to JetBrains Marketplace.
  • Formatting/linter pass.

Postponed:

  • Basic highlighting of elide.pkl.
  • Run gutter icons in project manifest for entry points and scripts.

Additional features (future releases)

In the future, the plugin will be enhanced with quality-of-life features and a better integration with the rest of the languages supported by Elide.

  • Add the ability to run JVM tests with Elide.
  • Add debug capabilities for JVM languages.
  • New project wizard templates for Elide projects (using elide init or otherwise).
  • Improved integration with Pkl plugin for manifest editing.
    • Injection of fully qualified class names and file paths for entry points.
    • Injection of artifact names already declared in the manifest.
    • Gutter icon for running entry points and scripts.
    • Gutter icon for installing dependencies of all or specific ecosystems.
    • Gutter icon for performing individual artifact builds.
  • Research adding support for non-JVM languages in the IDE (parity with JVM features).
  • Research adding support for polyglot projects in the IDE (cross-language features).

@darvld darvld self-assigned this Jun 30, 2025
@darvld darvld added feature Large PRs or issues with full-blown features platform:jvm PRs and issues relating to JVM support. 🚧 WIP Works-in-progress. Blocks merge tools Issues and PRs related to tooling 🧪 labs Experimental work lang:java Issues relating to Java language support lang:pkl Relating to Pkl execution or other Pkl topics lang:kotlin Related to Kotlin lang support labels Jun 30, 2025
@codecov
Copy link

codecov bot commented Jun 30, 2025

Codecov Report

Attention: Patch coverage is 0% with 53 lines in your changes missing coverage. Please review.

Project coverage is 39.87%. Comparing base (20380c1) to head (7773908).

Files with missing lines Patch % Lines
.../src/main/kotlin/elide/tooling/jvm/JvmLibraries.kt 0.00% 53 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #1505      +/-   ##
==========================================
- Coverage   39.99%   39.87%   -0.12%     
==========================================
  Files         767      768       +1     
  Lines       36940    36940              
  Branches     5218     5218              
==========================================
- Hits        14773    14729      -44     
- Misses      20396    20446      +50     
+ Partials     1771     1765       -6     
Flag Coverage Δ
jvm 39.87% <0.00%> (-0.12%) ⬇️
lib 39.87% <0.00%> (-0.12%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...n/kotlin/elide/tooling/jvm/JvmBuildConfigurator.kt 0.00% <ø> (ø)
...lide/tooling/jvm/resolver/MavenLockfileResolver.kt 0.00% <ø> (ø)
.../src/main/kotlin/elide/tooling/jvm/JvmLibraries.kt 0.00% <0.00%> (ø)

Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 20380c1...7773908. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@sgammon sgammon added this to the Release R18: Beta milestone Jun 30, 2025
@darvld darvld force-pushed the feat/intellij-plugin branch from acf37b4 to bbc1ae6 Compare July 5, 2025 01:41
@darvld darvld force-pushed the feat/intellij-plugin branch 2 times, most recently from 436f8e9 to 84f8073 Compare July 18, 2025 19:01
@darvld darvld marked this pull request as ready for review July 18, 2025 19:53
@darvld darvld requested a review from sgammon as a code owner July 18, 2025 19:53
Copy link
Member

@sgammon sgammon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

conditionally approved -- i think #1541 should probably go in first, given that it touches tooling, and structural changes are included here.

@sgammon sgammon requested a review from Copilot July 19, 2025 00:17
@sgammon sgammon added 🛑 blocked PRs and issues that can't proceed because of code and removed 🚧 WIP Works-in-progress. Blocks merge labels Jul 19, 2025
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces an IntelliJ IDEA plugin for Elide, providing comprehensive IDE support for Elide projects as an external build system. The plugin enables project auto-import, dependency management, build/run capabilities, and deep integration with IntelliJ's project model.

  • Implements complete external build system integration with project auto-import and sync
  • Adds support for JVM tooling with built-in library management and classpath resolution
  • Provides run configurations and CLI integration for executing Elide commands from the IDE

Reviewed Changes

Copilot reviewed 59 out of 91 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
settings.gradle.kts Adds conditional build configuration for IDE plugins module
packages/tooling/src/main/kotlin/elide/tooling/jvm/JvmLibraries.kt Extracts JVM library management utilities from builder package for reuse
packages/plugin-idea/ Complete IntelliJ plugin implementation with 40+ source files
packages/cli/src/projects/ktjvm/src/main/kotlin/sample/main.kt Minor sample code formatting fix
packages/core/build.gradle.kts Updates JVM target configuration

@darvld
Copy link
Member Author

darvld commented Jul 19, 2025

conditionally approved -- i think #1541 should probably go in first, given that it touches tooling, and structural changes are included here.

I'll wait for #1541 and rebase, there's probably conflicts but I have an idea about where they will be and how to fix

@sgammon sgammon removed the 🛑 blocked PRs and issues that can't proceed because of code label Jul 19, 2025
darvld added 7 commits July 18, 2025 22:32
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
darvld added 18 commits July 18, 2025 22:32
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
Signed-off-by: Dario Valdespino <dvaldespino00@gmail.com>
@darvld darvld force-pushed the feat/intellij-plugin branch from 389fc01 to 7773908 Compare July 19, 2025 02:32
@darvld darvld merged commit 30d8f7c into main Jul 19, 2025
17 checks passed
@elidebot elidebot mentioned this pull request Jul 19, 2025
29 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature Large PRs or issues with full-blown features 🧪 labs Experimental work lang:java Issues relating to Java language support lang:kotlin Related to Kotlin lang support lang:pkl Relating to Pkl execution or other Pkl topics platform:jvm PRs and issues relating to JVM support. tools Issues and PRs related to tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants