# orinfar

a text editor for witches

# Building
To build this project, first install [Cargo](https://doc.rust-lang.org/cargo/getting-started/installation.html), the Rust package manager, then clone this repo and `cargo run` in the project directory.

The editor is inspired by Vi, but has a few key differences, so you should read the [user manual](https://github.com/azaleacolburn/orinfar/tree/main/docs/MANUAL.md) before using it in a meaningful manner.

# Principles

## Minimal

- A TUI text editor
- Simple but powerful and opinionated
- Not configurable
- Similar to base Vi, but with better defaults (lsp support, etc)
- Similar in princible to [Helix](https://helix-editor.com/), but more minimal

## Reliable

- Ideally, all software should work exactly as documented and intented
    - No implementation quirks
    - No undocumented but "obvious" or "intuitive" behavior
- Not much else to say at the moment

# User Manual
Please read the [user manual](https://github.com/azaleacolburn/orinfar/tree/main/docs/MANUAL.md) before trying to edit text with Orinfar. While this text editor is mostly a subset of Vi, there are plenty of differences, both subtle and obvious.

# Implementation
Eventually I'll get around to writing developer facing documentation.

# Roadmap

I'll specify and revise this list when I get around to specific things and I have a better understanding of where I want to take this project

- [x] Basic Vi Commands and Features (see the [user manual](https://github.com/azaleacolburn/orinfar/tree/main/docs/MANUAL.md))
- [ ] Additional Vi Features
    - [x] Undo System (not comprehensively documented)
    - [ ] Redo System
    - [x] Status Bar (not comprehensively documented)
    - [x] Minimal Register System (not yet documented)
    - [ ] Robust Register System (a poorly defined goal, at the moment)
    - [ ] Mark System
    - [x] Multiple View Boxes
    - [x] Text Objects
- [ ] Advanced Features
    - [x] C Syntax Highlighting (tree-sitter)
    - [ ] Markdown Syntax Highlighting
    - [ ] Rust Syntax Highlighting
    - [ ] LSP Client Support
- [ ] Important Chores
    - [ ] Test Suite 
    - [ ] Benchmarking Suite

# Feature/Bug Requests

If I haven't implemented your favorite Vi feature, or you've found some undesirable bug or behavior, feel free to reach out to me at `azaleacolburn[AT]gmail[DOT]com`. Please do note, however, that many discrepencies between orinfar and Vi are intentional.


# Known Bugs
Please check the [stable](https://github.com/azaleacolburn/orinfar/tree/stable)  for the latest bug-free commit
