Awsum language support for IntelliJ IDEA
May 25, 2026 · View on GitHub
IntelliJ Platform plugin for the Awsum programming language (.aww files). A thin LSP client to the awsum lsp server bundled with the Awsum compiler — every diagnostic, code action, format edit, document symbol, and workspace symbol is computed inside the awsum compiler binary and pushed over LSP.
Works in IntelliJ IDEA (free tier) and every Ultimate-tier JetBrains IDE (Rider, CLion, WebStorm, PyCharm Pro, GoLand, …). The native LSP API has been open to all users since IDEA 2025.2, and Community / Ultimate were merged into one product in 2025.3.
Features
- Syntax highlighting — TextMate grammar shared with
awsum-vscode. - Format on save / reformat code —
textDocument/formatting, same algorithm asawsum format. - Inline diagnostics —
textDocument/publishDiagnostics, pushed on open / save / change (debounced 500 ms server-side).errorvswarningseverity honoured by the IDEA Problems panel. - Quick fixes (intention actions) —
textDocument/codeAction. Compiler-supplied fixes only; the plugin does no language-aware reasoning. - Document outline (Structure view, breadcrumbs) —
textDocument/documentSymbol. - Workspace symbol search (
Cmd+O/Ctrl+Shift+N) —workspace/symbol. The server walks every.awwunder the workspace folders received atinitialize.
Install
- Install the Awsum compiler (see awsum-lang/awsum) and ensure
awsumis on yourPATH. - Install the plugin from the JetBrains Marketplace (search "Awsum"), or sideload a locally-built
.zip: Settings → Plugins → ⚙ →Install Plugin from Disk…→ pickbuild/distributions/awsum-intellij-A.B.C.zip.
If awsum is not on your PATH, IntelliJ inherits PATH from the shell that launched it. Either launch IDEA from a terminal where awsum resolves, or use Toolbox / Spotlight with a PATH configured via your shell's startup files. There is no extension-level setting for the binary path today.
Actions
| Action | Default keybinding | What it does |
|---|---|---|
Restart Awsum LSP server | — | Stops the awsum lsp process and starts a new one with the same settings. Useful after a local stack install of a new awsum build, or to clear any in-memory state on the server. |
Invoke via Help → Find Action… (Cmd+Shift+A / Ctrl+Shift+A) and type the action name. Bind it to a keybinding via Settings → Keymap if you use it often.
Versioning
awsum-intellij A.B.C is built and tested against awsum A.B.C. Mismatched versions are not supported — at startup the LSP server compares the plugin's expected version against its own and shows a non-blocking notification on mismatch, with an action button that opens the install page.
The lockstep policy is shared across all three IDE plugins (awsum-vscode, awsum-zed, awsum-intellij) — see CHANGELOG.md for the reasoning.
Development
./gradlew buildPlugin # build/distributions/awsum-intellij-A.B.C.zip
./gradlew runIde # launch sandbox IDEA with the plugin loaded
./gradlew verifyPlugin # IntelliJ Plugin Verifier
JDK 21 is required; settings.gradle.kts declares foojay-resolver-convention so Gradle auto-downloads Adoptium Temurin 21 if no local JDK 21 is available.
Structure
src/main/kotlin/dev/awsumlang/intellij/
AwsumLspServerSupportProvider.kt # extension point; spawns descriptor on .aww open
AwsumLspServerDescriptor.kt # `awsum lsp --stdio`, version handshake, format-via-server override
AwsumTextMateBundleProvider.kt # exposes the bundled TextMate grammar to IDEA
src/main/resources/
META-INF/plugin.xml # plugin manifest (id, vendor, extension registrations)
textmate/awsum/ # VSCode-style TextMate bundle (package.json + grammar + language-configuration)
Architecture
- Single source of truth.
awsum-intellijdoes no language-aware processing. All semantics live inawsum/src/Awsum/Lsp.hs(the LSP server) and the modules it reuses (Awsum.Diagnostic,Awsum.Symbols,Awsum.Format,Awsum.ElaborateLower, …). - No custom providers. Everything routes through the IntelliJ Platform's native LSP API (
com.intellij.platform.lsp.api.LspServerSupportProvider,ProjectWideLspServerDescriptor,LspCustomization). Anything you'd want to add for IDEA is best added on the LSP server side first — that wayawsum-vscode,awsum-zed, and any other LSP client benefit too.
Related
- Compiler: awsum-lang/awsum
- VSCode extension: awsum-lang/awsum-vscode
- Zed extension: awsum-lang/awsum-zed
- Examples: awsum-lang/awsum-examples
- Website: awsum-lang.org
AI use
This IntelliJ Platform plugin is developed with substantial usage of generative AI. Every generated change is reviewed, edited, and accepted by a human before it lands in the repository, and no output is shipped unedited.