reedline's development is primarily driven by the nushell project at the moment to provide its interactive REPL.
Our goal is to explore options for a pleasant interaction with a shell and programming language.
While the maintainers might currently prioritize working on features for nushell, we are open to ideas and contributions by people and projects interested in using reedline for other projects.
Feel free to open an issue or chat with us on the nushell discord in the dedicated #reedline channel
If you want to get started, check out the list of issues with the "good first issue" label.
If you want to follow along with the history of how reedline got started, you can watch the recordings of JT`s live-coding streams.
Playlist: Creating a line editor in Rust
This is no different than other Rust projects.
git clone https://github.com/nushell/reedline
cd reedline
# To try our example program
cargo run --example basicWe follow the standard rust formatting style and conventions suggested by clippy.
The commands below reflect what CI runs. Not all flags are always necessary for local development (e.g. feel free to omit
--all-featuresor--all-targetsduring iteration), but running these exact commands before opening a PR ensures you match CI behavior.
Before opening a PR, run these locally:
-
Format:
cargo fmt --all
--allformats all packages in the workspace. -
Lint (Clippy):
cargo clippy --locked --all-targets --all-features
--all-targetschecks lib, bins, tests, examples, and benches.--all-featuresenables all optional features.--lockedensuresCargo.lockis in sync withCargo.toml.Note: CI treats Clippy warnings as errors.
-
Tests:
CI uses cargo-nextest for its test runner. See the installation instructions.
cargo nextest run --all --all-features