Skip to content
Snippets Groups Projects
user avatar
Katsu Kawakami authored
Fix calculated width of prompt with ansi formatting
2c7fdac1

RustyLine

Build Status

Readline implementation in Rust that is based on Antirez' Linenoise

Documentation

Build

This project uses Cargo and Rust Nightly

cargo build --release

Example

extern crate rustyline;

use rustyline::error::ReadlineError;
use rustyline::Editor;

fn main() {
    let mut rl = Editor::new();
    if let Err(_) = rl.load_history("history.txt") {
        println!("No previous history.");
    }
    loop {
        let readline = rl.readline(">> ");
        match readline {
            Ok(line) => {
                rl.add_history_entry(&line);
                println!("Line: {}", line);
            },
            Err(ReadlineError::Interrupted) => {
                println!("CTRL-C");
                break
            },
            Err(ReadlineError::Eof) => {
                println!("CTRL-D");
                break
            },
            Err(err) => {
                println!("Error: {:?}", err);
                break
            }
        }
    }
    rl.save_history("history.txt").unwrap();
}

crates.io

You can use this package in your project by adding the following to your Cargo.toml:

[dependencies]
rustyline = "0.2.0"

Features

ToDo

  • Kill ring (Killing Commands)
  • Word commands
  • Multi line mode
  • expose an API callable from C