Odo
A versatile text editor with first-class Org support, designed for code, prose, and any content. Odo combines the power of modal editing with excellent support for Org-mode, making it perfect for both programming and writing tasks.
Features
Currently Implemented
- Command and Insert modes with Vi-like keybindings
- Basic file operations (open, save)
- Simple search functionality
- GUI mode (experimental, run with
--gui
flag)
Partially Implemented
- Basic Org-mode syntax highlighting:
- Headlines detection for different levels (*, **, ***, etc.)
- TODO/DONE keyword detection
- Tag highlighting (both in headlines and standalone tag lines)
- Basic list item detection
- Text styling indicators (* for bold, / for italic, _ for underline)
- Basic link detection
Planned for Future Releases
- Full Org-mode functionality:
- Enhanced syntax highlighting
- Code blocks with syntax highlighting
- Checklists
- Folding/unfolding of sections
- Multi-language syntax highlighting for code files
- Agenda views and task management
- Export capabilities (HTML, Markdown)
- Tags filtering and management
- Tables with spreadsheet-like calculations
- Advanced text editing features for prose writing
Usage
Terminal Mode (Default)
cargo run [filename]
GUI Mode (Experimental)
cargo run -- --gui [filename]
Key Commands
Command Mode (default):
i
- Enter insert modea
- Enter insert mode after cursorA
- Enter insert mode at end of lineI
- Enter insert mode at beginning of lineo
- Open new line below and enter insert modeO
- Open new line above and enter insert modex
- Delete character under cursor- Arrow keys - Move cursor
Home
/End
- Move to start/end of linePageUp
/PageDown
- Move up/down by one screenCtrl-f
- Search textCtrl-s
- Save fileCtrl-o
- Open fileCtrl-q
- Quit (press multiple times if file has unsaved changes)
Insert Mode:
Esc
- Return to command mode- Type to insert text
Backspace
- Delete character before cursorDelete
- Delete character under cursor- Arrow keys - Move cursor
Ctrl-s
- Save fileCtrl-o
- Open fileCtrl-q
- Quit (press multiple times if file has unsaved changes)
Development
This project follows the GitFlow workflow:
main
- Production codedevelop
- Development branch where features are integratedfeature/xxx
- Feature branches for new functionalityhotfix/xxx
- Hotfix branches for urgent production fixesrelease/x.x.x
- Release branches for preparing new versions
Current Development Focus
The current development focus is on:
- Completing the modular architecture
- Improving the terminal UI experience
- Developing the experimental GUI mode
- Implementing Org-mode-aware Vim motions and text objects
See the ROADMAP.md file for more details on planned features.
Build Instructions
cargo build --release
Org-mode Functionality
Odo aims to implement the core functionality of Emacs Org-mode in a standalone application with a modal editing interface inspired by Vim.
Current Progress
-
Document Structure
- Basic detection of headlines with different levels
- Simple syntax highlighting for key Org elements
-
Formatting
- Basic highlighting for text formatting indicators (bold, italic, underline)
- Rudimentary detection of links
-
Task Management
- Simple highlighting for TODO/DONE keywords
- Basic detection of lists and tags (visual highlighting only)
Planned for Future Releases
-
Document Structure
- Folding/unfolding of sections
- Properties drawers for metadata
- Better handling of hierarchical structure
-
Task Management
- Priority markers
- Deadlines and scheduled dates
- Enhanced TODO state workflows
- Functional tags system
-
Content Features
- Tables with spreadsheet-like calculations
- Code blocks with syntax highlighting for various languages
- Functional links to files, websites, or within the document
- Interactive checklists
-
Advanced Features
- Agenda views to see scheduled tasks and deadlines
- Export functionality to convert Org files to other formats
- Calendar integration
- Time tracking
Why Odo?
Odo is a versatile text editor that excels at:
- Efficient modal editing inspired by Vim's philosophy
- First-class Org-mode support for organization and note-taking
- Lightweight, fast performance for any type of content
- Cross-platform compatibility with modern systems
- Intuitive experience without complex configuration
- Flexibility with both terminal and graphical interfaces
- Seamless editing of code, prose, documentation, and structured content
Requirements
- Rust (Minimum supported version: 1.70.0)
- GNU/Linux or other free operating system
- Standard system libraries
Note: Odo is developed exclusively for free operating systems. It is not officially tested or supported on proprietary platforms.
License
MIT