You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
SmashEdit can be configured at compile-time by modifying include/smashedit.h:
#defineTAB_WIDTH 2 // Tab width in spaces
#defineMAX_UNDO_LEVELS 100 // Maximum undo history
#defineMAX_SELECTIONS 1024 // Maximum multi-select ranges
#defineMAX_LINE_LENGTH 4096 // Maximum line length
🎨 Color Scheme
Element
Colors
Editor Area
⬜ White on 🟦 Blue
Menu Bar
⬛ Black on 🩵 Cyan
Selected Text
🟨 Yellow on 🟦 Blue
Dialog Boxes
⬜ White on 🟦 Blue
Status Bar
⬛ Black on 🩵 Cyan
🔧 Building from Source
Using Make (Recommended)
# Build the project
make build
# Clean build artifacts
make clean
# Install to ~/.smashedit/
make install
Using CMake Directly
# Configure
cmake -B bin -S . -DCMAKE_BUILD_TYPE=Release
# Build
cmake --build bin
# The binary will be at bin/smashedit
📊 Technical Details
Metric
Value
💻 Language
C (C11 standard)
📐 Lines of Code
~4,000
📦 Dependencies
ncurses only
🧩 Modules
11 components
📏 Buffer Type
Gap Buffer
🏛️ Architecture
Gap Buffer — Efficient text storage for real-time editing
Modular Design — Clean separation of concerns
Signal Handling — Graceful shutdown and terminal resize
Memory Safe — Proper allocation and cleanup
🗺️ Roadmap
🎨 Syntax highlighting
📑 Multiple buffers/tabs
🔌 Plugin system
⚙️ Configuration file support
🖱️ Mouse support
📜 Macro recording
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
🍴 Fork the repository
🌿 Create your feature branch (git checkout -b feature/amazing-feature)
💾 Commit your changes (git commit -m 'Add amazing feature')
📤 Push to the branch (git push origin feature/amazing-feature)
🔀 Open a Pull Request
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
📚 ncurses — The terminal UI library that makes this possible
💡 Inspired by classic terminal editors like nano, vim, and micro