How asedunov/intellij-crystal-lang works
This repository is an IntelliJ plugin for Crystal language support. The main user workflow is editing Crystal source: IntelliJ supplies file/editor events, language tooling parses source into PSI, and IDE features act on that PSI for navigation, feedback, and code assistance. The tree also documents run configurations, formatting, project setup, and Shards YAML support. Source excerpts are limited, so several capability nodes are grounded in the tree but their internal links are left unverified rather than inferred.
Main entry points: CrFile.kt Crystal PSI · CrModuleLikeSym.kt Symbol Resolution · CrystalParser.kt Crystal Parser · CrystalStructureViewElement.kt Structure View
Components 22
Language Front End
- Crystal Lexer
src/main/kotlin/org/crystal/intellij/lang/lexer/CrystalLexer.kt - Crystal Parser
src/main/kotlin/org/crystal/intellij/lang/parser/CrystalParser.kt - Lazy PSI Builder
src/main/java/org/crystal/intellij/parser/builder/LazyPsiBuilder.java - Crystal PSI
src/main/kotlin/org/crystal/intellij/lang/psi/CrFile.kt - File Fragments
src/main/kotlin/org/crystal/intellij/lang/psi/CrFileFragment.kt - PSI Stubs
src/main/kotlin/org/crystal/intellij/lang/stubs/api/CrFileFragmentStub.kt
Resolution and Feedback
- Symbol Resolution
src/main/kotlin/org/crystal/intellij/lang/resolve/symbols/CrModuleLikeSym.kt - Resolve Cache
src/main/kotlin/org/crystal/intellij/lang/resolve/cache/CrResolveCache.kt - Module Scopes
src/main/kotlin/org/crystal/intellij/lang/resolve/scopes/CrModuleLikeScope.kt - Syntax and Resolve Feedback
src/main/kotlin/org/crystal/intellij/ide/highlighter/CrystalSyntaxCheckingPass.kt
Editor Assistance
- Code Completion
src/main/kotlin/org/crystal/intellij/ide/completion/CrKeywordCompletionContributor.kt - Editor Handlers
src/main/kotlin/org/crystal/intellij/ide/editor/CrystalTypedHandler.kt - Code Formatting
src/main/kotlin/org/crystal/intellij/ide/formatter/CrystalFormattingModelBuilder.kt
IDE Workflows
- Structure View
src/main/kotlin/org/crystal/intellij/ide/structure/CrystalStructureViewElement.kt - Navigation and Search
src/main/kotlin/org/crystal/intellij/ide/navigation/CrystalChooseByNameContributor.kt - Rename Refactoring
src/main/kotlin/org/crystal/intellij/ide/refactoring/rename/CrystalRenameHandler.kt
Project Integrations
- Run Configurations
src/main/kotlin/org/crystal/intellij/ide/run/CrystalFileRunState.kt - Project Setup
src/main/kotlin/org/crystal/intellij/ide/config/project/CrystalDirectoryProjectGenerator.kt - Shards YAML Support
src/main/kotlin/org/crystal/intellij/ide/shards/yaml/model/ShardYamlSchema.kt
Other components
- Crystal Developer
- IntelliJ Platform
- Crystal Tool
Connections 27
- Crystal Developer → IntelliJ Platform: uses IDE
- IntelliJ Platform → Crystal Lexer: opens source
- Crystal Lexer → Crystal Parser: supplies tokens
src/main/kotlin/org/crystal/intellij/lang/parser/CrystalParser.kt - Crystal Parser → Lazy PSI Builder: builds with
src/main/kotlin/org/crystal/intellij/lang/parser/CrystalParser.kt - Crystal Parser → Crystal PSI: creates PSI
- Crystal PSI → File Fragments: exposes fragments
src/main/kotlin/org/crystal/intellij/lang/psi/CrFile.kt - File Fragments → PSI Stubs: uses stub API
src/main/kotlin/org/crystal/intellij/lang/psi/CrFileFragment.kt - Crystal PSI → Symbol Resolution: provides symbols
- Symbol Resolution → Resolve Cache: caches resolution
src/main/kotlin/org/crystal/intellij/lang/resolve/symbols/CrModuleLikeSym.kt - Symbol Resolution → Module Scopes: builds scopes
src/main/kotlin/org/crystal/intellij/lang/resolve/symbols/CrModuleLikeSym.kt - Crystal PSI → Syntax and Resolve Feedback: analyzes source
- IntelliJ Platform → Editor Handlers: dispatches typing
src/main/kotlin/org/crystal/intellij/ide/editor/CrystalTypedHandler.kt - Editor Handlers → Crystal PSI: queries PSI
src/main/kotlin/org/crystal/intellij/ide/editor/CrystalTypedHandler.kt - IntelliJ Platform → Code Completion: requests completion
- Code Completion → Symbol Resolution: resolves candidates
- IntelliJ Platform → Code Formatting: requests formatting
- Code Formatting → Crystal Tool: formats externally
- IntelliJ Platform → Structure View: opens structure view
- Structure View → Crystal PSI: traverses PSI
src/main/kotlin/org/crystal/intellij/ide/structure/CrystalStructureViewElement.kt - Structure View → Navigation and Search: presents definitions
- IntelliJ Platform → Navigation and Search: requests navigation
- IntelliJ Platform → Rename Refactoring: invokes rename
- Rename Refactoring → Crystal PSI: renames symbols
- IntelliJ Platform → Run Configurations: starts configuration
- Run Configurations → Crystal Tool: runs Crystal
- IntelliJ Platform → Project Setup: creates project
- IntelliJ Platform → Shards YAML Support: inspects manifest