Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/MovingtoMars/liner

A readline-like library in Rust.
https://github.com/MovingtoMars/liner

Last synced: 7 days ago
JSON representation

A readline-like library in Rust.

Awesome Lists containing this project

README

        

# liner
A Rust library offering readline-like functionality.

[CONTRIBUTING.md](/CONTRIBUTING.md)

[![crates.io](https://meritbadge.herokuapp.com/liner)](https://crates.io/crates/liner)
[![Build Status](https://travis-ci.org/MovingtoMars/liner.svg)](https://travis-ci.org/MovingtoMars/liner)
[![Docs](https://docs.rs/liner/badge.svg)](https://docs.rs/liner/)

## 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`:
```toml
[dependencies]
liner = "0.4.3"
...
```

In `src/main.rs`:

```rust
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.