Files
intellijai/README.md
2026-08-06 16:18:34 -04:00

79 lines
3.3 KiB
Markdown

# Jai plugin for IntelliJ IDEA
Support for the [Jai](https://jai.community) programming language.
Everything here is derived from the local Jai distribution at `~/.local/jai`,
never from online material (see `AGENTS.md`).
## What works today
- `.jai` file type with its own icon
- Syntax highlighting: keywords, built-in type names, compiler directives
(`#import`, `#run`, …), notes (`@Cleanup`), numbers (hex / binary / hexfloat /
`_` separators), strings, here-strings (`#string DONE … DONE`), nesting block
comments, operators, `---`, `$`/`$$`, `it` / `it_index`
- Grammar-Kit parser and PSI for the full local 714-file corpus
- Structure view and folding for blocks, comments, and here-strings
- Colour settings page (**Settings → Editor → Color Scheme → Jai**)
- Comment / uncomment (`//` and nesting `/* */`)
- Brace matching, including the Jai-only `.{` struct-literal and `.[`
array-literal openers
- Completion for keywords, directives, Jai module/file paths, visible
same-file or imported declarations, procedure parameters, and members of
imported module aliases
- Project settings for ordered Jai module/import roots
- Go-to-definition for procedures and types in the same file and through
`#import`/`#load`, including configured external roots
- Indexed external Jai roots so find-usages can cross project/library boundaries
- Rename and find-usages for declaration names and their resolved references
- PSI-aware formatting for operator and punctuation spacing, block indentation,
directive flags, and opaque `#asm` bodies; formatting is idempotent across the
full local corpus
- Inspection warnings for unresolved `#import` and `#load` module/file paths
Remaining code-insight gaps include completion and symbol resolution for struct
fields and other type-qualified members. Additional inspections and compiler
integration are planned later.
See `docs/BUILD_PLAN.md` for the phase plan.
## Install it locally
```bash
./jaigradle buildPlugin
# -> build/distributions/intellijai-1.0.0-SNAPSHOT.zip
```
In the IDE: **Settings → Plugins → ⚙ → Install Plugin from Disk…**, pick that
ZIP, restart when prompted. Requires build 253 (2025.3) or newer; verified
compatible with IU-253, IU-261 and IU-262 by the JetBrains Plugin Verifier.
To try it, open any file from `~/.local/jai/how_to/`. Configure additional
module/import directories under **Settings → Languages & Frameworks → Jai**;
configured roots are searched in order and indexed as Jai library sources.
Uninstall or update the same way — installing a new ZIP over the old one
replaces it.
## Develop
```bash
./jaigradle test # or ./jaitest, which reports the JUnit XML
./jaigradle check # full verification
```
Never call `./gradlew` directly: there is no JDK on `PATH`, and `./jaigradle`
resolves one via mise first. Read `AGENTS.md` before changing anything.
Key docs:
| File | What it is |
| --- | --- |
| `AGENTS.md` | how to work in this repo; current state |
| `docs/JAI_LANGUAGE_REFERENCE.md` | the language, transcribed from the compiler |
| `docs/BUILD_PLAN.md` | phased plan and testing strategy |
Local IntelliJ references are available in `~/programming/thirdparty`:
- `fortran-plugin` — a simple language plugin to use as reference.
- `intellij-elixir` — a more complex plugin to use as reference.
- `intellij-sdk-docs` — local versions of the IntelliJ SDK documentation.