Skip to content

✨feat(editors): add JetBrains IDE plugin with LSP4IJ integration - #2168

Merged
harehare merged 8 commits into
mainfrom
feat/jetbrains-plugin
Aug 13, 2026
Merged

✨feat(editors): add JetBrains IDE plugin with LSP4IJ integration #2168
harehare merged 8 commits into
mainfrom
feat/jetbrains-plugin

Conversation

@harehare

@harehare harehare commented Aug 9, 2026

Copy link
Copy Markdown
Owner

Summary

Adds editors/jetbrains, a Gradle-based IntelliJ Platform plugin that mirrors the VS Code extension: mq-lsp language server support via LSP4IJ (completion, hover, diagnostics, formatting), TextMate-based syntax highlighting reusing the VS Code grammar, mq-dbg debugging via LSP4IJ's Debug Adapter Protocol support, run/execute actions, a Settings UI, and a GitHub Releases binary installer.

Type of Change

  • 🐛 Bug fix
  • ✨ New feature
  • ♻️ Refactor
  • 📝 Documentation
  • ⚡ Performance
  • ✅ Test
  • 📦 Build / dependencies
  • 👷 CI

Checklist

  • I ran cargo fmt and cargo clippy and addressed any warnings
  • I ran just test-all and all tests pass
  • I added or updated tests covering this change
  • I updated relevant documentation (/docs, crate README.md) if needed
  • I added a changelog entry if this is a user-facing change

Additional Context

Adds editors/jetbrains, a Gradle-based IntelliJ Platform plugin that
mirrors the VS Code extension: mq-lsp language server support via
LSP4IJ (completion, hover, diagnostics, formatting), TextMate-based
syntax highlighting reusing the VS Code grammar, mq-dbg debugging via
LSP4IJ's Debug Adapter Protocol support, run/execute actions, a
Settings UI, and a GitHub Releases binary installer.
IntelliJ's bundle loader detects the bundle type by looking for a
`package.json`, `info.plist` or `*.tmBundle` file and rejects the bundle
when none is present, so `.mq` files got no syntax highlighting. Ship a
VS Code style `package.json` plus `language-configuration.json` and
extract every bundle resource, skipping registration when extraction
fails.

Also read the plugin version off the plugin classloader's descriptor
instead of `PluginManagerCore.getPlugin(PluginId.getId(...))`: `PluginId`
became a Kotlin class in the 2025.x platform, so the emitted
`PluginId.Companion` reference fails with `NoSuchFieldError` on the older
platforms this plugin still supports.
…rning

.gitignore's bare `gradle` entry silently excluded the whole gradle/
directory, including gradle-wrapper.properties, so gradle-wrapper.jar
was never present in CI and ./gradlew failed with
"Unable to access jarfile". Narrow the ignore to just the jar (still
kept out of git) and track gradle-wrapper.properties instead.

CI now installs Gradle via gradle/actions/setup-gradle and runs
`gradle buildPlugin` directly rather than depending on the
uncommitted wrapper jar.

Also removes unnecessary parentheses in MqDebugAdapterDescriptor.kt
flagged by detekt (UnnecessaryParentheses).
Check in gradle-wrapper.jar so ./gradlew works without a system Gradle
install, bump the wrapper to 9.7.0 (latest), and pin distributionSha256Sum
for integrity verification. CI now builds via ./gradlew instead of a
separately pinned system Gradle version, keeping the version in one place.
Marketplace vendor email isn't required and will be managed via the
vendor profile instead.
@harehare
harehare force-pushed the feat/jetbrains-plugin branch from 4ed2021 to 0aa0eb5 Compare August 11, 2026 13:22
@harehare
harehare marked this pull request as ready for review August 12, 2026 00:44
Replace the gradient pipeline mark with a minimal flat "M" glyph
sized for JetBrains Marketplace (40x40) and add a dedicated
pluginIcon_dark.svg for dark IDE themes.
@harehare
harehare merged commit dc9bb76 into main Aug 13, 2026
13 checks passed
@harehare
harehare deleted the feat/jetbrains-plugin branch August 13, 2026 15:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant