mirror of
https://github.com/soconnor0919/nand2tetris-zed.git
synced 2025-12-15 08:34:44 -05:00
Fix HDL and Hack Assembly syntax highlighting and queries
- Fixed HDL highlights query syntax error with #match? predicate - Replaced #match? with #any-of? for exact string matching - Fixed Hack Assembly outline query invalid field name - Improved HDL syntax highlighting with comprehensive patterns - Added HDL bracket matching for all syntax types - Fixed XML scope mismatch from text.xml to source.xml - Enhanced outline queries for better code navigation
This commit is contained in:
161
CHANGELOG.md
Normal file
161
CHANGELOG.md
Normal file
@@ -0,0 +1,161 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to the Nand2Tetris Zed Extension will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [2.0.0] - 2025-01-26
|
||||
|
||||
### Added
|
||||
- **Complete Hack Assembly Language Support** (.asm files)
|
||||
- Full tree-sitter grammar with syntax highlighting
|
||||
- Support for A-instructions (`@value`, `@symbol`)
|
||||
- Support for C-instructions (`dest=comp;jump`)
|
||||
- Label declarations (`(LABEL)`)
|
||||
- All predefined symbols (`R0-R15`, `SP`, `LCL`, `ARG`, `THIS`, `THAT`, `SCREEN`, `KBD`)
|
||||
- User-defined symbols and variables
|
||||
- Comment highlighting and toggling
|
||||
- Code outline showing labels and sections
|
||||
|
||||
- **VM Language Support** (.vm files)
|
||||
- Complete tree-sitter grammar for VM commands
|
||||
- Stack arithmetic operations (`add`, `sub`, `neg`, `eq`, `gt`, `lt`, `and`, `or`, `not`)
|
||||
- Memory access commands (`push`, `pop`) with all memory segments
|
||||
- Program flow commands (`label`, `goto`, `if-goto`)
|
||||
- Function commands (`function`, `call`, `return`)
|
||||
- Memory segment highlighting (`argument`, `local`, `static`, `constant`, `this`, `that`, `pointer`, `temp`)
|
||||
- Function and label outline navigation
|
||||
|
||||
- **Test Script Language Support** (.tst files)
|
||||
- Tree-sitter grammar for nand2tetris test scripts
|
||||
- Test commands (`load`, `output-file`, `compare-to`, `set`, `eval`, `output`)
|
||||
- Simulation control (`tick`, `tock`, `ticktock`)
|
||||
- Control flow structures (`repeat`, `while`)
|
||||
- Variable references (`RAM[n]`, register names, pin names)
|
||||
- Binary value highlighting (`%B1010101`)
|
||||
- Format specification highlighting
|
||||
- Bracket matching for control blocks
|
||||
|
||||
- **Compare/Output File Support** (.cmp, .out files)
|
||||
- Tree-sitter grammar for tabular test result files
|
||||
- Header row highlighting with column names
|
||||
- Binary and decimal value highlighting
|
||||
- Register and pin reference recognition
|
||||
- Table structure visualization
|
||||
|
||||
- **Custom Tree-sitter Grammars**
|
||||
- Built from scratch for Assembly, VM, Test Script, and Compare/Output languages
|
||||
- Full Rust bindings for all custom grammars
|
||||
- Comprehensive test suites for each grammar
|
||||
- Complete Node.js package configurations
|
||||
|
||||
- **Enhanced Documentation**
|
||||
- Comprehensive README with examples for all languages
|
||||
- Development guide for contributors
|
||||
- Troubleshooting section with common issues
|
||||
- Grammar development guidelines
|
||||
|
||||
### Enhanced
|
||||
- **Extended Language Coverage**
|
||||
- Now supports all major nand2tetris file types
|
||||
- Complete course workflow coverage from hardware to software
|
||||
- Consistent syntax highlighting across all languages
|
||||
|
||||
- **Improved Editor Integration**
|
||||
- Code outline support for all languages
|
||||
- Bracket matching where applicable
|
||||
- Smart indentation rules
|
||||
- Comment toggling support (`Cmd+/` or `Ctrl+/`)
|
||||
|
||||
- **Better Error Handling**
|
||||
- Robust grammar parsing with error recovery
|
||||
- Clear error messages for common issues
|
||||
- Comprehensive troubleshooting documentation
|
||||
|
||||
### Technical
|
||||
- **Grammar Architecture**
|
||||
- Four new custom Tree-sitter grammars
|
||||
- Proper semantic token classification
|
||||
- Efficient parsing with minimal conflicts
|
||||
- Full compatibility with Zed's Tree-sitter integration
|
||||
|
||||
- **Build System**
|
||||
- Complete Rust build configuration for all grammars
|
||||
- Node.js bindings for development tools
|
||||
- Automated testing and validation
|
||||
- Cross-platform compatibility
|
||||
|
||||
## [1.1.0] - Previous Release
|
||||
|
||||
### Added
|
||||
- HDL (Hardware Description Language) support
|
||||
- Jack programming language support
|
||||
- Basic syntax highlighting and bracket matching
|
||||
- Code outline for HDL chips and Jack classes
|
||||
|
||||
### Technical
|
||||
- Integration with external tree-sitter grammars
|
||||
- Basic Zed extension configuration
|
||||
|
||||
## [1.0.0] - Initial Release
|
||||
|
||||
### Added
|
||||
- Initial extension structure
|
||||
- Basic HDL support
|
||||
- Extension manifest and configuration
|
||||
|
||||
---
|
||||
|
||||
## Development Notes
|
||||
|
||||
### Version 2.0.0 Represents a Major Milestone
|
||||
This release transforms the extension from basic HDL/Jack support to comprehensive coverage of the entire nand2tetris ecosystem. The addition of four custom Tree-sitter grammars makes this the most complete nand2tetris editor integration available.
|
||||
|
||||
### Custom Grammar Development
|
||||
The custom grammars were developed specifically for this extension to ensure:
|
||||
- Accurate parsing of nand2tetris language specifications
|
||||
- Optimal performance in the Zed editor
|
||||
- Comprehensive syntax highlighting
|
||||
- Proper semantic token classification
|
||||
- Future extensibility and maintenance
|
||||
|
||||
### Breaking Changes
|
||||
- Extension ID and configuration may have changed
|
||||
- New file type associations require extension reinstallation
|
||||
- Grammar compilation requires Rust toolchain
|
||||
|
||||
### Compatibility
|
||||
- Requires Zed editor with Tree-sitter support
|
||||
- Requires Rust installed via rustup for grammar compilation
|
||||
- Compatible with all nand2tetris course materials
|
||||
- Supports both individual files and complete project structures
|
||||
|
||||
### Performance
|
||||
- All grammars optimized for fast parsing
|
||||
- Minimal memory footprint
|
||||
- Efficient syntax highlighting queries
|
||||
- Responsive editor integration
|
||||
|
||||
## Future Roadmap
|
||||
|
||||
### Potential Future Enhancements
|
||||
- Language server integration for advanced IDE features
|
||||
- Code formatting support
|
||||
- Integration with nand2tetris simulation tools
|
||||
- Snippet support for common patterns
|
||||
- Debugging integration
|
||||
- Project template support
|
||||
|
||||
### Community Contributions
|
||||
We welcome contributions for:
|
||||
- Grammar improvements and bug fixes
|
||||
- Additional language features
|
||||
- Documentation enhancements
|
||||
- Test case additions
|
||||
- Performance optimizations
|
||||
|
||||
---
|
||||
|
||||
For detailed technical information, see [DEVELOPMENT.md](DEVELOPMENT.md).
|
||||
For usage instructions, see [README.md](README.md).
|
||||
Reference in New Issue
Block a user