1 unstable release
0.1.0 | Sep 8, 2024 |
---|
#554 in Command line utilities
31KB
853 lines
SuperCat 🐱
cat you see!? It's a fancy super cat! 🐱
SuperCat is a syntax highlighting alternative to the traditional cat
command-line utility. It provides colorful and easy-to-read output for various programming languages and file types, powered by tree-sitter and the Helix editor's syntax highlighting engine.
Features
- Syntax highlighting for multiple programming languages using tree-sitter
- Automatic language detection based on file extension or content
- Option to display line numbers
- Customizable color theme
- Support for reading from files or standard input
- Powered by the Helix editor's syntax highlighting engine
Why SuperCat?
SuperCat offers advantages over similar tools:
-
Advanced syntax highlighting: SuperCat uses tree-sitter through the Helix editor's syntax highlighting engine. This provides more accurate and context-aware parsing compared to regex-based highlighters, resulting in better highlighting for complex language constructs. It also benefits from Helix's performance optimizations and support for a wide range of languages.
-
Lightweight: SuperCat is designed to be a lightweight alternative, focusing on fast startup times and efficient memory usage.
-
Customizability(soon): The color theme in SuperCat is easily customizable, allowing users to tailor the output to their preferences.
Installation
You can install SuperCat using Cargo, the Rust package manager:
cargo install supercat
Alternatively, you can build from source:
git clone https://github.com/guilhermeprokisch/supercat.git
cd supercat
cargo build --release
The built binary will be available in target/release/supercat
.
Usage
supercat [OPTIONS] [FILE]
If no file is specified, SuperCat will read from standard input.
Options
-l, --line-numbers
: Show line numbers--language <LANGUAGE>
: Force a specific language for syntax highlighting
Examples
-
Display a file with syntax highlighting:
supercat example.rs
-
Display a file with line numbers:
supercat -l example.py
-
Force a specific language:
supercat --language javascript example.txt
-
Read from standard input:
echo "print('Hello, World!')" | supercat --language python
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- tree-sitter for robust syntax parsing
- Helix
- inkjet for integrating the Helix highlighting engine
Dependencies
~546MB
~16M SLoC