44 lines
2.2 KiB
Markdown
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.
|