The goal of this project is to:
- Follow the kilo-tutorial as closely as possible. The commits will match the chapters / sub-chapters split.
- Rely on the same features as the C implementation. The project will make use of the C POSIX library and the VT100 escape sequences.
- Learn about the language constructs specific to Rust and use them when it simplifies the code (the code should be as idiomatic as possible).
- Focus on the implementation of the editor's feature by using crates that
abstracts the Rust/C bindings (e.g. limit the use of
unsafe
).
The project depends on:
- nix for abstracting and providing a safe interface to the C POSIX library.
- unicode-segmentation
- termios-rs to provide safe bindings the the C termios library.
Ctrl+q
to quitCtrl+s
to save the file- the arrow keys to move the cursor
PgUp
andPgDn
to move the cursor to the top or bottom of the screenHome
to move the cursor at the beginning of the lineEnd
to move the cursor at the end of the line
# Build the application
cargo build
# Start the application
cargo run
# Validate changes before publishing
cargo test && cargo v && cargo fmt
This work is based on the kilo-tutorial which content is licensed under CC BY 4.0.
The original C implementation comes from kilo. Kilo was written by
Salvatore Sanfilippo aka antirez and is released under the BSD 2
clause license. The complete license is available in the kilo.LICENSE
file.
The Rust implementation available in this project is released under the BSD 2 clause license.