[][src]Module rucline::completion

Provides completion methods for prompt when reading lines.

By default, no completions are performed upon user interaction. However, if a Completer or a Suggester are provided, the prompt will query for completions for the current state of the line.

This module also includes a convenience wrapper for lists, allowing quick implementation of completions.

Examples

Basic implementation for in-line completion:

use rucline::Buffer;
use rucline::completion::Completer;
use std::borrow::Cow;

struct Basic(Vec<String>);
impl Completer for Basic {
  fn complete_for(&self, buffer: &Buffer) -> Option<Cow<'_, str>> {
      if buffer.is_empty() {
          None
      } else {
          self.0
              .iter()
              .find(|completion| completion.starts_with(buffer.as_str()))
              .map(|completion| (&completion[buffer.len()..]).into())
      }
  }
}

Basic implementation for drop-down suggestions:

use rucline::Buffer;
use rucline::completion::Suggester;
use std::borrow::Cow;

struct Basic(Vec<String>);
impl Suggester for Basic {
  fn suggest_for(&self, buffer: &Buffer) -> Vec<Cow<'_, str>> {
      self.0.iter().map(|suggestion| suggestion.into()).collect()
  }
}

Basic implementation for drop-down suggestions with list:

use rucline::completion::Completer;

let completions = vec!["abc", "def", "example word", "weird \"˚∆˙\""];
let completer: &dyn Completer = &completions;

See also

Structs

Buffer

A String that also keeps track of its cursor position.

Traits

Completer

Completes the buffer in-line.

Suggester

Generates a list of possible values for the prompt buffer, usually associated with the Tab key.