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

44 lines
2.2 KiB
Markdown

<!-- Keep a Changelog guide -> https://keepachangelog.com -->
# Jai Plugin Changelog
## [Unreleased]
### Added
- `.jai` file type, icon, and language registration
- Hand-written Jai lexer covering the full token set of the compiler's own lexer,
including nesting block comments and here-strings
- Syntax highlighting and a colour settings page
- Comment/uncomment support and brace matching, including `.{` and `.[`
- Grammar-Kit parser and PSI for the whole language: declarations, procedures,
structs, enums, unions, control flow including the `if x == { case }` switch
form, and compiler directives. The full 714-file Jai distribution parses with
no syntax errors; `JaiCorpusParserTest` is ratcheted at 100%.
- Structure view with source-ordered declarations and nested procedure/aggregate
members.
- Folding for blocks, nested comments, and multi-line here-strings.
- Go-to-definition references for `#import` and `#load`, including project-relative
files and the local Jai module layout (`Name.jai` or `Name/module.jai`).
- Completion for Jai keywords, compiler directives, module/file paths, visible
same-file or imported declarations, procedure parameters, and members of
imported module aliases.
- Project-level Jai module/import root settings with ordered custom roots.
- Go-to-definition for procedure and type symbols in the same file and through
loaded, imported, or configured external Jai files.
- Indexed external Jai roots so find-usages can cross project/library boundaries.
- Rename and find-usages support for declaration names and resolved references.
- PSI-aware formatter with operator and punctuation spacing, block indentation,
directive-flag handling, and preservation of opaque `#asm` bodies; formatting
is idempotent across all 714 corpus files.
- Inspection warnings for unresolved `#import` and `#load` module/file paths.
### Known gaps
- `#asm` bodies are parsed as opaque blocks, so their assembly instructions do
not have inner PSI.
- `#asm` bodies remain intentionally opaque; assembly instructions do not have
inner PSI or structure entries.
- Struct fields and other type-qualified members do not yet have symbol
resolution or completion.