liner icon indicating copy to clipboard operation
liner copied to clipboard

A readline-like library in Rust.

liner

A Rust library offering readline-like functionality.

CONTRIBUTING.md

crates.io Build Status Docs

Featues

  • [x] Autosuggestions
  • [x] Emacs and Vi keybindings
  • [x] Multi-line editing
  • [x] History
  • [x] (Incomplete) basic and filename completions
  • [ ] Reverse search
  • [ ] Remappable keybindings

Basic Usage

In Cargo.toml:

[dependencies]
liner = "0.4.3"
...

In src/main.rs:

extern crate liner;

use liner::Context;

fn main() {
    let mut con = Context::new();

    loop {
        let res = con.read_line("[prompt]$ ", &mut |_| {}).unwrap();

        if res.is_empty() {
            break;
        }

        con.history.push(res.into());
    }
}

See src/main.rs for a more sophisticated example.

License

MIT licensed. See the LICENSE file.